diff --git a/.github/actions/with-docker/action.yml b/.github/actions/with-docker/action.yml deleted file mode 100644 index 245239eab7..0000000000 --- a/.github/actions/with-docker/action.yml +++ /dev/null @@ -1,83 +0,0 @@ -name: 'With Docker' -description: 'Run a given stage with Docker Image' -inputs: - container-name: - description: 'Docker container name to use' - type: string - required: true - tag-name: - description: 'Docker image tag to use' - type: string - required: false - default: runtimeverificationinc/kevm - subdir: - description: 'Subdirectory where code is cloned.' - required: false - type: string - default: './' - os: - description: 'OS to setup Docker for.' - required: false - type: string - default: 'ubuntu' - distro: - description: 'Distribution to setup Docker for.' - required: false - type: string - default: 'jammy' - llvm: - description: 'LLVM version to use.' - required: false - type: number - default: 14 - dockerfile: - description: 'Hardcode the path of the dockerfile to use.' - required: false - type: string - default: '.github/workflows/Dockerfile' -runs: - using: 'composite' - steps: - - name: 'Set up Docker' - shell: bash {0} - run: | - set -euxo pipefail - - CONTAINER_NAME=${{ inputs.container-name }} - SUBDIR=${{ inputs.subdir }} - BASE_OS=${{ inputs.os }} - BASE_DISTRO=${{ inputs.distro }} - DOCKERFILE=${{ inputs.dockerfile }} - LLVM_VERSION=${{ inputs.llvm }} - TAG_NAME=${{ inputs.tag-name }} - - USER=github-user - GROUP=${USER} - Z3_VERSION=$(cat deps/z3) - K_VERSION=$(cat deps/k_release) - USER_ID=1000 - GROUP_ID=${USER_ID} - - docker build . --file ${DOCKERFILE} \ - --tag ${TAG_NAME} \ - --build-arg USER_ID=${USER_ID} \ - --build-arg GROUP_ID=${GROUP_ID} \ - --build-arg USER=${USER} \ - --build-arg GROUP=${GROUP} \ - --build-arg BASE_DISTRO=${BASE_DISTRO} \ - --build-arg K_VERSION=${K_VERSION} \ - --build-arg Z3_VERSION=${Z3_VERSION} \ - --build-arg LLVM_VERSION=${LLVM_VERSION} - - docker run \ - --name ${CONTAINER_NAME} \ - --rm \ - --interactive \ - --tty \ - --detach \ - --user root \ - --workdir /home/${USER}/workspace \ - ${TAG_NAME} - - docker cp . ${CONTAINER_NAME}:/home/${USER}/workspace - docker exec ${CONTAINER_NAME} chown -R ${USER}:${GROUP} /home/${USER} diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile deleted file mode 100644 index 2efbfd3494..0000000000 --- a/.github/workflows/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -ARG Z3_VERSION -ARG K_VERSION -ARG BASE_DISTRO -ARG LLVM_VERSION - -ARG Z3_VERSION -FROM runtimeverificationinc/z3:ubuntu-jammy-${Z3_VERSION} as Z3 - -ARG K_VERSION -FROM runtimeverificationinc/kframework-k:ubuntu-jammy-${K_VERSION} - -COPY --from=Z3 /usr/bin/z3 /usr/bin/z3 - -ARG LLVM_VERSION - -RUN apt-get update \ - && apt-get upgrade --yes \ - && apt-get install --yes \ - clang-${LLVM_VERSION} \ - cmake \ - curl \ - debhelper \ - libboost-test-dev \ - libcrypto++-dev \ - libprocps-dev \ - libsecp256k1-dev \ - libssl-dev \ - libyaml-dev \ - llvm-${LLVM_VERSION}-dev \ - llvm-${LLVM_VERSION}-tools \ - maven \ - python3 \ - python3-pip - -ARG USER=user -ARG GROUP -ARG USER_ID -ARG GROUP_ID -RUN groupadd -g ${GROUP_ID} ${GROUP} && useradd -m -u ${USER_ID} -s /bin/sh -g ${GROUP} ${USER} - -USER ${USER}:${GROUP} -RUN mkdir /home/${USER}/workspace -WORKDIR /home/${USER}/workspace - -ENV PATH=/home/${USER}/.local/bin:${PATH} - -RUN curl -sSL https://install.python-poetry.org | python3 - --version 1.6.1 \ - && poetry --version diff --git a/.github/workflows/master-push.yml b/.github/workflows/master-push.yml deleted file mode 100644 index ab4c0ffcf3..0000000000 --- a/.github/workflows/master-push.yml +++ /dev/null @@ -1,130 +0,0 @@ -name: 'Master Push' -on: - push: - branches: - - 'master' -concurrency: - group: ${{ github.workflow }} - cancel-in-progress: true - -jobs: - - nix-cache: - name: 'Populate Nix Cache' - strategy: - matrix: - include: - - runner: normal - - runner: macos-13 - - runner: ARM64 - runs-on: ${{ matrix.runner }} - steps: - - name: 'Check out code' - uses: actions/checkout@v3 - with: - ref: ${{ github.event.push.head.sha }} - fetch-depth: 0 - - name: 'Upgrade bash' - if: ${{ contains(matrix.os, 'macos') }} - run: brew install bash - - name: 'Install Nix' - if: ${{ matrix.runner == 'macos-13' }} - uses: cachix/install-nix-action@v19 - with: - install_url: https://releases.nixos.org/nix/nix-2.13.3/install - extra_nix_config: | - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - name: 'Install Cachix' - if: ${{ matrix.runner == 'macos-13' }} - uses: cachix/cachix-action@v12 - with: - name: k-framework - signingKey: ${{ secrets.CACHIX_SIGNING_KEY }} - skipPush: true - - name: 'Build and cache KEVM' - uses: workflow/nix-shell-action@v3.0.3 - env: - GC_DONT_GC: 1 - CACHIX_AUTH_TOKEN: '${{ secrets.CACHIX_PUBLIC_TOKEN }}' - with: - packages: jq - script: | - kevm=$(nix build --extra-experimental-features 'nix-command flakes' .#kevm --json | jq -r '.[].outputs | to_entries[].value') - drv=$(nix-store --query --deriver ${kevm}) - nix-store --query --requisites --include-outputs ${drv} | cachix push k-framework - - make-release: - name: 'Cut Release' - runs-on: ubuntu-latest - needs: nix-cache - steps: - - name: 'Check out code' - uses: actions/checkout@v3 - with: - ref: ${{ github.event.push.head.sha }} - fetch-depth: 0 - - name: 'Make release' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - set -x - VERSION=v$(cat package/version) - gh release create ${VERSION} --target ${{ github.sha }} - - name: 'Update dependents' - run: | - set -x - VERSION=$(cat package/version) - curl --fail \ - -X POST \ - -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer ${{ secrets.JENKINS_GITHUB_PAT }}" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - https://api.github.com/repos/runtimeverification/devops/dispatches \ - -d '{"event_type":"on-demand-test","client_payload":{"repo":"runtimeverification/evm-semantics","version":"'${VERSION}'"}}' - - gh-pages: - name: 'Publish GH Pages' - runs-on: ubuntu-latest - needs: make-release - steps: - - name: 'Check out gh-pages' - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: true - ref: ${{ github.event.push.head.sha }} - - run: | - git config --global user.email 'devops@runtimeverification.com' - git config --global user.name 'RV DevOps' - - name: 'Publish gh-pages' - run: | - git checkout -B gh-pages - cd web - npm install - npm run build - npm run build-sitemap - cd - - mv web/public_content ./ - rm -rf $(find . -maxdepth 1 -not -name public_content -a -not -name .git -a -not -name .gitmodules -a -not -path . -a -not -path .. -a -not -name CNAME) - mv public_content/* ./ - rm -rf public_content - git add ./ - git commit -m 'gh-pages: Updated the website' - git merge --strategy ours origin/gh-pages --allow-unrelated-histories - git push origin gh-pages - - name: 'Post failure to channel' - if: failure() - uses: slackapi/slack-github-action@v1.24.0 - with: - channel-id: "#kevm-notifications" - slack-message: "Failed to create KEVM release: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" - env: - SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} - - name: 'Post success to channel' - if: success() - uses: slackapi/slack-github-action@v1.24.0 - with: - channel-id: "#kevm-notifications" - slack-message: "Created KEVM release: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" - env: - SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} diff --git a/.github/workflows/test-pr.yml b/.github/workflows/test-pr.yml deleted file mode 100644 index 1691b9fc7e..0000000000 --- a/.github/workflows/test-pr.yml +++ /dev/null @@ -1,185 +0,0 @@ -name: 'Test PR' -on: - pull_request: - branches: - - 'master' -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - - version-bump: - name: 'Version Bump' - runs-on: ubuntu-latest - steps: - - name: 'Check out code' - uses: actions/checkout@v3 - with: - token: ${{ secrets.JENKINS_GITHUB_PAT }} - # fetch-depth 0 means deep clone the repo - fetch-depth: 0 - ref: ${{ github.event.pull_request.head.sha }} - - name: 'Configure GitHub user' - run: | - git config user.name devops - git config user.email devops@runtimeverification.com - - name: 'Update version' - run: | - og_version=$(git show origin/${GITHUB_BASE_REF}:package/version) - ./package/version.sh bump ${og_version} - ./package/version.sh sub - new_version=$(cat package/version) - sed --in-place "s/^VERSION: Final = '.*'$/VERSION: Final = '${new_version}'/" kevm-pyk/src/kevm_pyk/__init__.py - git add --update && git commit --message "Set Version: ${new_version}" || true - - name: 'Push updates' - run: git push origin HEAD:${GITHUB_HEAD_REF} - - kevm-pyk-code-quality-checks: - name: 'Code Quality Checks' - runs-on: ubuntu-latest - steps: - - name: 'Check out code' - uses: actions/checkout@v3 - with: - submodules: recursive - - name: 'Install Poetry' - uses: Gr1N/setup-poetry@v8 - - name: 'Run code quality checks' - run: make -C kevm-pyk check - - name: 'Run pyupgrade' - run: make -C kevm-pyk pyupgrade - - kevm-pyk-unit-tests: - needs: kevm-pyk-code-quality-checks - name: 'Unit Tests' - runs-on: ubuntu-latest - steps: - - name: 'Check out code' - uses: actions/checkout@v3 - with: - submodules: recursive - - name: 'Install Poetry' - uses: Gr1N/setup-poetry@v8 - - name: 'Run unit tests' - run: make -C kevm-pyk cov-unit - - kevm-pyk-profile: - needs: kevm-pyk-code-quality-checks - name: 'Profiling' - runs-on: ubuntu-latest - steps: - - name: 'Check out code' - uses: actions/checkout@v3 - with: - submodules: recursive - - name: 'Install Poetry' - uses: Gr1N/setup-poetry@v8 - - name: 'Run profiling' - run: | - make -C kevm-pyk profile - - test-concrete-execution: - name: 'Build and Test KEVM concrete execution' - needs: kevm-pyk-code-quality-checks - runs-on: [self-hosted, linux, normal] - timeout-minutes: 45 - steps: - - name: 'Check out code' - uses: actions/checkout@v3 - with: - submodules: recursive - - name: 'Set up Docker' - uses: ./.github/actions/with-docker - with: - container-name: kevm-ci-concrete-${{ github.sha }} - - name: 'Build kevm-pyk' - run: docker exec -u github-user kevm-ci-concrete-${{ github.sha }} /bin/bash -c 'make poetry' - - name: 'Build targets' - run: docker exec -u github-user kevm-ci-concrete-${{ github.sha }} /bin/bash -c 'CXX=clang++-14 poetry -C kevm-pyk run kdist --verbose build -j`nproc` evm-semantics.haskell evm-semantics.kllvm evm-semantics.kllvm-runtime' - - name: 'Test integration' - run: docker exec -u github-user kevm-ci-concrete-${{ github.sha }} /bin/bash -c 'make test-integration' - - name: 'Test conformance' - run: docker exec -u github-user kevm-ci-concrete-${{ github.sha }} /bin/bash -c 'make test-conformance' - - name: 'Test llvm krun' - run: docker exec -u github-user kevm-ci-concrete-${{ github.sha }} /bin/bash -c 'make test-interactive' - - name: 'Tear down Docker' - if: always() - run: | - docker stop --time=0 kevm-ci-concrete-${{ github.sha }} - - test-prove: - name: 'Build and Test KEVM proofs' - needs: kevm-pyk-code-quality-checks - runs-on: [self-hosted, linux, fast] - strategy: - fail-fast: false - matrix: - include: - - test-suite: 'test-prove-kprove' - test-args: - timeout: 45 - - test-suite: 'test-prove-pyk' - test-args: - timeout: 180 - - test-suite: 'test-prove-pyk' - test-args: '--use-booster' - timeout: 150 - timeout-minutes: ${{ matrix.timeout }} - steps: - - name: 'Check out code' - uses: actions/checkout@v3 - with: - submodules: recursive - - name: 'Set up Docker' - uses: ./.github/actions/with-docker - with: - container-name: kevm-ci-haskell-${{ matrix.test-suite }}-${{ github.sha }} - - name: 'Build kevm-pyk' - run: docker exec -u github-user kevm-ci-haskell-${{ matrix.test-suite }}-${{ github.sha }} /bin/bash -c 'make poetry' - - name: 'Build distribution' - run: docker exec -u github-user kevm-ci-haskell-${{ matrix.test-suite }}-${{ github.sha }} /bin/bash -c 'CXX=clang++-14 poetry -C kevm-pyk run kdist --verbose build -j`nproc` evm-semantics.plugin evm-semantics.haskell' - - name: 'Prove Haskell' - run: docker exec -u github-user kevm-ci-haskell-${{ matrix.test-suite }}-${{ github.sha }} /bin/bash -c "make ${{ matrix.test-suite }} PYTEST_ARGS='-vv ${{ matrix.test-args }}' PYTEST_PARALLEL=4" - - name: 'Tear down Docker' - if: always() - run: | - docker stop --time=0 kevm-ci-haskell-${{ matrix.test-suite }}-${{ github.sha }} - - nix: - name: 'Nix' - strategy: - fail-fast: false - matrix: - include: - - runner: normal - - runner: macos-13 - - runner: ARM64 - needs: kevm-pyk-code-quality-checks - runs-on: ${{ matrix.runner }} - timeout-minutes: 60 - steps: - - name: 'Check out code' - uses: actions/checkout@v3 - with: - # Check out pull request HEAD instead of merge commit. - ref: ${{ github.event.pull_request.head.sha }} - - name: 'Install Nix' - if: ${{ matrix.runner == 'macos-13' }} - uses: cachix/install-nix-action@v25 - with: - install_url: https://releases.nixos.org/nix/nix-2.19.3/install - extra_nix_config: | - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - substituters = http://cache.nixos.org https://cache.iog.io - trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= - - name: 'Install Cachix' - if: ${{ matrix.runner == 'macos-13' }} - uses: cachix/cachix-action@v14 - with: - name: k-framework - authToken: ${{ secrets.CACHIX_PUBLIC_TOKEN }} - - name: 'Build KEVM' - run: GC_DONT_GC=1 nix build --extra-experimental-features 'nix-command flakes' --print-build-logs - - name: 'Test KEVM' - run: GC_DONT_GC=1 nix build --extra-experimental-features 'nix-command flakes' --print-build-logs .#kevm-test diff --git a/.github/workflows/update-version.yml b/.github/workflows/update-version.yml deleted file mode 100644 index 60953ab228..0000000000 --- a/.github/workflows/update-version.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: 'Update Version' -on: - push: - branches: - - '_update-deps/runtimeverification/blockchain-k-plugin' - - '_update-deps/runtimeverification/k' - workflow_dispatch: -# Stop in progress workflows on the same branch and same workflow to use latest committed code -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - - update-versions: - name: 'Update Dependency Versions' - runs-on: ubuntu-latest - steps: - - name: 'Check out code' - uses: actions/checkout@v3 - with: - submodules: recursive - token: ${{ secrets.JENKINS_GITHUB_PAT }} - fetch-depth: 0 - - name: 'Configure GitHub user' - run: | - git config user.name devops - git config user.email devops@runtimeverification.com - - name: 'Install Poetry' - uses: Gr1N/setup-poetry@v8 - - name: 'Update pyk release tag' - run: | - K_VERSION=v$(cat deps/k_release) - sed -i 's!pyk = { git = "https://github.com/runtimeverification/k.git", tag="[v0-9\.]*", subdirectory = "pyk" }!pyk = { git = "https://github.com/runtimeverification/k.git", tag="'${K_VERSION}'", subdirectory = "pyk" }!' kevm-pyk/pyproject.toml - poetry -C kevm-pyk update - git add kevm-pyk/ && git commit -m "kevm-pyk/: sync poetry files pyk version ${K_VERSION}" || true - - name: 'Update plugin release file' - run: | - BKP_VERSION=$(git -C kevm-pyk/src/kevm_pyk/kproj/plugin rev-parse HEAD) - echo ${BKP_VERSION} > deps/blockchain-k-plugin_release - git add deps/blockchain-k-plugin_release && git commit -m "deps/blockchain-k-plugin_release: sync release file version ${BKP_VERSION}" || true - - name: 'Install Nix/Cachix' - uses: cachix/install-nix-action@v19 - with: - install_url: https://releases.nixos.org/nix/nix-2.13.3/install - extra_nix_config: | - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - uses: cachix/cachix-action@v12 - with: - name: k-framework - authToken: ${{ secrets.CACHIX_PUBLIC_TOKEN }} - - name: 'Update nix flake inputs' - run: | - K_VERSION=v$(cat deps/k_release) - BKP_VERSION=$(cat deps/blockchain-k-plugin_release) - sed -i 's! k-framework.url = "github:runtimeverification/k/[v0-9\.]*"! k-framework.url = "github:runtimeverification/k/'"${K_VERSION}"'"!' flake.nix - sed -i 's! blockchain-k-plugin.url = "github:runtimeverification/blockchain-k-plugin/[0-9a-f]*"! blockchain-k-plugin.url = "github:runtimeverification/blockchain-k-plugin/'"${BKP_VERSION}"'"!' flake.nix - sed -i 's! pyk.url = "github:runtimeverification/k/[v0-9\.]*?dir=pyk"! pyk.url = "github:runtimeverification/k/'"${K_VERSION}"'?dir=pyk"!' flake.nix - nix run .#update-from-submodules - nix flake update - git add flake.nix flake.lock && git commit -m 'flake.{nix,lock}: update Nix derivations' || true - - name: 'Push updates' - run: git push diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6eeaac70bb..0000000000 --- a/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -/.build/* -.envrc -.kompile* -.kprove* -.krun* -/media/*.pdf -/optimizer/*.json -/optimizer/*.k -/package/pkg -/package/src -/pkg -/tests/**/*.debug-log -/tests/**/*.rule-profile -/tests/specs/foundry/*.out -/tests/specs/**/haskell -/tests/specs/**/java -/tests/specs/opcodes/evm-optimizations-spec.md -/tests/specs/**/*.prove.out -/tests/specs/**/*.sol.json -/tests/vm/*.out diff --git a/INSTALL.md b/INSTALL.md deleted file mode 100644 index bc4f73a896..0000000000 --- a/INSTALL.md +++ /dev/null @@ -1,25 +0,0 @@ -KEVM: Semantics of EVM in K -=========================== - -In this repository we provide a model of the EVM in K. - -Fast Installation ------------------ - -- `bash <(curl https://kframework.org/install)`: install [the `kup` utility](https://github.com/runtimeverification/kup) -- `kup install kevm`: install KEVM. -- `kup list kevm`: list available KEVM versions. -- `kup update kevm`: update to latest KEVM version. - -Documentation/Support ---------------------- - -These may be useful for learning KEVM and K (newest to oldest): - -- [Jello Paper], a nice presentation of this repository. -- [20 minute tour of the semantics](https://www.youtube.com/watch?v=tIq_xECoicQNov) at [2017 Devcon3]. -- [KEVM 1.0 technical report](http://hdl.handle.net/2142/97207), especially sections 3 and 5. -- [KEVM Paper at CSF'18/FLoC](https://fsl.cs.illinois.edu/publications/hildenbrandt-saxena-zhu-rodrigues-daian-guth-moore-zhang-park-rosu-2018-csf). - -To get support for KEVM, please join our [Discord Channel](https://discord.gg/EZtNj7gt). - diff --git a/INSTALL/index.html b/INSTALL/index.html new file mode 100644 index 0000000000..484e9190a0 --- /dev/null +++ b/INSTALL/index.html @@ -0,0 +1,223 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

KEVM: Semantics of EVM in K

+

In this repository we provide a model of the EVM in K.

+

Fast Installation

+
    +
  • bash <(curl https://kframework.org/install): install the kup utility
  • +
  • kup install kevm: install KEVM.
  • +
  • kup list kevm: list available KEVM versions.
  • +
  • kup update kevm: update to latest KEVM version.
  • +
+

Documentation/Support

+

These may be useful for learning KEVM and K (newest to oldest):

+ +

To get support for KEVM, please join our Discord Channel.

+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 2671ba32cb..0000000000 --- a/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2016-2022, Runtime Verification Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Makefile b/Makefile deleted file mode 100644 index 49931cb836..0000000000 --- a/Makefile +++ /dev/null @@ -1,180 +0,0 @@ -all: poetry - - -# Building -# -------- - -PYTHON_BIN := python3.10 -KEVM_PYK_DIR := ./kevm-pyk -POETRY := poetry -C $(KEVM_PYK_DIR) -POETRY_RUN := $(POETRY) run -- - - -.PHONY: poetry-env -poetry-env: - $(POETRY) env use $(PYTHON_BIN) - -poetry: poetry-env - $(POETRY) install - -shell: poetry - $(POETRY) shell - -kevm-pyk: poetry-env - $(MAKE) -C $(KEVM_PYK_DIR) - - -# Tests -# ----- - -test: test-integration test-conformance test-prove test-prove-pyk test-prove-kprove test-interactive - - -# Conformance Tests - -test-conformance: poetry - $(MAKE) -C kevm-pyk/ test-integration PYTEST_ARGS+="-k test_conformance.py" - -test-vm: poetry - $(MAKE) -C kevm-pyk/ test-integration PYTEST_ARGS+="-k test_vm" - -test-rest-vm: poetry - $(MAKE) -C kevm-pyk/ test-integration PYTEST_ARGS+="-k test_rest_vm" - -test-bchain: poetry - $(MAKE) -C kevm-pyk/ test-integration PYTEST_ARGS+="-k test_bchain" - -test-rest-bchain: poetry - $(MAKE) -C kevm-pyk/ test-integration PYTEST_ARGS+="-k test_rest_bchain" - - -# Proof Tests - -test-prove: test-prove-pyk test-prove-kprove - -test-prove-pyk: tests/specs/opcodes/evm-optimizations-spec.md poetry - $(MAKE) -C kevm-pyk/ test-integration PYTEST_ARGS+="-k test_pyk_prove" - -test-prove-kprove: tests/specs/opcodes/evm-optimizations-spec.md poetry - $(MAKE) -C kevm-pyk/ test-integration PYTEST_ARGS+="-k test_kprove_prove" - -# to generate optimizations.md, run: ./optimizer/optimize.sh &> output -tests/specs/opcodes/evm-optimizations-spec.md: kevm-pyk/src/kevm_pyk/kproj/evm-semantics/optimizations.md - cat kevm-pyk/src/kevm_pyk/kproj/evm-semantics/optimizations.md | sed 's/^ rule/ claim/' | sed 's/EVM-OPTIMIZATIONS/EVM-OPTIMIZATIONS-SPEC/' | grep -v 'priority(40)' > $@ - - -# Integration Tests - -test-integration: poetry - $(MAKE) -C kevm-pyk/ test-integration PYTEST_ARGS+='-k "(test_kast.py or test_run.py or test_solc_to_k.py)"' - -profile: poetry - $(MAKE) -C kevm-pyk/ profile - find /tmp/pytest-of-$$(whoami)/pytest-current/ -type f -name '*.prof' | sort | xargs tail -n +1 - - -# Smoke Tests - -TEST_SYMBOLIC_BACKEND := haskell - -KPROVE_MODULE = VERIFICATION -KPROVE_FILE = verification -KPROVE_EXT = k - -KEVM_OPTS ?= -KPROVE_OPTS ?= - - -tests/specs/examples/%-bin-runtime.k: KEVM_OPTS += --verbose - -tests/specs/examples/erc20-spec/haskell/timestamp: tests/specs/examples/erc20-bin-runtime.k -tests/specs/examples/erc20-bin-runtime.k: tests/specs/examples/ERC20.sol $(KEVM_LIB)/$(haskell_kompiled) poetry - $(KEVM) solc-to-k $< ERC20 $(KEVM_OPTS) --verbose --definition $(KEVM_LIB)/$(haskell_dir) --main-module ERC20-VERIFICATION > $@ - -tests/specs/examples/erc721-spec/haskell/timestamp: tests/specs/examples/erc721-bin-runtime.k -tests/specs/examples/erc721-bin-runtime.k: tests/specs/examples/ERC721.sol $(KEVM_LIB)/$(haskell_kompiled) poetry - $(KEVM) solc-to-k $< ERC721 $(KEVM_OPTS) --verbose --definition $(KEVM_LIB)/$(haskell_dir) --main-module ERC721-VERIFICATION > $@ - -tests/specs/examples/storage-spec/haskell/timestamp: tests/specs/examples/storage-bin-runtime.k -tests/specs/examples/storage-bin-runtime.k: tests/specs/examples/Storage.sol $(KEVM_LIB)/$(haskell_kompiled) poetry - $(KEVM) solc-to-k $< Storage $(KEVM_OPTS) --verbose --definition $(KEVM_LIB)/$(haskell_dir) --main-module STORAGE-VERIFICATION > $@ - -tests/specs/examples/empty-bin-runtime.k: tests/specs/examples/Empty.sol $(KEVM_LIB)/$(haskell_kompiled) poetry - $(KEVM) solc-to-k $< Empty $(KEVM_OPTS) --verbose --definition $(KEVM_LIB)/$(haskell_dir) --main-module EMPTY-VERIFICATION > $@ - -.SECONDEXPANSION: -tests/specs/%.prove: tests/specs/% tests/specs/$$(firstword $$(subst /, ,$$*))/$$(KPROVE_FILE)/$(TEST_SYMBOLIC_BACKEND)/timestamp - $(POETRY_RUN) kevm-pyk prove $< $(KEVM_OPTS) $(KPROVE_OPTS) \ - --definition tests/specs/$(firstword $(subst /, ,$*))/$(KPROVE_FILE)/$(TEST_SYMBOLIC_BACKEND) - -tests/specs/%/timestamp: tests/specs/$$(firstword $$(subst /, ,$$*))/$$(KPROVE_FILE).$$(KPROVE_EXT) - $(POETRY_RUN) kevm-pyk kompile-spec \ - $< \ - --target $(word 3, $(subst /, , $*)) \ - --output-definition tests/specs/$(firstword $(subst /, ,$*))/$(KPROVE_FILE)/$(word 3, $(subst /, , $*)) \ - --main-module $(KPROVE_MODULE) \ - --syntax-module $(KPROVE_MODULE) \ - $(KOMPILE_OPTS) - -prove_smoke_tests := $(shell cat tests/specs/smoke) - -.PHONY: test-prove-smoke -test-prove-smoke: $(prove_smoke_tests:=.prove) - - -# Interactive Tests - -TEST_CONCRETE_BACKEND := llvm - -KEVM_MODE := NORMAL -KEVM_SCHEDULE := SHANGHAI -KEVM_CHAINID := 1 - -KRUN_OPTS ?= - -KEEP_OUTPUTS := false -CHECK := git --no-pager diff --no-index --ignore-all-space -R - -tests/ethereum-tests/LegacyTests/Constantinople/VMTests/%: KEVM_MODE = VMTESTS -tests/ethereum-tests/LegacyTests/Constantinople/VMTests/%: KEVM_SCHEDULE = DEFAULT - -tests/%.run-interactive: tests/% - $(POETRY_RUN) kevm-pyk run $< $(KEVM_OPTS) $(KRUN_OPTS) --target $(TEST_CONCRETE_BACKEND) \ - --mode $(KEVM_MODE) --schedule $(KEVM_SCHEDULE) --chainid $(KEVM_CHAINID) \ - > tests/$*.$(TEST_CONCRETE_BACKEND)-out \ - || $(CHECK) tests/$*.$(TEST_CONCRETE_BACKEND)-out tests/templates/output-success-$(TEST_CONCRETE_BACKEND).json - $(KEEP_OUTPUTS) || rm -rf tests/$*.$(TEST_CONCRETE_BACKEND)-out - -interactive_tests = tests/ethereum-tests/LegacyTests/Constantinople/VMTests/vmArithmeticTest/add0.json \ - tests/ethereum-tests/LegacyTests/Constantinople/VMTests/vmIOandFlowOperations/pop1.json \ - tests/interactive/sumTo10.evm - -.PHONY: test-interactive -test-interactive: $(interactive_tests:=.run-interactive) - - -# Media -# ----- - -media: media-pdf - -### Media generated PDFs - -.PHONY: media_pdfs -media_pdfs := 201710-presentation-devcon3 \ - 201801-presentation-csf \ - 201905-exercise-k-workshop \ - 201908-trufflecon-workshop 201908-trufflecon-firefly - -media/%.pdf: media/%.md media/citations.md - @mkdir -p $(dir $@) - cat $^ | pandoc --from markdown --filter pandoc-citeproc --to beamer --output $@ - -.PHONY: media-pdf -media-pdf: $(patsubst %, media/%.pdf, $(media_pdfs)) - -.PHONY: metropolis-theme -metropolis-theme: $(BUILD_DIR)/media/metropolis/beamerthememetropolis.sty - -$(BUILD_DIR)/media/metropolis/beamerthememetropolis.sty: - cd $(dir $@) && $(MAKE) diff --git a/README.md b/README.md deleted file mode 100644 index d8e89229f5..0000000000 --- a/README.md +++ /dev/null @@ -1,426 +0,0 @@ -KEVM: Semantics of EVM in K -=========================== - -In this repository, we provide a model of the EVM in K. - -Fast Installation ------------------ - -- `bash <(curl https://kframework.org/install)`: install [kup package manager]. -- `kup install kevm`: install KEVM. -- `kup list kevm`: list available KEVM versions. -- `kup update kevm`: update to latest KEVM version. - -**NOTE**: The first run will take longer to fetch all the libraries and compile sources. (30m to 1h) - -Documentation/Support ---------------------- - -These may be useful for learning KEVM and K (newest to oldest): - -- [K, KEVM and Foundry Integration overview](https://www.youtube.com/watch?v=9PLnQStkiUo) -- [Jello Paper], a nice presentation of this repository. -- [20 minute tour of the semantics](https://www.youtube.com/watch?v=tIq_xECoicQNov) at [2017 Devcon3]. -- [KEVM 1.0 technical report](http://hdl.handle.net/2142/97207), especially sections 3 and 5. -- [KEVM Paper at CSF'18/FLoC](https://fsl.cs.illinois.edu/publications/hildenbrandt-saxena-zhu-rodrigues-daian-guth-moore-zhang-park-rosu-2018-csf). - -To get support for KEVM, please join our [Discord Channel](https://discord.com/invite/CurfmXNtbN). - -If you want to start proving with KEVM, refer to [VERIFICATION.md]. - -Repository Structure --------------------- - -The following files constitute the KEVM semantics: - -- [network.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/network.md) provides the status codes reported to an Ethereum client on execution exceptions. -- [json-rpc.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/json-rpc.md) is an implementation of JSON RPC in K. -- [evm-types.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-types.md) provides the (functional) data of EVM (256-bit words, wordstacks, etc...). -- [serialization.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/serialization.md) provides helpers for parsing and unparsing data (hex strings, recursive-length prefix, Merkle trees, etc.). -- [evm.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm.md) is the main KEVM semantics, containing EVM’s configuration and transition rules. -- [gas.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/gas.md) contains all information relevant to gas. -- [schedule.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/schedule.md) contains all information relevant to EVM schedules. - -These additional files extend the semantics to make the repository more useful: - -- [buf.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/buf.md) defines the `#buf` byte-buffer abstraction for use during symbolic execution. -- [abi.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/abi.md) defines the [Contract ABI Specification](https://docs.soliditylang.org/en/v0.8.22/abi-spec.html) for use in proofs and easy contract/function specification. -- [hashed-locations.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/hashed-locations.md) defines the `#hashedLocation` abstraction used to specify Solidity-generated storage layouts. -- [edsl.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/edsl.md) combines the previous three abstractions for ease-of-use. - -These files are used for testing the semantics itself: - -- [state-utils.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/state-utils.md) provides functionality for EVM initialization, setup, and querying. -- [driver.md](kevm-pyk/src/kevm_pyk/kproj/evm-semantics/driver.md) is an execution harness for KEVM, providing a simple language for describing tests/programs. - -Building from source --------------------- - -There are two backends of K available: LLVM for concrete execution and Haskell for symbolic execution. -This repository generates the build-products for each backend in `$XDG_CACHE_HOME/evm-semantics-`. - -### System Dependencies - - -#### Ubuntu - -On Ubuntu >= 22.04 (for example): - -```sh -sudo apt-get install \ - bison \ - build-essential \ - clang-15 \ - cmake \ - curl \ - flex \ - g++ \ - gcc \ - libboost-test-dev \ - libfmt-dev \ - libgmp-dev \ - libjemalloc-dev \ - libmpfr-dev \ - libsecp256k1-dev \ - libstdc++-12-dev \ - libtool \ - libyaml-dev \ - libz3-dev \ - lld-15 \ - llvm-15-tools \ - m4 \ - maven \ - openjdk-17-jdk \ - pkg-config \ - python3 \ - python3-dev \ - z3 \ - zlib1g-dev -``` - -On Ubuntu < 18.04, you'll need to skip `libsecp256k1-dev` and instead build it from source (via our `Makefile`): - -```sh -make libsecp256k1 -``` - -#### Arch Linux - -On ArchLinux: - -```sh -sudo pacman -S \ - base base-devel boost clang cmake crypto++ curl git gmp \ - gflags jdk-openjdk jemalloc libsecp256k1 lld llvm maven \ - mpfr poetry python stack yaml-cpp zlib -``` - -#### macOS - -After installing the Command Line Tools, [Homebrew](https://brew.sh/), and getting the [blockchain plugin](#blockchain-plugin), run: - -```sh -brew tap runtimeverification/k -brew install \ - bison \ - boost \ - cmake \ - flex \ - fmt \ - gcc \ - gmp \ - openjdk \ - jemalloc \ - libyaml \ - llvm \ - make \ - maven \ - mpfr \ - pkg-config \ - python \ - secp256k1 \ - stack \ - zlib \ - z3 -``` - -**NOTE**: It is recommended to use the homebrew version of `flex` and XCode. - -If you are building on an Apple Silicon machine, ensure that your `PATH` is set up correctly before running `make deps` or `make k-deps`. -You can do so using [`direnv`](https://direnv.net/) by copying `macos-envrc` to `.envrc`, then running `direnv allow`. - -If the build on macOS still fails, you can also try adding the following lines to the top of your `Makefile` under `UNAME_S`: - -```sh -ifeq ($(UNAME_S), Darwin) -SHELL := /usr/local/bin/bash -PATH := $(pwd)/.build/usr/bin:$(PATH) -endif -``` - -#### Haskell Stack (all platforms) - -- [Haskell Stack](https://docs.haskellstack.org/en/stable/install_and_upgrade/#installupgrade). - Note that the version of the `stack` tool provided by your package manager might not be recent enough. - Please follow installation instructions from the Haskell Stack website linked above. - -To upgrade `stack` (if needed): - -```sh -stack upgrade -export PATH=$HOME/.local/bin:$PATH -``` - -### Build Dependencies - -#### K Framework - -You need to install the [K Framework] on your system, see the instructions there. -The fastest way is via the [kup package manager], with which you can do to get the correct version of K: - -```sh -kup install k.openssl.procps --version v$(cat deps/k_release) -``` - -You can also drop into a single development shell with the correct version of K on path by doing: - -```sh -kup shell k.openssl.procps --version v$(cat deps/k_release) -``` - -### Building - -First you need to set up a virtual environment using Poetry with the prerequisites `python 3.8.*`, `pip >= 20.0.2`, `poetry >= 1.3.2`: - -```sh -make poetry -``` - -#### Blockchain Plugin - -You also need to get the blockchain plugin submodule and install it. - -```sh -git submodule update --init --recursive -poetry -C kevm-pyk run kdist --verbose build evm-semantics.plugin -``` - -To change the default compiler: - -```sh -CXX=clang++-14 poetry -C kevm-pyk run kdist --verbose build evm-semantics.plugin -``` - -On Apple silicon: - -```sh -APPLE_SILICON=true poetry -C kevm-pyk run kdist --verbose build evm-semantics.plugin -``` - -#### K Definitions - -Finally, you can build the semantics. - -```sh -poetry -C kevm-pyk run kdist --verbose build -j6 -``` - -You can build specific targets using options `evm-semantics.{llvm,kllvm,kllvm-runtime,haskell,haskell-standalone,plugin}`, e.g.: - -```sh -poetry -C kevm-pyk run kdist build -j2 evm-semantics.llvm evm-semantics.haskell -``` - -Targets can be cleaned with - -```sh -poetry -C kevm-pyk run kdist clean -``` - -For more information, refer to `kdist --help` and the [dist.py](kevm-pyk/src/kevm_pyk/dist.py) module. - -Running Tests -------------- - -To execute tests from the [Ethereum Test Set], the submodule needs to be fetched first. - -```sh -git submodule update --init --recursive -- tests/ethereum-tests -``` - -The tests are run using the supplied `Makefile`. - -The following subsume all other tests: - -- `make test`: All of the quick tests. -- `make test-all`: All of the quick and slow tests. - -These are the individual test-suites (all of these can be suffixed with `-all` to also run slow tests): - -- `make test-vm`: VMTests from the [Ethereum Test Set]. -- `make test-bchain`: Subset of BlockchainTests from the [Ethereum Test Set]. -- `make test-proof`: Proofs from the [Verified Smart Contracts]. -- `make test-interactive`: Tests of the `kevm` command. - -All these targets call `pytest` under the hood. You can pass additional arguments to the call by appending them to variable `PYTEST_ARGS`. E.g. run - -``` -make test-vm PYTEST_ARGS+=-vv -``` - -to execute VMTests with increased verbosity, and - -``` -make test-vm PYTEST_ARGS+=-n0 -``` - -to execute them on a single worker. - -Files produced by test runs, e.g. kompiled definition and logs, can be found in `/tmp/pytest-of-/`. - -For Developers --------------- - -If built from the source, the `kevm-pyk` executable will be installed in a virtual environemtn handled by Poetry. -You can call `kevm-pyk --help` to get a quick summary of how to use the script. - -Run the file `tests/ethereum-tests/LegacyTests/Constantinople/VMTests/vmArithmeticTest/add0.json`: - -```sh -poetry -C kevm-pyk run kevm-pyk run tests/ethereum-tests/LegacyTests/Constantinople/VMTests/vmArithmeticTest/add0.json --schedule DEFAULT --mode VMTESTS -``` - -To enable the debug symbols for the llvm backend, build using this command: - -```sh -poetry -C kevm-pyk run kdist build evm-semantics.llvm --arg enable-llvm-debug=true -``` - -To debug a conformance test, add the `--debugger` flag to the command: - -```sh -poetry -C kevm-pyk run kevm-pyk run tests/ethereum-tests/BlockchainTests/GeneralStateTests/stExample/add11.json --target llvm --mode NORMAL --schedule SHANGHAI --chainid 1 --debugger -``` - -### Keeping in mind while developing - -Always have your build up-to-date. - -- If using the kup package manager, run `kup install kevm --version .` to install the local version. -- If building from source: - - `make poetry` needs to be re-run if you touch any of the `kevm-pyk` code. - - `poetry -C kevm-pyk run kdist build --force` needs to be re-run if you touch any of this repos files. - - `poetry -C kevm-pyk run kdist clean` is a safe way to remove the target directory - -### Building with Nix - -We now support building KEVM using [nix flakes](https://nixos.wiki/wiki/Flakes). -To set up nix flakes you will need to be on `nix` 2.4 or higher and follow the instructions [here](https://nixos.wiki/wiki/Flakes). - -For example, if you are on a standard Linux distribution, such as Ubuntu, first [install nix](https://nixos.org/download.html#download-nix) -and then enable flakes by editing either `~/.config/nix/nix.conf` or `/etc/nix/nix.conf` and adding: - -``` -experimental-features = nix-command flakes -``` - -This is needed to expose the Nix 2.0 CLI and flakes support that are hidden behind feature-flags. - -By default, Nix will build the project and its transitive dependencies from source, which can take up to an hour. -We recommend setting up [the binary cache](https://app.cachix.org/cache/kore) to speed up the build process significantly. - -To build KEVM, run: - -```sh -nix build .#kevm -``` - -This will build all of KEVM and K and put a link to the resulting binaries in the `result/` folder. - - -**NOTE**: Mac users, especially those running M1/M2 Macs may find nix segfaulting on occasion. If this happens, try running the nix command like this: `GC_DONT_GC=1 nix build .` - -If you want to temporarily add the `kevm` binary to the current shell, run - -```sh -nix shell .#kevm -``` - -### Profiling with Nix - -Nix can also be used to quickly profile different versions of the Haskell backend. Simply run: - -```sh -nix build github:runtimeverification/evm-semantics#profile \ - --override-input k-framework/haskell-backend github:runtimeverification/haskell-backend/ \ - -o prof- -``` - -replacing `` with the commit you want to run profiling against. - -If you want to profile against a working version of the Haskell backend repository, simply `cd` into the root of the repo and run: - -```sh -nix build github:runtimeverification/evm-semantics#profile \ - --override-input k-framework/haskell-backend $(pwd) \ - -o prof-my-feature -``` - -To compare profiles, you can use: - -```sh -nix run github:runtimeverification/evm-semantics#compare-profiles -- prof-my-feature prof- -``` - -This will produce a nice table with the times for both versions of the haskell-backend. -Note that `#profile` pre-pends the output of `kore-exec --version` to the profile run, which is then used as a tag by the `#compare-profiles` script. -Therefore, any profiled local checkout of the haskell-backend will report as `dirty-ghc8107` in the resulting table. - -Media ------ - -This repository can build two pieces of documentation for you, the [Jello Paper] and the [2017 Devcon3] presentation. - -### System Dependencies - -For the presentations in the `media` directory, you'll need `pdflatex`, commonly provided with `texlive-full`, and `pandoc`. - -```sh -sudo apt install texlive-full pandoc -``` - -### Building - -To build all the PDFs (presentations and reports) available in the `media/` directory, use: - -```sh -make media -``` - -Resources -========= - -- [EVM Yellowpaper](https://github.com/ethereum/yellowpaper): Original specification of EVM. -- [LEM Semantics of EVM](https://github.com/pirapira/eth-isabelle) -- [EVM Opcode Interactive Reference](https://www.evm.codes/?fork=merge) -- [Solidity ABI Encoding](https://docs.soliditylang.org/en/v0.8.22/abi-spec.html) - -For more information about the [K Framework], refer to these sources: - -- [The K Tutorial](https://github.com/runtimeverification/k/tree/master/k-distribution/k-tutorial) -- [Semantics-Based Program Verifiers for All Languages](https://fsl.cs.illinois.edu/publications/stefanescu-park-yuwen-li-rosu-2016-oopsla) -- [Reachability Logic Resources](http://fsl.cs.illinois.edu/index.php/Reachability_Logic_in_K) -- [Matching Logic Resources](http://www.matching-logic.org/) -- [Logical Frameworks](https://dl.acm.org/doi/10.5555/208683.208700): Discussion of logical frameworks. - -[K Framework]: -[Jello Paper]: -[2017 Devcon3]: -[K Reachability Logic Prover]: -[K Editor Support]: -[Ethereum Test Set]: -[Verified Smart Contracts]: -[eDSL]: -[kup package manager]: -[Makefile]: <./Makefile> -[VERIFICATION.md]: <./VERIFICATION.md> diff --git a/_config.yml b/_config.yml deleted file mode 100644 index f980e760b6..0000000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-slate diff --git a/assets/css/Firefly-Download-Icon-Inverted.32636383.png b/assets/css/Firefly-Download-Icon-Inverted.32636383.png new file mode 100644 index 0000000000..c87605a3d7 Binary files /dev/null and b/assets/css/Firefly-Download-Icon-Inverted.32636383.png differ diff --git a/assets/css/Firefly-Download-Icon.8094a4f0.png b/assets/css/Firefly-Download-Icon.8094a4f0.png new file mode 100644 index 0000000000..e0fdca7b4c Binary files /dev/null and b/assets/css/Firefly-Download-Icon.8094a4f0.png differ diff --git a/assets/css/fontawesome-webfont.0caf0c90.ttf b/assets/css/fontawesome-webfont.0caf0c90.ttf new file mode 100644 index 0000000000..35acda2fa1 Binary files /dev/null and b/assets/css/fontawesome-webfont.0caf0c90.ttf differ diff --git a/assets/css/fontawesome-webfont.3981e506.eot b/assets/css/fontawesome-webfont.3981e506.eot new file mode 100644 index 0000000000..e9f60ca953 Binary files /dev/null and b/assets/css/fontawesome-webfont.3981e506.eot differ diff --git a/assets/css/fontawesome-webfont.58488e7e.woff2 b/assets/css/fontawesome-webfont.58488e7e.woff2 new file mode 100644 index 0000000000..4d13fc6040 Binary files /dev/null and b/assets/css/fontawesome-webfont.58488e7e.woff2 differ diff --git a/assets/css/fontawesome-webfont.a9323ae9.svg b/assets/css/fontawesome-webfont.a9323ae9.svg new file mode 100644 index 0000000000..756bf0896c --- /dev/null +++ b/assets/css/fontawesome-webfont.a9323ae9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/css/fontawesome-webfont.ed962b83.woff b/assets/css/fontawesome-webfont.ed962b83.woff new file mode 100644 index 0000000000..400014a4b0 Binary files /dev/null and b/assets/css/fontawesome-webfont.ed962b83.woff differ diff --git a/assets/css/iconfont.960c72b2.eot b/assets/css/iconfont.960c72b2.eot new file mode 100644 index 0000000000..63c3474526 Binary files /dev/null and b/assets/css/iconfont.960c72b2.eot differ diff --git a/assets/css/iconfont.a07d77e0.woff2 b/assets/css/iconfont.a07d77e0.woff2 new file mode 100644 index 0000000000..02fbbae419 Binary files /dev/null and b/assets/css/iconfont.a07d77e0.woff2 differ diff --git a/assets/css/iconfont.b2a06094.woff b/assets/css/iconfont.b2a06094.woff new file mode 100644 index 0000000000..5c0b2e3a59 Binary files /dev/null and b/assets/css/iconfont.b2a06094.woff differ diff --git a/assets/css/index.css b/assets/css/index.css new file mode 100644 index 0000000000..5fdaff4071 --- /dev/null +++ b/assets/css/index.css @@ -0,0 +1 @@ +:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-family:sans-serif;line-height:1.15}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{color:#212529;text-align:left;background-color:#fff;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;font-weight:400;line-height:1.5}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;text-decoration:underline;border-bottom:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}address{font-style:normal;line-height:inherit;margin-bottom:1rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;background-color:#0000;text-decoration:none}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{-ms-overflow-style:scrollbar;margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{vertical-align:middle;overflow:hidden}table{border-collapse:collapse}caption{color:#6c757d;text-align:left;caption-side:bottom;padding-top:.75rem;padding-bottom:.75rem}th{text-align:inherit;text-align:-webkit-match-parent}label{margin-bottom:.5rem;display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{resize:vertical;overflow:auto}fieldset{min-width:0;border:0;margin:0;padding:0}legend{width:100%;max-width:100%;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal;margin-bottom:.5rem;padding:0;display:block}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{cursor:pointer;display:list-item}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{border:0;border-top:1px solid #0000001a;margin-top:1rem;margin-bottom:1rem}.small,small{font-size:.875em;font-weight:400}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{text-transform:uppercase;font-size:90%}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{color:#6c757d;font-size:.875em;display:block}.blockquote-footer:before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{max-width:100%;height:auto;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;padding:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{color:#6c757d;font-size:90%}code{color:#e83e8c;word-wrap:break-word;font-size:87.5%}a>code{color:inherit}kbd{color:#fff;background-color:#212529;border-radius:.2rem;padding:.2rem .4rem;font-size:87.5%}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{color:#212529;font-size:87.5%;display:block}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-15px;margin-right:-15px;display:-ms-flexbox;display:flex}.no-gutters{margin-left:0;margin-right:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-left:0;padding-right:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{width:100%;padding-left:15px;padding-right:15px;position:relative}.col{max-width:100%;-ms-flex-positive:1;-ms-flex-preferred-size:0;flex-grow:1;flex-basis:0}.row-cols-1>*{max-width:100%;-ms-flex:0 0 100%;flex:0 0 100%}.row-cols-2>*{max-width:50%;-ms-flex:0 0 50%;flex:0 0 50%}.row-cols-3>*{max-width:33.3333%;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%}.row-cols-4>*{max-width:25%;-ms-flex:0 0 25%;flex:0 0 25%}.row-cols-5>*{max-width:20%;-ms-flex:0 0 20%;flex:0 0 20%}.row-cols-6>*{max-width:16.6667%;-ms-flex:0 0 16.6667%;flex:0 0 16.6667%}.col-auto{width:auto;max-width:100%;-ms-flex:none;flex:none}.col-1{max-width:8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%}.col-2{max-width:16.6667%;-ms-flex:0 0 16.6667%;flex:0 0 16.6667%}.col-3{max-width:25%;-ms-flex:0 0 25%;flex:0 0 25%}.col-4{max-width:33.3333%;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%}.col-5{max-width:41.6667%;-ms-flex:0 0 41.6667%;flex:0 0 41.6667%}.col-6{max-width:50%;-ms-flex:0 0 50%;flex:0 0 50%}.col-7{max-width:58.3333%;-ms-flex:0 0 58.3333%;flex:0 0 58.3333%}.col-8{max-width:66.6667%;-ms-flex:0 0 66.6667%;flex:0 0 66.6667%}.col-9{max-width:75%;-ms-flex:0 0 75%;flex:0 0 75%}.col-10{max-width:83.3333%;-ms-flex:0 0 83.3333%;flex:0 0 83.3333%}.col-11{max-width:91.6667%;-ms-flex:0 0 91.6667%;flex:0 0 91.6667%}.col-12{max-width:100%;-ms-flex:0 0 100%;flex:0 0 100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.6667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333%}.offset-5{margin-left:41.6667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333%}.offset-8{margin-left:66.6667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333%}.offset-11{margin-left:91.6667%}@media (min-width:576px){.col-sm{max-width:100%;-ms-flex-positive:1;-ms-flex-preferred-size:0;flex-grow:1;flex-basis:0}.row-cols-sm-1>*{max-width:100%;-ms-flex:0 0 100%;flex:0 0 100%}.row-cols-sm-2>*{max-width:50%;-ms-flex:0 0 50%;flex:0 0 50%}.row-cols-sm-3>*{max-width:33.3333%;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%}.row-cols-sm-4>*{max-width:25%;-ms-flex:0 0 25%;flex:0 0 25%}.row-cols-sm-5>*{max-width:20%;-ms-flex:0 0 20%;flex:0 0 20%}.row-cols-sm-6>*{max-width:16.6667%;-ms-flex:0 0 16.6667%;flex:0 0 16.6667%}.col-sm-auto{width:auto;max-width:100%;-ms-flex:none;flex:none}.col-sm-1{max-width:8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%}.col-sm-2{max-width:16.6667%;-ms-flex:0 0 16.6667%;flex:0 0 16.6667%}.col-sm-3{max-width:25%;-ms-flex:0 0 25%;flex:0 0 25%}.col-sm-4{max-width:33.3333%;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%}.col-sm-5{max-width:41.6667%;-ms-flex:0 0 41.6667%;flex:0 0 41.6667%}.col-sm-6{max-width:50%;-ms-flex:0 0 50%;flex:0 0 50%}.col-sm-7{max-width:58.3333%;-ms-flex:0 0 58.3333%;flex:0 0 58.3333%}.col-sm-8{max-width:66.6667%;-ms-flex:0 0 66.6667%;flex:0 0 66.6667%}.col-sm-9{max-width:75%;-ms-flex:0 0 75%;flex:0 0 75%}.col-sm-10{max-width:83.3333%;-ms-flex:0 0 83.3333%;flex:0 0 83.3333%}.col-sm-11{max-width:91.6667%;-ms-flex:0 0 91.6667%;flex:0 0 91.6667%}.col-sm-12{max-width:100%;-ms-flex:0 0 100%;flex:0 0 100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.6667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333%}.offset-sm-5{margin-left:41.6667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333%}.offset-sm-8{margin-left:66.6667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333%}.offset-sm-11{margin-left:91.6667%}}@media (min-width:768px){.col-md{max-width:100%;-ms-flex-positive:1;-ms-flex-preferred-size:0;flex-grow:1;flex-basis:0}.row-cols-md-1>*{max-width:100%;-ms-flex:0 0 100%;flex:0 0 100%}.row-cols-md-2>*{max-width:50%;-ms-flex:0 0 50%;flex:0 0 50%}.row-cols-md-3>*{max-width:33.3333%;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%}.row-cols-md-4>*{max-width:25%;-ms-flex:0 0 25%;flex:0 0 25%}.row-cols-md-5>*{max-width:20%;-ms-flex:0 0 20%;flex:0 0 20%}.row-cols-md-6>*{max-width:16.6667%;-ms-flex:0 0 16.6667%;flex:0 0 16.6667%}.col-md-auto{width:auto;max-width:100%;-ms-flex:none;flex:none}.col-md-1{max-width:8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%}.col-md-2{max-width:16.6667%;-ms-flex:0 0 16.6667%;flex:0 0 16.6667%}.col-md-3{max-width:25%;-ms-flex:0 0 25%;flex:0 0 25%}.col-md-4{max-width:33.3333%;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%}.col-md-5{max-width:41.6667%;-ms-flex:0 0 41.6667%;flex:0 0 41.6667%}.col-md-6{max-width:50%;-ms-flex:0 0 50%;flex:0 0 50%}.col-md-7{max-width:58.3333%;-ms-flex:0 0 58.3333%;flex:0 0 58.3333%}.col-md-8{max-width:66.6667%;-ms-flex:0 0 66.6667%;flex:0 0 66.6667%}.col-md-9{max-width:75%;-ms-flex:0 0 75%;flex:0 0 75%}.col-md-10{max-width:83.3333%;-ms-flex:0 0 83.3333%;flex:0 0 83.3333%}.col-md-11{max-width:91.6667%;-ms-flex:0 0 91.6667%;flex:0 0 91.6667%}.col-md-12{max-width:100%;-ms-flex:0 0 100%;flex:0 0 100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.6667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333%}.offset-md-5{margin-left:41.6667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333%}.offset-md-8{margin-left:66.6667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333%}.offset-md-11{margin-left:91.6667%}}@media (min-width:992px){.col-lg{max-width:100%;-ms-flex-positive:1;-ms-flex-preferred-size:0;flex-grow:1;flex-basis:0}.row-cols-lg-1>*{max-width:100%;-ms-flex:0 0 100%;flex:0 0 100%}.row-cols-lg-2>*{max-width:50%;-ms-flex:0 0 50%;flex:0 0 50%}.row-cols-lg-3>*{max-width:33.3333%;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%}.row-cols-lg-4>*{max-width:25%;-ms-flex:0 0 25%;flex:0 0 25%}.row-cols-lg-5>*{max-width:20%;-ms-flex:0 0 20%;flex:0 0 20%}.row-cols-lg-6>*{max-width:16.6667%;-ms-flex:0 0 16.6667%;flex:0 0 16.6667%}.col-lg-auto{width:auto;max-width:100%;-ms-flex:none;flex:none}.col-lg-1{max-width:8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%}.col-lg-2{max-width:16.6667%;-ms-flex:0 0 16.6667%;flex:0 0 16.6667%}.col-lg-3{max-width:25%;-ms-flex:0 0 25%;flex:0 0 25%}.col-lg-4{max-width:33.3333%;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%}.col-lg-5{max-width:41.6667%;-ms-flex:0 0 41.6667%;flex:0 0 41.6667%}.col-lg-6{max-width:50%;-ms-flex:0 0 50%;flex:0 0 50%}.col-lg-7{max-width:58.3333%;-ms-flex:0 0 58.3333%;flex:0 0 58.3333%}.col-lg-8{max-width:66.6667%;-ms-flex:0 0 66.6667%;flex:0 0 66.6667%}.col-lg-9{max-width:75%;-ms-flex:0 0 75%;flex:0 0 75%}.col-lg-10{max-width:83.3333%;-ms-flex:0 0 83.3333%;flex:0 0 83.3333%}.col-lg-11{max-width:91.6667%;-ms-flex:0 0 91.6667%;flex:0 0 91.6667%}.col-lg-12{max-width:100%;-ms-flex:0 0 100%;flex:0 0 100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.6667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333%}.offset-lg-5{margin-left:41.6667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333%}.offset-lg-8{margin-left:66.6667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333%}.offset-lg-11{margin-left:91.6667%}}@media (min-width:1200px){.col-xl{max-width:100%;-ms-flex-positive:1;-ms-flex-preferred-size:0;flex-grow:1;flex-basis:0}.row-cols-xl-1>*{max-width:100%;-ms-flex:0 0 100%;flex:0 0 100%}.row-cols-xl-2>*{max-width:50%;-ms-flex:0 0 50%;flex:0 0 50%}.row-cols-xl-3>*{max-width:33.3333%;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%}.row-cols-xl-4>*{max-width:25%;-ms-flex:0 0 25%;flex:0 0 25%}.row-cols-xl-5>*{max-width:20%;-ms-flex:0 0 20%;flex:0 0 20%}.row-cols-xl-6>*{max-width:16.6667%;-ms-flex:0 0 16.6667%;flex:0 0 16.6667%}.col-xl-auto{width:auto;max-width:100%;-ms-flex:none;flex:none}.col-xl-1{max-width:8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%}.col-xl-2{max-width:16.6667%;-ms-flex:0 0 16.6667%;flex:0 0 16.6667%}.col-xl-3{max-width:25%;-ms-flex:0 0 25%;flex:0 0 25%}.col-xl-4{max-width:33.3333%;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%}.col-xl-5{max-width:41.6667%;-ms-flex:0 0 41.6667%;flex:0 0 41.6667%}.col-xl-6{max-width:50%;-ms-flex:0 0 50%;flex:0 0 50%}.col-xl-7{max-width:58.3333%;-ms-flex:0 0 58.3333%;flex:0 0 58.3333%}.col-xl-8{max-width:66.6667%;-ms-flex:0 0 66.6667%;flex:0 0 66.6667%}.col-xl-9{max-width:75%;-ms-flex:0 0 75%;flex:0 0 75%}.col-xl-10{max-width:83.3333%;-ms-flex:0 0 83.3333%;flex:0 0 83.3333%}.col-xl-11{max-width:91.6667%;-ms-flex:0 0 91.6667%;flex:0 0 91.6667%}.col-xl-12{max-width:100%;-ms-flex:0 0 100%;flex:0 0 100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.6667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333%}.offset-xl-5{margin-left:41.6667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333%}.offset-xl-8{margin-left:66.6667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333%}.offset-xl-11{margin-left:91.6667%}}.table{width:100%;color:#212529;margin-bottom:1rem}.table td,.table th{vertical-align:top;border-top:1px solid #dee2e6;padding:.75rem}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(2n+1){background-color:#0000000d}.table-hover tbody tr:hover{color:#212529;background-color:#00000013}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:#00000013}.table-hover .table-active:hover{background-color:#00000013}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:#00000013}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(2n+1){background-color:#ffffff0d}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:#ffffff13}@media (max-width:575.98px){.table-responsive-sm{width:100%;-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{width:100%;-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{width:100%;-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{width:100%;-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{width:100%;-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}.table-responsive>.table-bordered{border:0}.form-control{width:100%;height:calc(1.5em + .75rem + 2px);color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:#0000;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{opacity:1;background-color:#e9ecef}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:#0000;text-shadow:0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{width:100%;display:block}.col-form-label{font-size:inherit;margin-bottom:0;padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{width:100%;color:#212529;background-color:#0000;border:1px solid #0000;border-width:1px 0;margin-bottom:0;padding:.375rem 0;font-size:1rem;line-height:1.5;display:block}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-left:0;padding-right:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);border-radius:.2rem;padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.form-control-lg{height:calc(1.5em + 1rem + 2px);border-radius:.3rem;padding:.5rem 1rem;font-size:1.25rem;line-height:1.5}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{margin-top:.25rem;display:block}.form-row{-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-5px;margin-right:-5px;display:-ms-flexbox;display:flex}.form-row>.col,.form-row>[class*=col-]{padding-left:5px;padding-right:5px}.form-check{padding-left:1.25rem;display:block;position:relative}.form-check-input{margin-top:.3rem;margin-left:-1.25rem;position:absolute}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{align-items:center;margin-right:.75rem;padding-left:0;display:-ms-inline-flexbox;display:inline-flex}.form-check-inline .form-check-input{margin-top:0;margin-left:0;margin-right:.3125rem;position:static}.valid-feedback{width:100%;color:#28a745;margin-top:.25rem;font-size:.875em;display:none}.valid-tooltip{z-index:5;max-width:100%;color:#fff;background-color:#28a745e6;border-radius:.25rem;margin-top:.1rem;padding:.25rem .5rem;font-size:.875rem;line-height:1.5;display:none;position:absolute;top:100%;left:0}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);border-color:#28a745;padding-right:calc(1.5em + .75rem)!important}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem #28a74540}.was-validated select.form-control:valid,select.form-control.is-valid{background-position:right 1.5rem center;padding-right:3rem!important}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{background-position:right calc(.375em + .1875rem) top calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.custom-select.is-valid,.was-validated .custom-select:valid{background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") right 1.75rem center/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat;border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem #28a74540}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{background-color:#34ce57;border-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #28a74540}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem #28a74540}.invalid-feedback{width:100%;color:#dc3545;margin-top:.25rem;font-size:.875em;display:none}.invalid-tooltip{z-index:5;max-width:100%;color:#fff;background-color:#dc3545e6;border-radius:.25rem;margin-top:.1rem;padding:.25rem .5rem;font-size:.875rem;line-height:1.5;display:none;position:absolute;top:100%;left:0}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem #dc354540}.was-validated select.form-control:invalid,select.form-control.is-invalid{background-position:right 1.5rem center;padding-right:3rem!important}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{background-position:right calc(.375em + .1875rem) top calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") right 1.75rem center/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat;border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem #dc354540}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{background-color:#e4606d;border-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #dc354540}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem #dc354540}.form-inline{-ms-flex-flow:wrap;flex-flow:wrap;align-items:center;display:-ms-flexbox;display:flex}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{justify-content:center;align-items:center;margin-bottom:0;display:-ms-flexbox;display:flex}.form-inline .form-group{-ms-flex-flow:wrap;flex-flow:wrap;-ms-flex:none;flex:none;align-items:center;margin-bottom:0;display:-ms-flexbox;display:flex}.form-inline .form-control{width:auto;vertical-align:middle;display:inline-block}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{width:auto;justify-content:center;align-items:center;padding-left:0;display:-ms-flexbox;display:flex}.form-inline .form-check-input{-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-left:0;margin-right:.25rem;position:relative}.form-inline .custom-control{justify-content:center;align-items:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#0000;border:1px solid #0000;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:inline-block}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem #007bff40}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem #268fff80}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #268fff80}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem #828a9180}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #828a9180}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem #48b46180}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #48b46180}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem #3ab0c380}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #3ab0c380}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem #deaa0c80}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #deaa0c80}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem #e1536180}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #e1536180}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem #d8d9db80}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #d8d9db80}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem #52585d80}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #52585d80}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem #007bff80}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:#0000}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #007bff80}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem #6c757d80}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:#0000}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #6c757d80}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem #28a74580}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:#0000}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #28a74580}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem #17a2b880}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:#0000}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #17a2b880}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem #ffc10780}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:#0000}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #ffc10780}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem #dc354580}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:#0000}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #dc354580}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem #f8f9fa80}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:#0000}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #f8f9fa80}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem #343a4080}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:#0000}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #343a4080}.btn-link{color:#007bff;font-weight:400;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{border-radius:.3rem;padding:.5rem 1rem;font-size:1.25rem;line-height:1.5}.btn-group-sm>.btn,.btn-sm{border-radius:.2rem;padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.btn-block{width:100%;display:block}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;transition:height .35s;position:relative;overflow:hidden}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.width{width:0;height:auto;transition:width .35s}@media (prefers-reduced-motion:reduce){.collapsing.width{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{vertical-align:.255em;content:"";border:.3em solid #0000;border-top-color:currentColor;border-bottom:0;margin-left:.255em;display:inline-block}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{z-index:1000;float:left;min-width:10rem;color:#212529;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #00000026;border-radius:.25rem;margin:.125rem 0 0;padding:.5rem 0;font-size:1rem;list-style:none;display:none;position:absolute;top:100%;left:0}.dropdown-menu-left{left:0;right:auto}.dropdown-menu-right{left:auto;right:0}@media (min-width:576px){.dropdown-menu-sm-left{left:0;right:auto}.dropdown-menu-sm-right{left:auto;right:0}}@media (min-width:768px){.dropdown-menu-md-left{left:0;right:auto}.dropdown-menu-md-right{left:auto;right:0}}@media (min-width:992px){.dropdown-menu-lg-left{left:0;right:auto}.dropdown-menu-lg-right{left:auto;right:0}}@media (min-width:1200px){.dropdown-menu-xl-left{left:0;right:auto}.dropdown-menu-xl-right{left:auto;right:0}}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem;top:auto;bottom:100%}.dropup .dropdown-toggle:after{vertical-align:.255em;content:"";border:.3em solid #0000;border-top:0;border-bottom-color:currentColor;margin-left:.255em;display:inline-block}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem;top:0;left:100%;right:auto}.dropright .dropdown-toggle:after{vertical-align:.255em;content:"";border:.3em solid #0000;border-left-color:currentColor;border-right:0;margin-left:.255em;display:inline-block}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem;top:0;left:auto;right:100%}.dropleft .dropdown-toggle:after{vertical-align:.255em;content:"";margin-left:.255em;display:inline-block}.dropleft .dropdown-toggle:after{display:none}.dropleft .dropdown-toggle:before{vertical-align:.255em;content:"";border-top:.3em solid #0000;border-bottom:.3em solid #0000;border-right:.3em solid;margin-right:.255em;display:inline-block}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{bottom:auto;right:auto}.dropdown-divider{height:0;border-top:1px solid #e9ecef;margin:.5rem 0;overflow:hidden}.dropdown-item{width:100%;clear:both;color:#212529;text-align:inherit;white-space:nowrap;background-color:#0000;border:0;padding:.25rem 1.5rem;font-weight:400;display:block}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;background-color:#e9ecef;text-decoration:none}.dropdown-item.active,.dropdown-item:active{color:#fff;background-color:#007bff;text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:#0000}.dropdown-menu.show{display:block}.dropdown-header{color:#6c757d;white-space:nowrap;margin-bottom:0;padding:.5rem 1.5rem;font-size:.875rem;display:block}.dropdown-item-text{color:#212529;padding:.25rem 1.5rem;display:block}.btn-group,.btn-group-vertical{vertical-align:middle;display:-ms-inline-flexbox;display:inline-flex;position:relative}.btn-group-vertical>.btn,.btn-group>.btn{-ms-flex:auto;flex:auto;position:relative}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:flex-start;display:-ms-flexbox;display:flex}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-left:.5625rem;padding-right:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-left:.375rem;padding-right:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-left:.75rem;padding-right:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;justify-content:center;align-items:flex-start}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{clip:rect(0,0,0,0);pointer-events:none;position:absolute}.input-group{width:100%;-ms-flex-wrap:wrap;flex-wrap:wrap;align-items:stretch;display:-ms-flexbox;display:flex;position:relative}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{width:1%;min-width:0;-ms-flex:auto;flex:auto;margin-bottom:0;position:relative}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{align-items:center;display:-ms-flexbox;display:flex}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label:after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label:after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{z-index:2;position:relative}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem;align-items:center;margin-bottom:0;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;display:-ms-flexbox;display:flex}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{border-radius:.3rem;padding:.5rem 1rem;font-size:1.25rem;line-height:1.5}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{border-radius:.2rem;padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{z-index:1;min-height:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact;padding-left:1.5rem;display:block;position:relative}.custom-control-inline{margin-right:1rem;display:-ms-inline-flexbox;display:inline-flex}.custom-control-input{z-index:-1;width:1rem;height:1.25rem;opacity:0;position:absolute;left:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;background-color:#007bff;border-color:#007bff}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem #007bff40}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{vertical-align:top;margin-bottom:0;position:relative}.custom-control-label:before{width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:1px solid #adb5bd;display:block;position:absolute;top:.25rem;left:-1.5rem}.custom-control-label:after{width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat;display:block;position:absolute;top:.25rem;left:-1.5rem}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{background-color:#007bff;border-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:#007bff80}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:#007bff80}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:#007bff80}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{width:1.75rem;pointer-events:all;border-radius:.5rem;left:-2.25rem}.custom-switch .custom-control-label:after{width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;top:calc(.25rem + 2px);left:calc(2px - 2.25rem)}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;-webkit-transform:translate(.75rem);transform:translate(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:#007bff80}.custom-select{width:100%;height:calc(1.5em + .75rem + 2px);color:#495057;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;display:inline-block}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;background-image:none;padding-right:.75rem}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:#0000;text-shadow:0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0;display:inline-block;position:relative}.custom-file-input{z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);opacity:0;margin:0;position:relative;overflow:hidden}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem #007bff40}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{z-index:1;height:calc(1.5em + .75rem + 2px);color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;padding:.375rem .75rem;font-weight:400;line-height:1.5;position:absolute;top:0;left:0;right:0;overflow:hidden}.custom-file-label:after{z-index:3;height:calc(1.5em + .75rem);color:#495057;content:"Browse";border-left:inherit;background-color:#e9ecef;border-radius:0 .25rem .25rem 0;padding:.375rem .75rem;line-height:1.5;display:block;position:absolute;top:0;bottom:0;right:0}.custom-range{width:100%;height:1.4rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;padding:0}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #007bff40}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #007bff40}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #007bff40}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;-webkit-appearance:none;appearance:none;background-color:#007bff;border:0;border-radius:1rem;margin-top:-.25rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:#0000;cursor:pointer;background-color:#dee2e6;border-color:#0000;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:#0000;cursor:pointer;background-color:#dee2e6;border-color:#0000;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;appearance:none;background-color:#007bff;border:0;border-radius:1rem;margin-top:0;margin-left:.2rem;margin-right:.2rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:#0000;cursor:pointer;background-color:#0000;border-width:.5rem;border-color:#0000}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem;margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:0;padding-left:0;list-style:none;display:-ms-flexbox;display:flex}.nav-link{padding:.5rem 1rem;display:block}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{background-color:#0000;border:1px solid #0000;border-top-left-radius:.25rem;border-top-right-radius:.25rem;margin-bottom:-1px}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:#0000;border-color:#0000}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:-1px}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{text-align:center;-ms-flex:auto;flex:auto}.nav-justified .nav-item,.nav-justified>.nav-link{text-align:center;-ms-flex-positive:1;-ms-flex-preferred-size:0;flex-grow:1;flex-basis:0}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:space-between;align-items:center;padding:.5rem 1rem;display:-ms-flexbox;display:flex;position:relative}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:space-between;align-items:center;display:-ms-flexbox;display:flex}.navbar-brand{font-size:1.25rem;line-height:inherit;white-space:nowrap;margin-right:1rem;padding-top:.3125rem;padding-bottom:.3125rem;display:inline-block}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{-ms-flex-direction:column;flex-direction:column;margin-bottom:0;padding-left:0;list-style:none;display:-ms-flexbox;display:flex}.navbar-nav .nav-link{padding-left:0;padding-right:0}.navbar-nav .dropdown-menu{float:none;position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;display:inline-block}.navbar-collapse{-ms-flex-positive:1;-ms-flex-preferred-size:100%;flex-grow:1;flex-basis:100%;align-items:center}.navbar-toggler{background-color:#0000;border:1px solid #0000;border-radius:.25rem;padding:.25rem .75rem;font-size:1.25rem;line-height:1}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat;display:inline-block}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-left:0;padding-right:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row;flex-flow:row;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{-ms-flex-preferred-size:auto;flex-basis:auto;display:-ms-flexbox!important;display:flex!important}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-left:0;padding-right:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row;flex-flow:row;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{-ms-flex-preferred-size:auto;flex-basis:auto;display:-ms-flexbox!important;display:flex!important}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-left:0;padding-right:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row;flex-flow:row;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{-ms-flex-preferred-size:auto;flex-basis:auto;display:-ms-flexbox!important;display:flex!important}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-left:0;padding-right:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row;flex-flow:row;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{-ms-flex-preferred-size:auto;flex-basis:auto;display:-ms-flexbox!important;display:flex!important}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row;flex-flow:row;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-left:0;padding-right:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{-ms-flex-preferred-size:auto;flex-basis:auto;display:-ms-flexbox!important;display:flex!important}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:#000000e6}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:#000000e6}.navbar-light .navbar-nav .nav-link{color:#00000080}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:#000000b3}.navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:#000000e6}.navbar-light .navbar-toggler{color:#00000080;border-color:#0000001a}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#00000080}.navbar-light .navbar-text a{color:#000000e6}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:#000000e6}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#ffffff80}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:#ffffffbf}.navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:#ffffff80;border-color:#ffffff1a}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#ffffff80}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid #00000020;border-radius:.25rem;-ms-flex-direction:column;flex-direction:column;display:-ms-flexbox;display:flex;position:relative}.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-left-radius:calc(.25rem - 1px);border-bottom-right-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{min-height:1px;-ms-flex:auto;flex:auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{background-color:#00000008;border-bottom:1px solid #00000020;margin-bottom:0;padding:.75rem 1.25rem}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{background-color:#00000008;border-top:1px solid #00000020;padding:.75rem 1.25rem}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{border-bottom:0;margin-bottom:-.75rem;margin-left:-.625rem;margin-right:-.625rem}.card-header-pills{margin-left:-.625rem;margin-right:-.625rem}.card-img-overlay{border-radius:calc(.25rem - 1px);padding:1.25rem;position:absolute;inset:0}.card-img,.card-img-bottom,.card-img-top{width:100%;-ms-flex-negative:0;flex-shrink:0}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-left-radius:calc(.25rem - 1px);border-bottom-right-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:wrap;flex-flow:wrap;margin-left:-15px;margin-right:-15px;display:-ms-flexbox;display:flex}.card-deck .card{-ms-flex:1 0;flex:1 0;margin-bottom:0;margin-left:15px;margin-right:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:wrap;flex-flow:wrap;display:-ms-flexbox;display:flex}.card-group>.card{-ms-flex:1 0;flex:1 0;margin-bottom:0}.card-group>.card+.card{border-left:0;margin-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;orphans:1;widows:1;column-gap:1.25rem}.card-columns .card{width:100%;display:inline-block}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{background-color:#e9ecef;border-radius:.25rem;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1rem;padding:.75rem 1rem;list-style:none;display:-ms-flexbox;display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;color:#6c757d;content:"/";padding-right:.5rem}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{border-radius:.25rem;padding-left:0;list-style:none;display:-ms-flexbox;display:flex}.page-link{color:#007bff;background-color:#fff;border:1px solid #dee2e6;margin-left:-1px;padding:.5rem .75rem;line-height:1.25;display:block;position:relative}.page-link:hover{z-index:2;color:#0056b3;background-color:#e9ecef;border-color:#dee2e6;text-decoration:none}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem #007bff40}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;margin-left:0}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:inline-block}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{border-radius:10rem;padding-left:.6em;padding-right:.6em}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem #007bff80}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem #6c757d80}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem #28a74580}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem #17a2b880}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem #ffc10780}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem #dc354580}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem #f8f9fa80}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem #343a4080}.jumbotron{background-color:#e9ecef;border-radius:.3rem;margin-bottom:2rem;padding:2rem 1rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{border-radius:0;padding-left:0;padding-right:0}.alert{border:1px solid #0000;border-radius:.25rem;margin-bottom:1rem;padding:.75rem 1.25rem;position:relative}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{z-index:2;color:inherit;padding:.75rem 1.25rem;position:absolute;top:0;right:0}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;background-color:#e9ecef;border-radius:.25rem;font-size:.75rem;line-height:0;display:-ms-flexbox;display:flex;overflow:hidden}.progress-bar{color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;-ms-flex-direction:column;flex-direction:column;justify-content:center;transition:width .6s;display:-ms-flexbox;display:flex;overflow:hidden}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,#ffffff26 25%,#0000 25% 50%,#ffffff26 50% 75%,#0000 75%,#0000);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{align-items:flex-start;display:-ms-flexbox;display:flex}.media-body{-ms-flex:1;flex:1}.list-group{border-radius:.25rem;-ms-flex-direction:column;flex-direction:column;margin-bottom:0;padding-left:0;display:-ms-flexbox;display:flex}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;background-color:#f8f9fa;text-decoration:none}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{background-color:#fff;border:1px solid #00000020;padding:.75rem 1.25rem;display:block;position:relative}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{border-top-width:1px;margin-top:-1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-top-right-radius:0;border-bottom-left-radius:.25rem}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-top-right-radius:0;border-bottom-left-radius:.25rem}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-top-right-radius:0;border-bottom-left-radius:.25rem}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-top-right-radius:0;border-bottom-left-radius:.25rem}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-top-right-radius:0;border-bottom-left-radius:.25rem}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;color:#000;text-shadow:0 1px #fff;opacity:.5;font-size:1.5rem;font-weight:700;line-height:1}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{background-color:#0000;border:0;padding:0}a.close.disabled{pointer-events:none}.toast{max-width:350px;opacity:0;background-color:#ffffffd9;background-clip:padding-box;border:1px solid #0000001a;border-radius:.25rem;-ms-flex-preferred-size:350px;flex-basis:350px;font-size:.875rem;box-shadow:0 .25rem .75rem #0000001a}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{opacity:1;display:block}.toast.hide{display:none}.toast-header{color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid #0000000d;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px);align-items:center;padding:.25rem .75rem;display:-ms-flexbox;display:flex}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow:hidden auto}.modal{z-index:1050;width:100%;height:100%;outline:0;display:none;position:fixed;top:0;left:0;overflow:hidden}.modal-dialog{width:auto;pointer-events:none;margin:.5rem;position:relative}.modal.fade .modal-dialog{transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translateY(-50px);transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{max-height:calc(100% - 1rem);display:-ms-flexbox;display:flex}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{min-height:calc(100% - 1rem);align-items:center;display:-ms-flexbox;display:flex}.modal-dialog-centered:before{height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:"";display:block}.modal-dialog-centered.modal-dialog-scrollable{height:100%;-ms-flex-direction:column;flex-direction:column;justify-content:center}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid #0003;border-radius:.3rem;outline:0;-ms-flex-direction:column;flex-direction:column;display:-ms-flexbox;display:flex;position:relative}.modal-backdrop{z-index:1040;width:100vw;height:100vh;background-color:#000;position:fixed;top:0;left:0}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px);justify-content:space-between;align-items:flex-start;padding:1rem;display:-ms-flexbox;display:flex}.modal-header .close{margin:-1rem -1rem -1rem auto;padding:1rem}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{-ms-flex:auto;flex:auto;padding:1rem;position:relative}.modal-footer{border-top:1px solid #dee2e6;border-bottom-left-radius:calc(.3rem - 1px);border-bottom-right-radius:calc(.3rem - 1px);-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:flex-end;align-items:center;padding:.75rem;display:-ms-flexbox;display:flex}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{width:50px;height:50px;position:absolute;top:-9999px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{z-index:1070;text-align:left;text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;word-wrap:break-word;opacity:0;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:.875rem;font-style:normal;font-weight:400;line-height:1.5;text-decoration:none;display:block;position:absolute}.tooltip.show{opacity:.9}.tooltip .arrow{width:.8rem;height:.4rem;display:block;position:absolute}.tooltip .arrow:before{content:"";border-style:solid;border-color:#0000;position:absolute}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{border-width:.4rem .4rem 0;border-top-color:#000;top:0}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{width:.4rem;height:.8rem;left:0}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{border-width:.4rem .4rem .4rem 0;border-right-color:#000;right:0}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{border-width:0 .4rem .4rem;border-bottom-color:#000;bottom:0}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{width:.4rem;height:.8rem;right:0}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{border-width:.4rem 0 .4rem .4rem;border-left-color:#000;left:0}.tooltip-inner{max-width:200px;color:#fff;text-align:center;background-color:#000;border-radius:.25rem;padding:.25rem .5rem}.popover{z-index:1060;max-width:276px;text-align:left;text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid #0003;border-radius:.3rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:.875rem;font-style:normal;font-weight:400;line-height:1.5;text-decoration:none;display:block;position:absolute;top:0;left:0}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;display:block;position:absolute}.popover .arrow:after,.popover .arrow:before{content:"";border-style:solid;border-color:#0000;display:block;position:absolute}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{border-width:.5rem .5rem 0;border-top-color:#00000040;bottom:0}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{border-width:.5rem .5rem 0;border-top-color:#fff;bottom:1px}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{width:.5rem;height:1rem;margin:.3rem 0;left:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{border-width:.5rem .5rem .5rem 0;border-right-color:#00000040;left:0}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{border-width:.5rem .5rem .5rem 0;border-right-color:#fff;left:1px}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{border-width:0 .5rem .5rem;border-bottom-color:#00000040;top:0}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{border-width:0 .5rem .5rem;border-bottom-color:#fff;top:1px}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{width:1rem;content:"";border-bottom:1px solid #f7f7f7;margin-left:-.5rem;display:block;position:absolute;top:0;left:50%}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{width:.5rem;height:1rem;margin:.3rem 0;right:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040;right:0}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{border-width:.5rem 0 .5rem .5rem;border-left-color:#fff;right:1px}.popover-header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px);margin-bottom:0;padding:.5rem .75rem;font-size:1rem}.popover-header:empty{display:none}.popover-body{color:#212529;padding:.5rem .75rem}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{width:100%;position:relative;overflow:hidden}.carousel-inner:after{clear:both;content:"";display:block}.carousel-item{float:left;width:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin-right:-100%;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out;display:none;position:relative}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translate(100%);transform:translate(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translate(-100%);transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{z-index:1;width:15%;color:#fff;text-align:center;opacity:.5;background:0 0;border:0;justify-content:center;align-items:center;padding:0;transition:opacity .15s;display:-ms-flexbox;display:flex;position:absolute;top:0;bottom:0}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;opacity:.9;outline:0;text-decoration:none}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{width:20px;height:20px;background:50%/100% 100% no-repeat;display:inline-block}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{z-index:15;justify-content:center;margin-left:15%;margin-right:15%;padding-left:0;list-style:none;display:-ms-flexbox;display:flex;position:absolute;bottom:0;left:0;right:0}.carousel-indicators li{box-sizing:content-box;width:30px;height:3px;text-indent:-999px;cursor:pointer;opacity:.5;background-color:#fff;background-clip:padding-box;border-top:10px solid #0000;border-bottom:10px solid #0000;-ms-flex:0 auto;flex:0 auto;margin-left:3px;margin-right:3px;transition:opacity .6s}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{z-index:10;color:#fff;text-align:center;padding-top:20px;padding-bottom:20px;position:absolute;bottom:20px;left:15%;right:15%}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid;border-right-color:#0000;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite;display:inline-block}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{width:2rem;height:2rem;vertical-align:-.125em;opacity:0;background-color:currentColor;border-radius:50%;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite;display:inline-block}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:#0000!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-left-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{clear:both;content:"";display:block}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{width:100%;padding:0;display:block;position:relative;overflow:hidden}.embed-responsive:before{content:"";display:block}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{width:100%;height:100%;border:0;position:absolute;top:0;bottom:0;left:0}.embed-responsive-21by9:before{padding-top:42.8571%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:auto!important;flex:auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:auto!important;flex:auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:auto!important;flex:auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:auto!important;flex:auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:auto!important;flex:auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{z-index:1030;position:fixed;top:0;left:0;right:0}.fixed-bottom{z-index:1030;position:fixed;bottom:0;left:0;right:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{z-index:1020;position:-webkit-sticky;position:sticky;top:0}}.sr-only{width:1px;height:1px;clip:rect(0,0,0,0);white-space:nowrap;border:0;margin:-1px;padding:0;position:absolute;overflow:hidden}.sr-only-focusable:active,.sr-only-focusable:focus{width:auto;height:auto;clip:auto;white-space:normal;position:static;overflow:visible}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{z-index:1;pointer-events:auto;content:"";background-color:#0000;position:absolute;inset:0}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:#00000080!important}.text-white-50{color:#ffffff80!important}.text-hide{font:0/0 a;color:#0000;text-shadow:none;background-color:#0000;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title)")"}pre{white-space:pre-wrap!important}blockquote,pre{page-break-inside:avoid;border:1px solid #adb5bd}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body,.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}@-webkit-keyframes bs-notify-fadeOut{0%{opacity:.9}to{opacity:0}}@-o-keyframes bs-notify-fadeOut{0%{opacity:.9}to{opacity:0}}@keyframes bs-notify-fadeOut{0%{opacity:.9}to{opacity:0}}.bootstrap-select>select.bs-select-hidden,select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px�;vertical-align:middle}.bootstrap-select>.dropdown-toggle{width:100%;text-align:right;white-space:nowrap;justify-content:space-between;align-items:center;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;position:relative}.bootstrap-select>.dropdown-toggle:after{margin-top:-1px}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:#999}.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:hover{color:#ffffff80}.bootstrap-select>select{border:none;bottom:0;left:50%;width:.5px!important;height:100%!important;opacity:0!important;z-index:0!important;padding:0!important;display:block!important;position:absolute!important}.bootstrap-select>select.mobile-device{top:0;left:0;width:100%!important;z-index:2!important;display:block!important}.bootstrap-select.is-invalid .dropdown-toggle,.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle,.was-validated .bootstrap-select select:invalid+.dropdown-toggle{border-color:#b94a48}.bootstrap-select.is-valid .dropdown-toggle,.was-validated .bootstrap-select select:valid+.dropdown-toggle{border-color:#28a745}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus,.bootstrap-select>select.mobile-device:focus+.dropdown-toggle{outline-offset:-2px;outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important}.bootstrap-select.form-control{height:auto;border:none;margin-bottom:0;padding:0}:not(.input-group)>.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{float:none;z-index:auto}.form-inline .bootstrap-select,.form-inline .bootstrap-select.form-control:not([class*=col-]){width:auto}.bootstrap-select:not(.input-group-btn),.bootstrap-select[class*=col-]{float:none;margin-left:0;display:inline-block}.bootstrap-select.dropdown-menu-right,.bootstrap-select[class*=col-].dropdown-menu-right,.row .bootstrap-select[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select,.form-horizontal .bootstrap-select,.form-inline .bootstrap-select{margin-bottom:0}.form-group-lg .bootstrap-select.form-control,.form-group-sm .bootstrap-select.form-control{padding:0}.form-group-lg .bootstrap-select.form-control .dropdown-toggle,.form-group-sm .bootstrap-select.form-control .dropdown-toggle{height:100%;font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-lg .dropdown-toggle,.bootstrap-select.form-control-sm .dropdown-toggle{font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-sm .dropdown-toggle{padding:.25rem .5rem}.bootstrap-select.form-control-lg .dropdown-toggle{padding:.5rem 1rem}.form-inline .bootstrap-select .form-control{width:100%}.bootstrap-select.disabled,.bootstrap-select>.disabled{cursor:not-allowed}.bootstrap-select.disabled:focus,.bootstrap-select>.disabled:focus{outline:0!important}.bootstrap-select.bs-container{position:absolute;top:0;left:0;height:0!important;padding:0!important}.bootstrap-select.bs-container .dropdown-menu{z-index:1060}.bootstrap-select .dropdown-toggle .filter-option{float:left;height:100%;width:100%;text-align:left;-webkit-box-flex:0;-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 auto;position:static;top:0;left:0;overflow:hidden}.bs3.bootstrap-select .dropdown-toggle .filter-option{padding-right:inherit}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option{padding-top:inherit;padding-bottom:inherit;padding-left:inherit;float:none;position:absolute}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner{padding-right:inherit}.bootstrap-select .dropdown-toggle .filter-option-inner-inner{overflow:hidden}.bootstrap-select .dropdown-toggle .filter-expand{float:left;overflow:hidden;width:0!important;opacity:0!important}.bootstrap-select .dropdown-toggle .caret{vertical-align:middle;margin-top:-2px;position:absolute;top:50%;right:12px}.input-group .bootstrap-select.form-control .dropdown-toggle{border-radius:inherit}.bootstrap-select[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .dropdown-menu>.inner:focus{outline:0!important}.bootstrap-select .dropdown-menu.inner{float:none;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;margin:0;padding:0;position:static}.bootstrap-select .dropdown-menu li{position:relative}.bootstrap-select .dropdown-menu li.active small{color:#ffffff80!important}.bootstrap-select .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select .dropdown-menu li a.opt{padding-left:2.25em;position:relative}.bootstrap-select .dropdown-menu li a span.check-mark{display:none}.bootstrap-select .dropdown-menu li a span.text{display:inline-block}.bootstrap-select .dropdown-menu li small{padding-left:.5em}.bootstrap-select .dropdown-menu .notify{width:96%;min-height:26px;pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:#f5f5f5;border:1px solid #e3e3e3;margin:0 2%;padding:3px 5px;position:absolute;bottom:5px;-webkit-box-shadow:inset 0 1px 1px #0000000d;box-shadow:inset 0 1px 1px #0000000d}.bootstrap-select .dropdown-menu .notify.fadeOut{-webkit-animation:bs-notify-fadeOut .3s linear .75s forwards;-o-animation:bs-notify-fadeOut .3s linear .75s forwards;animation:bs-notify-fadeOut .3s linear .75s forwards}.bootstrap-select .no-results{white-space:nowrap;background:#f5f5f5;margin:0 5px;padding:3px}.bootstrap-select.fit-width .dropdown-toggle .filter-option{padding:0;display:inline;position:static}.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner{display:inline}.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before{content:" "}.bootstrap-select.fit-width .dropdown-toggle .caret{margin-top:-1px;position:static;top:auto}.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark{display:inline-block;position:absolute;top:5px;right:15px}.bootstrap-select.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select .bs-ok-default:after{content:"";width:.5em;height:1em;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;border-style:solid;border-width:0 .26em .26em 0;display:block;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before{content:"";border-bottom:7px solid #ccc3;border-left:7px solid #0000;border-right:7px solid #0000;display:none;position:absolute;bottom:-4px;left:9px}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after{content:"";border-bottom:6px solid #fff;border-left:6px solid #0000;border-right:6px solid #0000;display:none;position:absolute;bottom:-4px;left:10px}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before{border-top:7px solid #ccc3;border-bottom:0;top:-4px;bottom:auto}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after{border-top:6px solid #fff;border-bottom:0;top:-4px;bottom:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before{left:auto;right:12px}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after{left:auto;right:13px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:before,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{width:100%;float:none;margin-bottom:0}@font-face{font-family:FontAwesome;src:url(fontawesome-webfont.3981e506.eot);src:url(fontawesome-webfont.3981e506.eot#iefix&v=4.7.0)format("embedded-opentype"),url(fontawesome-webfont.58488e7e.woff2)format("woff2"),url(fontawesome-webfont.ed962b83.woff)format("woff"),url(fontawesome-webfont.0caf0c90.ttf)format("truetype"),url(fontawesome-webfont.a9323ae9.svg#fontawesomeregular)format("svg");font-weight:400;font-style:normal}.fa{font:14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block}.fa-lg{vertical-align:-15%;font-size:1.33333em;line-height:.75em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{margin-left:2.14286em;padding-left:0;list-style-type:none}.fa-ul>li{position:relative}.fa-li{width:2.14286em;text-align:center;position:absolute;top:.142857em;left:-2.14286em}.fa-li.fa-lg{left:-1.85714em}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8,end) infinite;animation:fa-spin 1s steps(8,end) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{width:2em;height:2em;vertical-align:middle;line-height:2em;display:inline-block;position:relative}.fa-stack-1x,.fa-stack-2x{width:100%;text-align:center;position:absolute;left:0}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{width:1px;height:1px;clip:rect(0,0,0,0);border:0;margin:-1px;padding:0;position:absolute;overflow:hidden}.sr-only-focusable:active,.sr-only-focusable:focus{width:auto;height:auto;clip:auto;margin:0;position:static;overflow:visible}.mfp-bg{width:100%;height:100%;z-index:1042;opacity:.8;background:#0b0b0b;position:fixed;top:0;left:0;overflow:hidden}.mfp-wrap{width:100%;height:100%;z-index:1043;-webkit-backface-visibility:hidden;position:fixed;top:0;left:0;outline:none!important}.mfp-container{text-align:center;width:100%;height:100%;box-sizing:border-box;padding:0 8px;position:absolute;top:0;left:0}.mfp-container:before{content:"";height:100%;vertical-align:middle;display:inline-block}.mfp-align-top .mfp-container:before{display:none}.mfp-content{vertical-align:middle;text-align:left;z-index:1045;margin:0 auto;display:inline-block;position:relative}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.mfp-preloader{color:#ccc;width:auto;text-align:center;z-index:1044;margin-top:-.8em;position:absolute;top:50%;left:8px;right:8px}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader,.mfp-s-error .mfp-content{display:none}button.mfp-close,button.mfp-arrow{cursor:pointer;-webkit-appearance:none;z-index:1046;box-shadow:none;touch-action:manipulation;background:0 0;border:0;outline:none;padding:0;display:block;overflow:visible}button::-moz-focus-inner{border:0;padding:0}.mfp-close{width:44px;height:44px;text-align:center;opacity:.65;color:#fff;padding:0 0 18px 10px;font-family:Arial,Baskerville,monospace;font-size:28px;font-style:normal;line-height:44px;text-decoration:none;position:absolute;top:0;right:0}.mfp-close:hover,.mfp-close:focus{opacity:1}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#333}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#fff;text-align:right;width:100%;padding-right:6px;right:-6px}.mfp-counter{color:#ccc;white-space:nowrap;font-size:12px;line-height:18px;position:absolute;top:0;right:0}.mfp-arrow{opacity:.65;width:90px;height:110px;-webkit-tap-highlight-color:transparent;margin:-55px 0 0;padding:0;position:absolute;top:50%}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1}.mfp-arrow:before,.mfp-arrow:after{content:"";width:0;height:0;border:inset #0000;margin-top:35px;margin-left:35px;display:block;position:absolute;top:0;left:0}.mfp-arrow:after{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before{opacity:.7;border-top-width:21px;border-bottom-width:21px}.mfp-arrow-left{left:0}.mfp-arrow-left:after{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before{border-right:27px solid #3f3f3f;margin-left:25px}.mfp-arrow-right{right:0}.mfp-arrow-right:after{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before{border-left:27px solid #3f3f3f}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{width:100%;max-width:900px;line-height:0}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;padding-top:56.25%;overflow:hidden}.mfp-iframe-scaler iframe{width:100%;height:100%;background:#000;display:block;position:absolute;top:0;left:0;box-shadow:0 0 8px #0009}img.mfp-img{width:auto;max-width:100%;height:auto;box-sizing:border-box;margin:0 auto;padding:40px 0;line-height:0;display:block}.mfp-figure{line-height:0}.mfp-figure:after{content:"";width:auto;height:auto;z-index:-1;background:#444;display:block;position:absolute;inset:40px 0;box-shadow:0 0 8px #0009}.mfp-figure small{color:#bdbdbd;font-size:12px;line-height:14px;display:block}.mfp-figure figure{margin:0}.mfp-bottom-bar{width:100%;cursor:auto;margin-top:-36px;position:absolute;top:100%;left:0}.mfp-title{text-align:left;color:#f3f3f3;word-wrap:break-word;padding-right:36px;line-height:18px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{margin-left:5px;display:inline}.mfp-img-mobile .mfp-bottom-bar{box-sizing:border-box;background:#0009;margin:0;padding:3px 5px;position:fixed;top:auto;bottom:0}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{top:3px;right:5px}.mfp-img-mobile .mfp-close{width:35px;height:35px;text-align:center;background:#0009;padding:0;line-height:35px;position:fixed;top:0;right:0}}@media (max-width:900px){.mfp-arrow{-webkit-transform:scale(.75);transform:scale(.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{width:100%;z-index:1;display:none}.owl-carousel .owl-stage{-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden;position:relative}.owl-carousel .owl-stage:after{content:".";clear:both;visibility:hidden;height:0;line-height:0;display:block}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate(0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate(0,0);-moz-transform:translate(0,0);-ms-transform:translate(0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{width:100%;display:block}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-khtml-user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{color:inherit;font:inherit;background:0 0;border:none;padding:0!important}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s}.owl-carousel .owl-item .owl-lazy:not([src]),.owl-carousel .owl-item .owl-lazy[src^=""]{max-height:0}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{height:100%;background:#000;position:relative}.owl-carousel .owl-video-play-icon{height:80px;width:80px;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;background:url(owl.video.play.e7a23fb2.png) no-repeat;margin-top:-40px;margin-left:-40px;transition:transform .1s;position:absolute;top:50%;left:50%}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3);transform:scale(1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;transition:opacity .4s}.owl-carousel .owl-video-frame{z-index:1;height:100%;width:100%;position:relative}.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#fff;cursor:pointer;background:#d6d6d6;border-radius:3px;margin:5px;padding:4px 7px;font-size:14px;display:inline-block}.owl-theme .owl-nav [class*=owl-]:hover{color:#fff;background:#869791;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{zoom:1;display:inline-block}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;-webkit-backface-visibility:visible;background:#d6d6d6;border-radius:30px;margin:5px 7px;transition:opacity .2s;display:block}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791}.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{float:right;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80);font-size:20px;font-weight:700;line-height:1;position:relative;top:-.3em;right:-.3em}.toast-close-button:focus,.toast-close-button:hover{color:#000;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40);text-decoration:none}.rtl .toast-close-button{float:left;left:-.3em;right:.3em}button.toast-close-button{cursor:pointer;-webkit-appearance:none;background:0 0;border:0;padding:0}.toast-top-center{width:100%;top:0;right:0}.toast-bottom-center{width:100%;bottom:0;right:0}.toast-top-full-width{width:100%;top:0;right:0}.toast-bottom-full-width{width:100%;bottom:0;right:0}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{bottom:12px;right:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{z-index:999999;pointer-events:none;position:fixed}#toast-container *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#toast-container>div{pointer-events:auto;width:300px;color:#fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80);background-position:15px;background-repeat:no-repeat;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin:0 0 6px;padding:15px 15px 15px 50px;position:relative;overflow:hidden;-webkit-box-shadow:0 0 12px #999;-moz-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999}#toast-container>div.rtl{direction:rtl;background-position:right 15px center;padding:15px 50px 15px 15px}#toast-container>div:hover{opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer;-webkit-box-shadow:0 0 12px #000;-moz-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000}#toast-container>.toast-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}#toast-container>.toast-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}#toast-container>.toast-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}#toast-container>.toast-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{height:4px;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40);background-color:#000;position:absolute;bottom:0;left:0}@media (max-width:240px){#toast-container>div{width:11em;padding:8px 8px 8px 50px}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{top:-.2em;right:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media (min-width:241px) and (max-width:480px){#toast-container>div{width:18em;padding:8px 8px 8px 50px}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{top:-.2em;right:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media (min-width:481px) and (max-width:768px){#toast-container>div{width:25em;padding:15px 15px 15px 50px}#toast-container>div.rtl{padding:15px 50px 15px 15px}}:root{--animate-duration:1s;--animate-delay:1s;--animate-repeat:1}.animate__animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-duration:var(--animate-duration);animation-duration:var(--animate-duration);-webkit-animation-fill-mode:both;animation-fill-mode:both}.animate__animated.animate__infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animate__animated.animate__repeat-1{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-iteration-count:var(--animate-repeat);animation-iteration-count:var(--animate-repeat)}.animate__animated.animate__repeat-2{-webkit-animation-iteration-count:2;animation-iteration-count:2;-webkit-animation-iteration-count:calc(var(--animate-repeat)*2);animation-iteration-count:calc(var(--animate-repeat)*2)}.animate__animated.animate__repeat-3{-webkit-animation-iteration-count:3;animation-iteration-count:3;-webkit-animation-iteration-count:calc(var(--animate-repeat)*3);animation-iteration-count:calc(var(--animate-repeat)*3)}.animate__animated.animate__delay-1s{-webkit-animation-delay:1s;animation-delay:1s;-webkit-animation-delay:var(--animate-delay);animation-delay:var(--animate-delay)}.animate__animated.animate__delay-2s{-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-delay:calc(var(--animate-delay)*2);animation-delay:calc(var(--animate-delay)*2)}.animate__animated.animate__delay-3s{-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-delay:calc(var(--animate-delay)*3);animation-delay:calc(var(--animate-delay)*3)}.animate__animated.animate__delay-4s{-webkit-animation-delay:4s;animation-delay:4s;-webkit-animation-delay:calc(var(--animate-delay)*4);animation-delay:calc(var(--animate-delay)*4)}.animate__animated.animate__delay-5s{-webkit-animation-delay:5s;animation-delay:5s;-webkit-animation-delay:calc(var(--animate-delay)*5);animation-delay:calc(var(--animate-delay)*5)}.animate__animated.animate__faster{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-duration:calc(var(--animate-duration)/2);animation-duration:calc(var(--animate-duration)/2)}.animate__animated.animate__fast{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-duration:calc(var(--animate-duration)*.8);animation-duration:calc(var(--animate-duration)*.8)}.animate__animated.animate__slow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2)}.animate__animated.animate__slower{-webkit-animation-duration:3s;animation-duration:3s;-webkit-animation-duration:calc(var(--animate-duration)*3);animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animate__animated{-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}.animate__animated[class*=Out]{opacity:0}}@-webkit-keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:matrix(1,0,0,1.1,0,-30);transform:matrix(1,0,0,1.1,0,-30)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:matrix(1,0,0,1.05,0,-15);transform:matrix(1,0,0,1.05,0,-15)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:scaleY(.95);transform:scaleY(.95)}90%{-webkit-transform:matrix(1,0,0,1.02,0,-4);transform:matrix(1,0,0,1.02,0,-4)}}@keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:matrix(1,0,0,1.1,0,-30);transform:matrix(1,0,0,1.1,0,-30)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:matrix(1,0,0,1.05,0,-15);transform:matrix(1,0,0,1.05,0,-15)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:scaleY(.95);transform:scaleY(.95)}90%{-webkit-transform:matrix(1,0,0,1.02,0,-4);transform:matrix(1,0,0,1.02,0,-4)}}.animate__bounce{-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-animation-name:bounce;animation-name:bounce}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.animate__flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale(1.25,.75);transform:scale(1.25,.75)}40%{-webkit-transform:scale(.75,1.25);transform:scale(.75,1.25)}50%{-webkit-transform:scale(1.15,.85);transform:scale(1.15,.85)}65%{-webkit-transform:scale(.95,1.05);transform:scale(.95,1.05)}75%{-webkit-transform:scale(1.05,.95);transform:scale(1.05,.95)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale(1.25,.75);transform:scale(1.25,.75)}40%{-webkit-transform:scale(.75,1.25);transform:scale(.75,1.25)}50%{-webkit-transform:scale(1.15,.85);transform:scale(1.15,.85)}65%{-webkit-transform:scale(.95,1.05);transform:scale(.95,1.05)}75%{-webkit-transform:scale(1.05,.95);transform:scale(1.05,.95)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate(-10px);transform:translate(-10px)}20%,40%,60%,80%{-webkit-transform:translate(10px);transform:translate(10px)}}@keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate(-10px);transform:translate(-10px)}20%,40%,60%,80%{-webkit-transform:translate(10px);transform:translate(10px)}}.animate__shakeX{-webkit-animation-name:shakeX;animation-name:shakeX}@-webkit-keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translateY(-10px);transform:translateY(-10px)}20%,40%,60%,80%{-webkit-transform:translateY(10px);transform:translateY(10px)}}@keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translateY(-10px);transform:translateY(-10px)}20%,40%,60%,80%{-webkit-transform:translateY(10px);transform:translateY(10px)}}.animate__shakeY{-webkit-animation-name:shakeY;animation-name:shakeY}@-webkit-keyframes headShake{0%{-webkit-transform:translate(0);transform:translate(0)}6.5%{-webkit-transform:translate(-6px)rotateY(-9deg);transform:translate(-6px)rotateY(-9deg)}18.5%{-webkit-transform:translate(5px)rotateY(7deg);transform:translate(5px)rotateY(7deg)}31.5%{-webkit-transform:translate(-3px)rotateY(-5deg);transform:translate(-3px)rotateY(-5deg)}43.5%{-webkit-transform:translate(2px)rotateY(3deg);transform:translate(2px)rotateY(3deg)}50%{-webkit-transform:translate(0);transform:translate(0)}}@keyframes headShake{0%{-webkit-transform:translate(0);transform:translate(0)}6.5%{-webkit-transform:translate(-6px)rotateY(-9deg);transform:translate(-6px)rotateY(-9deg)}18.5%{-webkit-transform:translate(5px)rotateY(7deg);transform:translate(5px)rotateY(7deg)}31.5%{-webkit-transform:translate(-3px)rotateY(-5deg);transform:translate(-3px)rotateY(-5deg)}43.5%{-webkit-transform:translate(2px)rotateY(3deg);transform:translate(2px)rotateY(3deg)}50%{-webkit-transform:translate(0);transform:translate(0)}}.animate__headShake{-webkit-animation-name:headShake;animation-name:headShake;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.animate__swing{-webkit-transform-origin:top;transform-origin:top;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9)rotate(-3deg);transform:scale3d(.9,.9,.9)rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1)rotate(3deg);transform:scale3d(1.1,1.1,1.1)rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1)rotate(-3deg);transform:scale3d(1.1,1.1,1.1)rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9)rotate(-3deg);transform:scale3d(.9,.9,.9)rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1)rotate(3deg);transform:scale3d(1.1,1.1,1.1)rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1)rotate(-3deg);transform:scale3d(1.1,1.1,1.1)rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate(-25%)rotate(-5deg);transform:translate(-25%)rotate(-5deg)}30%{-webkit-transform:translate(20%)rotate(3deg);transform:translate(20%)rotate(3deg)}45%{-webkit-transform:translate(-15%)rotate(-3deg);transform:translate(-15%)rotate(-3deg)}60%{-webkit-transform:translate(10%)rotate(2deg);transform:translate(10%)rotate(2deg)}75%{-webkit-transform:translate(-5%)rotate(-1deg);transform:translate(-5%)rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate(-25%)rotate(-5deg);transform:translate(-25%)rotate(-5deg)}30%{-webkit-transform:translate(20%)rotate(3deg);transform:translate(20%)rotate(3deg)}45%{-webkit-transform:translate(-15%)rotate(-3deg);transform:translate(-15%)rotate(-3deg)}60%{-webkit-transform:translate(10%)rotate(2deg);transform:translate(10%)rotate(2deg)}75%{-webkit-transform:translate(-5%)rotate(-1deg);transform:translate(-5%)rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skew(-12.5deg)skewY(-12.5deg);transform:skew(-12.5deg)skewY(-12.5deg)}33.3%{-webkit-transform:skew(6.25deg)skewY(6.25deg);transform:skew(6.25deg)skewY(6.25deg)}44.4%{-webkit-transform:skew(-3.125deg)skewY(-3.125deg);transform:skew(-3.125deg)skewY(-3.125deg)}55.5%{-webkit-transform:skew(1.5625deg)skewY(1.5625deg);transform:skew(1.5625deg)skewY(1.5625deg)}66.6%{-webkit-transform:skew(-.78125deg)skewY(-.78125deg);transform:skew(-.78125deg)skewY(-.78125deg)}77.7%{-webkit-transform:skew(.390625deg)skewY(.390625deg);transform:skew(.390625deg)skewY(.390625deg)}88.8%{-webkit-transform:skew(-.195313deg)skewY(-.195313deg);transform:skew(-.195313deg)skewY(-.195313deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skew(-12.5deg)skewY(-12.5deg);transform:skew(-12.5deg)skewY(-12.5deg)}33.3%{-webkit-transform:skew(6.25deg)skewY(6.25deg);transform:skew(6.25deg)skewY(6.25deg)}44.4%{-webkit-transform:skew(-3.125deg)skewY(-3.125deg);transform:skew(-3.125deg)skewY(-3.125deg)}55.5%{-webkit-transform:skew(1.5625deg)skewY(1.5625deg);transform:skew(1.5625deg)skewY(1.5625deg)}66.6%{-webkit-transform:skew(-.78125deg)skewY(-.78125deg);transform:skew(-.78125deg)skewY(-.78125deg)}77.7%{-webkit-transform:skew(.390625deg)skewY(.390625deg);transform:skew(.390625deg)skewY(.390625deg)}88.8%{-webkit-transform:skew(-.195313deg)skewY(-.195313deg);transform:skew(-.195313deg)skewY(-.195313deg)}}.animate__jello{-webkit-transform-origin:50%;transform-origin:50%;-webkit-animation-name:jello;animation-name:jello}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.animate__heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-duration:calc(var(--animate-duration)*1.3);animation-duration:calc(var(--animate-duration)*1.3);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes backInDown{0%{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,0,-1200);transform:matrix(.7,0,0,.7,0,-1200)}80%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes backInDown{0%{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,0,-1200);transform:matrix(.7,0,0,.7,0,-1200)}80%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__backInDown{-webkit-animation-name:backInDown;animation-name:backInDown}@-webkit-keyframes backInLeft{0%{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,-2000,0);transform:matrix(.7,0,0,.7,-2000,0)}80%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes backInLeft{0%{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,-2000,0);transform:matrix(.7,0,0,.7,-2000,0)}80%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__backInLeft{-webkit-animation-name:backInLeft;animation-name:backInLeft}@-webkit-keyframes backInRight{0%{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,2000,0);transform:matrix(.7,0,0,.7,2000,0)}80%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes backInRight{0%{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,2000,0);transform:matrix(.7,0,0,.7,2000,0)}80%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__backInRight{-webkit-animation-name:backInRight;animation-name:backInRight}@-webkit-keyframes backInUp{0%{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,0,1200);transform:matrix(.7,0,0,.7,0,1200)}80%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes backInUp{0%{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,0,1200);transform:matrix(.7,0,0,.7,0,1200)}80%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__backInUp{-webkit-animation-name:backInUp;animation-name:backInUp}@-webkit-keyframes backOutDown{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,0,700);transform:matrix(.7,0,0,.7,0,700)}}@keyframes backOutDown{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,0,700);transform:matrix(.7,0,0,.7,0,700)}}.animate__backOutDown{-webkit-animation-name:backOutDown;animation-name:backOutDown}@-webkit-keyframes backOutLeft{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,-2000,0);transform:matrix(.7,0,0,.7,-2000,0)}}@keyframes backOutLeft{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,-2000,0);transform:matrix(.7,0,0,.7,-2000,0)}}.animate__backOutLeft{-webkit-animation-name:backOutLeft;animation-name:backOutLeft}@-webkit-keyframes backOutRight{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,2000,0);transform:matrix(.7,0,0,.7,2000,0)}}@keyframes backOutRight{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,2000,0);transform:matrix(.7,0,0,.7,2000,0)}}.animate__backOutRight{-webkit-animation-name:backOutRight;animation-name:backOutRight}@-webkit-keyframes backOutUp{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,0,-700);transform:matrix(.7,0,0,.7,0,-700)}}@keyframes backOutUp{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}20%{opacity:.7;-webkit-transform:scale(.7);transform:scale(.7)}to{opacity:.7;-webkit-transform:matrix(.7,0,0,.7,0,-700);transform:matrix(.7,0,0,.7,0,-700)}}.animate__backOutUp{-webkit-animation-name:backOutUp;animation-name:backOutUp}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:matrix(1,0,0,3,0,-3000);transform:matrix(1,0,0,3,0,-3000)}60%{opacity:1;-webkit-transform:matrix(1,0,0,.9,0,25);transform:matrix(1,0,0,.9,0,25)}75%{-webkit-transform:matrix(1,0,0,.95,0,-10);transform:matrix(1,0,0,.95,0,-10)}90%{-webkit-transform:matrix(1,0,0,.985,0,5);transform:matrix(1,0,0,.985,0,5)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:matrix(1,0,0,3,0,-3000);transform:matrix(1,0,0,3,0,-3000)}60%{opacity:1;-webkit-transform:matrix(1,0,0,.9,0,25);transform:matrix(1,0,0,.9,0,25)}75%{-webkit-transform:matrix(1,0,0,.95,0,-10);transform:matrix(1,0,0,.95,0,-10)}90%{-webkit-transform:matrix(1,0,0,.985,0,5);transform:matrix(1,0,0,.985,0,5)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:matrix(3,0,0,1,-3000,0);transform:matrix(3,0,0,1,-3000,0)}60%{opacity:1;-webkit-transform:translate(25px);transform:translate(25px)}75%{-webkit-transform:matrix(.98,0,0,1,-10,0);transform:matrix(.98,0,0,1,-10,0)}90%{-webkit-transform:matrix(.995,0,0,1,5,0);transform:matrix(.995,0,0,1,5,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:matrix(3,0,0,1,-3000,0);transform:matrix(3,0,0,1,-3000,0)}60%{opacity:1;-webkit-transform:translate(25px);transform:translate(25px)}75%{-webkit-transform:matrix(.98,0,0,1,-10,0);transform:matrix(.98,0,0,1,-10,0)}90%{-webkit-transform:matrix(.995,0,0,1,5,0);transform:matrix(.995,0,0,1,5,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:matrix(3,0,0,1,3000,0);transform:matrix(3,0,0,1,3000,0)}60%{opacity:1;-webkit-transform:translate(-25px);transform:translate(-25px)}75%{-webkit-transform:matrix(.98,0,0,1,10,0);transform:matrix(.98,0,0,1,10,0)}90%{-webkit-transform:matrix(.995,0,0,1,-5,0);transform:matrix(.995,0,0,1,-5,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:matrix(3,0,0,1,3000,0);transform:matrix(3,0,0,1,3000,0)}60%{opacity:1;-webkit-transform:translate(-25px);transform:translate(-25px)}75%{-webkit-transform:matrix(.98,0,0,1,10,0);transform:matrix(.98,0,0,1,10,0)}90%{-webkit-transform:matrix(.995,0,0,1,-5,0);transform:matrix(.995,0,0,1,-5,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:matrix(1,0,0,5,0,3000);transform:matrix(1,0,0,5,0,3000)}60%{opacity:1;-webkit-transform:matrix(1,0,0,.9,0,-20);transform:matrix(1,0,0,.9,0,-20)}75%{-webkit-transform:matrix(1,0,0,.95,0,10);transform:matrix(1,0,0,.95,0,10)}90%{-webkit-transform:matrix(1,0,0,.985,0,-5);transform:matrix(1,0,0,.985,0,-5)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:matrix(1,0,0,5,0,3000);transform:matrix(1,0,0,5,0,3000)}60%{opacity:1;-webkit-transform:matrix(1,0,0,.9,0,-20);transform:matrix(1,0,0,.9,0,-20)}75%{-webkit-transform:matrix(1,0,0,.95,0,10);transform:matrix(1,0,0,.95,0,10)}90%{-webkit-transform:matrix(1,0,0,.985,0,-5);transform:matrix(1,0,0,.985,0,-5)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.animate__bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:matrix(1,0,0,.985,0,10);transform:matrix(1,0,0,.985,0,10)}40%,45%{opacity:1;-webkit-transform:matrix(1,0,0,.9,0,-20);transform:matrix(1,0,0,.9,0,-20)}to{opacity:0;-webkit-transform:matrix(1,0,0,3,0,2000);transform:matrix(1,0,0,3,0,2000)}}@keyframes bounceOutDown{20%{-webkit-transform:matrix(1,0,0,.985,0,10);transform:matrix(1,0,0,.985,0,10)}40%,45%{opacity:1;-webkit-transform:matrix(1,0,0,.9,0,-20);transform:matrix(1,0,0,.9,0,-20)}to{opacity:0;-webkit-transform:matrix(1,0,0,3,0,2000);transform:matrix(1,0,0,3,0,2000)}}.animate__bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:matrix(.9,0,0,1,20,0);transform:matrix(.9,0,0,1,20,0)}to{opacity:0;-webkit-transform:matrix(2,0,0,1,-2000,0);transform:matrix(2,0,0,1,-2000,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:matrix(.9,0,0,1,20,0);transform:matrix(.9,0,0,1,20,0)}to{opacity:0;-webkit-transform:matrix(2,0,0,1,-2000,0);transform:matrix(2,0,0,1,-2000,0)}}.animate__bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:matrix(.9,0,0,1,-20,0);transform:matrix(.9,0,0,1,-20,0)}to{opacity:0;-webkit-transform:matrix(2,0,0,1,2000,0);transform:matrix(2,0,0,1,2000,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:matrix(.9,0,0,1,-20,0);transform:matrix(.9,0,0,1,-20,0)}to{opacity:0;-webkit-transform:matrix(2,0,0,1,2000,0);transform:matrix(2,0,0,1,2000,0)}}.animate__bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:matrix(1,0,0,.985,0,-10);transform:matrix(1,0,0,.985,0,-10)}40%,45%{opacity:1;-webkit-transform:matrix(1,0,0,.9,0,20);transform:matrix(1,0,0,.9,0,20)}to{opacity:0;-webkit-transform:matrix(1,0,0,3,0,-2000);transform:matrix(1,0,0,3,0,-2000)}}@keyframes bounceOutUp{20%{-webkit-transform:matrix(1,0,0,.985,0,-10);transform:matrix(1,0,0,.985,0,-10)}40%,45%{opacity:1;-webkit-transform:matrix(1,0,0,.9,0,20);transform:matrix(1,0,0,.9,0,20)}to{opacity:0;-webkit-transform:matrix(1,0,0,3,0,-2000);transform:matrix(1,0,0,3,0,-2000)}}.animate__bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate__fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate(-100%);transform:translate(-100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate(-100%);transform:translate(-100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate(-2000px);transform:translate(-2000px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate(-2000px);transform:translate(-2000px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate(100%);transform:translate(100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate(100%);transform:translate(100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate(2000px);transform:translate(2000px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate(2000px);transform:translate(2000px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate(-100%,-100%);transform:translate(-100%,-100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate(-100%,-100%);transform:translate(-100%,-100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopLeft{-webkit-animation-name:fadeInTopLeft;animation-name:fadeInTopLeft}@-webkit-keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate(100%,-100%);transform:translate(100%,-100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate(100%,-100%);transform:translate(100%,-100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopRight{-webkit-animation-name:fadeInTopRight;animation-name:fadeInTopRight}@-webkit-keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate(-100%,100%);transform:translate(-100%,100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate(-100%,100%);transform:translate(-100%,100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomLeft{-webkit-animation-name:fadeInBottomLeft;animation-name:fadeInBottomLeft}@-webkit-keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate(100%,100%);transform:translate(100%,100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate(100%,100%);transform:translate(100%,100%)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomRight{-webkit-animation-name:fadeInBottomRight;animation-name:fadeInBottomRight}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate__fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}.animate__fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}}.animate__fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate(-100%);transform:translate(-100%)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate(-100%);transform:translate(-100%)}}.animate__fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate(-2000px);transform:translate(-2000px)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate(-2000px);transform:translate(-2000px)}}.animate__fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate(100%);transform:translate(100%)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate(100%);transform:translate(100%)}}.animate__fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate(2000px);transform:translate(2000px)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate(2000px);transform:translate(2000px)}}.animate__fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}}.animate__fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}}.animate__fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate(-100%,-100%);transform:translate(-100%,-100%)}}@keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate(-100%,-100%);transform:translate(-100%,-100%)}}.animate__fadeOutTopLeft{-webkit-animation-name:fadeOutTopLeft;animation-name:fadeOutTopLeft}@-webkit-keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate(100%,-100%);transform:translate(100%,-100%)}}@keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate(100%,-100%);transform:translate(100%,-100%)}}.animate__fadeOutTopRight{-webkit-animation-name:fadeOutTopRight;animation-name:fadeOutTopRight}@-webkit-keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate(100%,100%);transform:translate(100%,100%)}}@keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate(100%,100%);transform:translate(100%,100%)}}.animate__fadeOutBottomRight{-webkit-animation-name:fadeOutBottomRight;animation-name:fadeOutBottomRight}@-webkit-keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate(-100%,100%);transform:translate(-100%,100%)}}@keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate(-100%,100%);transform:translate(-100%,100%)}}.animate__fadeOutBottomLeft{-webkit-animation-name:fadeOutBottomLeft;animation-name:fadeOutBottomLeft}@-webkit-keyframes flip{0%{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-transform:perspective(400px)scaleX(1)translateZ(0)rotateY(-1turn);transform:perspective(400px)scaleX(1)translateZ(0)rotateY(-1turn)}40%{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-transform:perspective(400px)scaleX(1)translateZ(150px)rotateY(-190deg);transform:perspective(400px)scaleX(1)translateZ(150px)rotateY(-190deg)}50%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:perspective(400px)scaleX(1)translateZ(150px)rotateY(-170deg);transform:perspective(400px)scaleX(1)translateZ(150px)rotateY(-170deg)}80%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:matrix3d(.95,0,0,0,0,.95,0,0,0,0,.95,-.002375,0,0,0,1);transform:matrix3d(.95,0,0,0,0,.95,0,0,0,0,.95,-.002375,0,0,0,1)}to{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,-.0025,0,0,0,1);transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,-.0025,0,0,0,1)}}@keyframes flip{0%{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-transform:perspective(400px)scaleX(1)translateZ(0)rotateY(-1turn);transform:perspective(400px)scaleX(1)translateZ(0)rotateY(-1turn)}40%{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-transform:perspective(400px)scaleX(1)translateZ(150px)rotateY(-190deg);transform:perspective(400px)scaleX(1)translateZ(150px)rotateY(-190deg)}50%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:perspective(400px)scaleX(1)translateZ(150px)rotateY(-170deg);transform:perspective(400px)scaleX(1)translateZ(150px)rotateY(-170deg)}80%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:matrix3d(.95,0,0,0,0,.95,0,0,0,0,.95,-.002375,0,0,0,1);transform:matrix3d(.95,0,0,0,0,.95,0,0,0,0,.95,-.002375,0,0,0,1)}to{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,-.0025,0,0,0,1);transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,-.0025,0,0,0,1)}}.animate__animated.animate__flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{opacity:0;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:perspective(400px)rotateX(90deg);transform:perspective(400px)rotateX(90deg)}40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:perspective(400px)rotateX(-20deg);transform:perspective(400px)rotateX(-20deg)}60%{opacity:1;-webkit-transform:perspective(400px)rotateX(10deg);transform:perspective(400px)rotateX(10deg)}80%{-webkit-transform:perspective(400px)rotateX(-5deg);transform:perspective(400px)rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{opacity:0;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:perspective(400px)rotateX(90deg);transform:perspective(400px)rotateX(90deg)}40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:perspective(400px)rotateX(-20deg);transform:perspective(400px)rotateX(-20deg)}60%{opacity:1;-webkit-transform:perspective(400px)rotateX(10deg);transform:perspective(400px)rotateX(10deg)}80%{-webkit-transform:perspective(400px)rotateX(-5deg);transform:perspective(400px)rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInX{-webkit-animation-name:flipInX;animation-name:flipInX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipInY{0%{opacity:0;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:perspective(400px)rotateY(90deg);transform:perspective(400px)rotateY(90deg)}40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:perspective(400px)rotateY(-20deg);transform:perspective(400px)rotateY(-20deg)}60%{opacity:1;-webkit-transform:perspective(400px)rotateY(10deg);transform:perspective(400px)rotateY(10deg)}80%{-webkit-transform:perspective(400px)rotateY(-5deg);transform:perspective(400px)rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{opacity:0;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:perspective(400px)rotateY(90deg);transform:perspective(400px)rotateY(90deg)}40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-transform:perspective(400px)rotateY(-20deg);transform:perspective(400px)rotateY(-20deg)}60%{opacity:1;-webkit-transform:perspective(400px)rotateY(10deg);transform:perspective(400px)rotateY(10deg)}80%{-webkit-transform:perspective(400px)rotateY(-5deg);transform:perspective(400px)rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInY{-webkit-animation-name:flipInY;animation-name:flipInY;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{opacity:1;-webkit-transform:perspective(400px)rotateX(-20deg);transform:perspective(400px)rotateX(-20deg)}to{opacity:0;-webkit-transform:perspective(400px)rotateX(90deg);transform:perspective(400px)rotateX(90deg)}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{opacity:1;-webkit-transform:perspective(400px)rotateX(-20deg);transform:perspective(400px)rotateX(-20deg)}to{opacity:0;-webkit-transform:perspective(400px)rotateX(90deg);transform:perspective(400px)rotateX(90deg)}}.animate__flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{opacity:1;-webkit-transform:perspective(400px)rotateY(-15deg);transform:perspective(400px)rotateY(-15deg)}to{opacity:0;-webkit-transform:perspective(400px)rotateY(90deg);transform:perspective(400px)rotateY(90deg)}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{opacity:1;-webkit-transform:perspective(400px)rotateY(-15deg);transform:perspective(400px)rotateY(-15deg)}to{opacity:0;-webkit-transform:perspective(400px)rotateY(90deg);transform:perspective(400px)rotateY(90deg)}}.animate__flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes lightSpeedInRight{0%{opacity:0;-webkit-transform:translate(100%)skew(-30deg);transform:translate(100%)skew(-30deg)}60%{opacity:1;-webkit-transform:skew(20deg);transform:skew(20deg)}80%{-webkit-transform:skew(-5deg);transform:skew(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInRight{0%{opacity:0;-webkit-transform:translate(100%)skew(-30deg);transform:translate(100%)skew(-30deg)}60%{opacity:1;-webkit-transform:skew(20deg);transform:skew(20deg)}80%{-webkit-transform:skew(-5deg);transform:skew(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInRight{-webkit-animation-name:lightSpeedInRight;animation-name:lightSpeedInRight;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedInLeft{0%{opacity:0;-webkit-transform:translate(-100%)skew(30deg);transform:translate(-100%)skew(30deg)}60%{opacity:1;-webkit-transform:skew(-20deg);transform:skew(-20deg)}80%{-webkit-transform:skew(5deg);transform:skew(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInLeft{0%{opacity:0;-webkit-transform:translate(-100%)skew(30deg);transform:translate(-100%)skew(30deg)}60%{opacity:1;-webkit-transform:skew(-20deg);transform:skew(-20deg)}80%{-webkit-transform:skew(5deg);transform:skew(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInLeft{-webkit-animation-name:lightSpeedInLeft;animation-name:lightSpeedInLeft;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate(100%)skew(30deg);transform:translate(100%)skew(30deg)}}@keyframes lightSpeedOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate(100%)skew(30deg);transform:translate(100%)skew(30deg)}}.animate__lightSpeedOutRight{-webkit-animation-name:lightSpeedOutRight;animation-name:lightSpeedOutRight;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes lightSpeedOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate(-100%)skew(-30deg);transform:translate(-100%)skew(-30deg)}}@keyframes lightSpeedOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate(-100%)skew(-30deg);transform:translate(-100%)skew(-30deg)}}.animate__lightSpeedOutLeft{-webkit-animation-name:lightSpeedOutLeft;animation-name:lightSpeedOutLeft;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{opacity:0;-webkit-transform:rotate(-200deg);transform:rotate(-200deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rotateIn{0%{opacity:0;-webkit-transform:rotate(-200deg);transform:rotate(-200deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rotateIn{-webkit-transform-origin:50%;transform-origin:50%;-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{opacity:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rotateInDownLeft{0%{opacity:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rotateInDownLeft{-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{opacity:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rotateInDownRight{0%{opacity:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rotateInDownRight{-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{opacity:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rotateInUpLeft{0%{opacity:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rotateInUpLeft{-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{opacity:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rotateInUpRight{0%{opacity:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rotateInUpRight{-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{opacity:1}to{opacity:0;-webkit-transform:rotate(200deg);transform:rotate(200deg)}}@keyframes rotateOut{0%{opacity:1}to{opacity:0;-webkit-transform:rotate(200deg);transform:rotate(200deg)}}.animate__rotateOut{-webkit-transform-origin:50%;transform-origin:50%;-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1}to{opacity:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}}@keyframes rotateOutDownLeft{0%{opacity:1}to{opacity:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}}.animate__rotateOutDownLeft{-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{opacity:1}to{opacity:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}}@keyframes rotateOutDownRight{0%{opacity:1}to{opacity:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}}.animate__rotateOutDownRight{-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1}to{opacity:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}}@keyframes rotateOutUpLeft{0%{opacity:1}to{opacity:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}}.animate__rotateOutUpLeft{-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{opacity:1}to{opacity:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}}@keyframes rotateOutUpRight{0%{opacity:1}to{opacity:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}}.animate__rotateOutUpRight{-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:rotate(80deg);transform:rotate(80deg)}40%,80%{opacity:1;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:rotate(60deg);transform:rotate(60deg)}to{opacity:0;-webkit-transform:translateY(700px);transform:translateY(700px)}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:rotate(80deg);transform:rotate(80deg)}40%,80%{opacity:1;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-transform:rotate(60deg);transform:rotate(60deg)}to{opacity:0;-webkit-transform:translateY(700px);transform:translateY(700px)}}.animate__hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transform:scale(.1)rotate(30deg);transform:scale(.1)rotate(30deg)}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transform:scale(.1)rotate(30deg);transform:scale(.1)rotate(30deg)}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate(-100%)rotate(-120deg);transform:translate(-100%)rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate(-100%)rotate(-120deg);transform:translate(-100%)rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate(100%)rotate(120deg);transform:translate(100%)rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate(100%)rotate(120deg);transform:translate(100%)rotate(120deg)}}.animate__rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.animate__zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:translateY(-100px)scale3d(.1,.1,.1);transform:translateY(-100px)scale3d(.1,.1,.1)}60%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475)translateY(60px);transform:scale3d(.475,.475,.475)translateY(60px)}}@keyframes zoomInDown{0%{opacity:0;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:translateY(-100px)scale3d(.1,.1,.1);transform:translateY(-100px)scale3d(.1,.1,.1)}60%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475)translateY(60px);transform:scale3d(.475,.475,.475)translateY(60px)}}.animate__zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:translate(-100px)scale3d(.1,.1,.1);transform:translate(-100px)scale3d(.1,.1,.1)}60%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475)translate(10px);transform:scale3d(.475,.475,.475)translate(10px)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:translate(-100px)scale3d(.1,.1,.1);transform:translate(-100px)scale3d(.1,.1,.1)}60%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475)translate(10px);transform:scale3d(.475,.475,.475)translate(10px)}}.animate__zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:translate(100px)scale3d(.1,.1,.1);transform:translate(100px)scale3d(.1,.1,.1)}60%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475)translate(-10px);transform:scale3d(.475,.475,.475)translate(-10px)}}@keyframes zoomInRight{0%{opacity:0;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:translate(100px)scale3d(.1,.1,.1);transform:translate(100px)scale3d(.1,.1,.1)}60%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475)translate(-10px);transform:scale3d(.475,.475,.475)translate(-10px)}}.animate__zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:translateY(100px)scale3d(.1,.1,.1);transform:translateY(100px)scale3d(.1,.1,.1)}60%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475)translateY(-60px);transform:scale3d(.475,.475,.475)translateY(-60px)}}@keyframes zoomInUp{0%{opacity:0;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:translateY(100px)scale3d(.1,.1,.1);transform:translateY(100px)scale3d(.1,.1,.1)}60%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475)translateY(-60px);transform:scale3d(.475,.475,.475)translateY(-60px)}}.animate__zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.animate__zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.475,.475,.475)translateY(-60px);transform:scale3d(.475,.475,.475)translateY(-60px)}to{opacity:0;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:translateY(200px)scale3d(.1,.1,.1);transform:translateY(200px)scale3d(.1,.1,.1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.475,.475,.475)translateY(-60px);transform:scale3d(.475,.475,.475)translateY(-60px)}to{opacity:0;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:translateY(200px)scale3d(.1,.1,.1);transform:translateY(200px)scale3d(.1,.1,.1)}}.animate__zoomOutDown{-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475)translate(42px);transform:scale3d(.475,.475,.475)translate(42px)}to{opacity:0;-webkit-transform:matrix(.1,0,0,.1,-200,0);transform:matrix(.1,0,0,.1,-200,0)}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475)translate(42px);transform:scale3d(.475,.475,.475)translate(42px)}to{opacity:0;-webkit-transform:matrix(.1,0,0,.1,-200,0);transform:matrix(.1,0,0,.1,-200,0)}}.animate__zoomOutLeft{-webkit-transform-origin:0;transform-origin:0;-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475)translate(-42px);transform:scale3d(.475,.475,.475)translate(-42px)}to{opacity:0;-webkit-transform:matrix(.1,0,0,.1,200,0);transform:matrix(.1,0,0,.1,200,0)}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475)translate(-42px);transform:scale3d(.475,.475,.475)translate(-42px)}to{opacity:0;-webkit-transform:matrix(.1,0,0,.1,200,0);transform:matrix(.1,0,0,.1,200,0)}}.animate__zoomOutRight{-webkit-transform-origin:100%;transform-origin:100%;-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.475,.475,.475)translateY(60px);transform:scale3d(.475,.475,.475)translateY(60px)}to{opacity:0;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:translateY(-200px)scale3d(.1,.1,.1);transform:translateY(-200px)scale3d(.1,.1,.1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.475,.475,.475)translateY(60px);transform:scale3d(.475,.475,.475)translateY(60px)}to{opacity:0;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:translateY(-200px)scale3d(.1,.1,.1);transform:translateY(-200px)scale3d(.1,.1,.1)}}.animate__zoomOutUp{-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{visibility:visible;-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{visibility:visible;-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{visibility:visible;-webkit-transform:translate(-100%);transform:translate(-100%)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{visibility:visible;-webkit-transform:translate(-100%);transform:translate(-100%)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{visibility:visible;-webkit-transform:translate(100%);transform:translate(100%)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{visibility:visible;-webkit-transform:translate(100%);transform:translate(100%)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{visibility:visible;-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{visibility:visible;-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%)}}.animate__slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate(-100%);transform:translate(-100%)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate(-100%);transform:translate(-100%)}}.animate__slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate(100%);transform:translate(100%)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate(100%);transform:translate(100%)}}.animate__slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translateY(-100%);transform:translateY(-100%)}}.animate__slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}code[class*=language-],pre[class*=language-]{color:#000;text-shadow:0 1px #fff;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;background:0 0;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;line-height:1.5}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{margin:.5em 0;padding:1em;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{white-space:normal;border-radius:.3em;padding:.1em}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:#905}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#690}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#9a6e3a;background:#ffffff80}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.function,.token.class-name{color:#dd4a68}.token.regex,.token.important,.token.variable{color:#e90}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}pre[class*=language-].line-numbers{counter-reset:linenumber;padding-left:3.8em;position:relative}pre[class*=language-].line-numbers>code{white-space:inherit;position:relative}.line-numbers .line-numbers-rows{pointer-events:none;width:3em;letter-spacing:-1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-right:1px solid #999;font-size:100%;position:absolute;top:0;left:-3.8em}.line-numbers-rows>span{counter-increment:linenumber;display:block}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;text-align:right;padding-right:.8em;display:block}#vl-menu{z-index:1200;position:relative}.vlmenu,.vlmenu ul{margin:0;padding:0;list-style:none}.vlmenu>li{float:left;padding:0 20px}.vlmenu li li{position:relative}.vlmenu li>a{display:block}.vlmenu a i{padding-right:10px;font-size:10px}.vlmenu .search a i,.vlmenu a i.arrow{padding-right:0}.vlmenu>li>a>i.arrow{margin-top:3px;margin-left:10px}.vlmenu a{color:#222;text-decoration:none}.vlmenu>li>a{padding:20px 0}.vlmenu>li{padding:0 20px}.vlmenu>li>a:hover,.vlmenu>li.active>a{color:#000}.vlmenu ul{width:190px;z-index:1300;display:none;position:absolute}.vlmenu>li.menu-right>ul ul{left:-190px}.vlmenu ul a{color:#222;padding:10px 20px}.vlmenu li:hover>ul{display:block}.vlmenu ul ul{top:0;left:190px}.container-fluid .vlmenu>li.menu-right>ul,.container-fluid .vlmenu>li.menu-right>div{right:0}.vlmenu li a i.arrow{float:right;margin-top:5px}.vlmenu li.search a i.arrow{display:none}.vlmenu ul a:hover,.mega-menu ol li a:hover{background:#ffffff1a}.vlmenu li>div{padding:10px}.mega-menu ol{padding-left:0;list-style:none}.mega-menu ol li a{color:#222;padding:10px 20px}.mega-menu h1,.mega-menu h2,.mega-menu h3,.mega-menu h4,.mega-menu h5,.mega-menu h6,.mega-menu p{padding-left:20px;font-weight:400}.vlmenu .full-nav,.vlmenu .half-nav,.vlmenu .quarter-nav{z-index:1300;display:none;position:absolute}.vlmenu>li:hover>div{display:block}.vlmenu .full-nav{width:100%;left:0;right:0}.vlmenu .half-nav{width:50%;left:auto;right:auto}.vlmenu .quarter-nav{width:25%;left:auto;right:auto}.vlmenu li.menu-right .half-nav{width:50%;left:auto;right:0}.vlmenu li.menu-right .quarter-nav{width:25%;left:auto;right:0}.vlmenu li>div input{box-shadow:none;border:none;border-radius:0}.vlmenu.light-sub-menu input{border:1px solid #ddd}.vlmenu li>div input:focus,.vlmenu.light-sub-menu input:focus{box-shadow:none}.light-sub-menu .mega-menu li a span,.dark-sub-menu .mega-menu li a span{color:#bbb;display:block}.light-sub-menu .mega-menu li a:hover span,.dark-sub-menu .mega-menu li a:hover span{color:#fff}.light-sub-menu .mega-menu li a span,.light-sub-menu .mega-menu li a:hover span,.dark-sub-menu .mega-menu li a span{-webkit-transition:all .3s;-moz-transition:all .3s;transition:all .3s}.vlmenu .col1,.vlmenu .col2,.vlmenu .col3,.vlmenu .col4,.vlmenu .col5,.vlmenu .col6{float:left}.mega-menu .col1{width:100%}.mega-menu .col2{width:50%}.mega-menu .col3{width:33.33%}.mega-menu .col4{width:25%}.mega-menu .col5{width:20%}.mega-menu .col6{width:16.66%}.grid .col1,.grid .col2,.grid .col3,.grid .col4,.grid .col5,.grid .col6{margin-right:1%;padding:5px;display:inline-block}.grid.gray .col1,.grid.gray .col2,.grid.gray .col3,.grid.gray .col4,.grid.gray .col5,.grid.gray .col6{background:#ddd}.grid .mega-menu .col1{width:99%}.grid .mega-menu .col2{width:49%}.grid .mega-menu .col3{width:32.33%}.grid .mega-menu .col4{width:24%}.grid .mega-menu .col5{width:19%}.grid .mega-menu .col6{width:15.66%}.menu-row{width:100%;margin-bottom:10px;margin-left:.5%;display:inline-block}.menu-row:last-child{margin-bottom:0}.dark-sub-menu ul,.dark-sub-menu li>div{background:#222}.dark-sub-menu ul a,.dark-sub-menu li>div a,.dark-sub-menu li>div h1,.dark-sub-menu li>div h2,.dark-sub-menu li>div h3,.dark-sub-menu li>div h4,.dark-sub-menu li>div h5,.dark-sub-menu li>div h6,.dark-sub-menu li>div p{color:#fff}.light-sub-menu ul,.light-sub-menu li>div{background:#fff;box-shadow:0 0 1px #d1d1d1}.light-sub-menu ul a,.light-sub-menu li>div a,.light-sub-menu li>div h1,.light-sub-menu li>div h2,.light-sub-menu li>div h3,.light-sub-menu li>div h4,.light-sub-menu li>div h5,.light-sub-menu li>div h6,.light-sub-menu li>div p{color:#222}.light-sub-menu ul a:hover,.light-sub-menu ol li a:hover{color:#fff}.light-sub-menu ul a:hover,.light-sub-menu ol li a:hover{color:#fff;background:#222}.container header{width:100%;display:inline-block}.container header .vl-logo{margin-left:20px}.container header .nav-btn{margin-right:20px}.container header.float-menu{width:100%;margin-top:50px;display:inline-block}.container header.float-menu .vl-logo{margin-left:20px}.container header.float-menu .nav-btn{margin-right:20px}.center-menu{text-align:center}.center-menu .center-logo,.center-menu .vlmenu{display:inline-block}.center-menu .vlmenu ul,.center-menu .vlmenu li>div{text-align:left!important}.no-bg{background:0 0}.dark-menu{background:#000}.dark-menu a{color:#fff}.menu-bg{background-position:100% 100%!important;background-repeat:no-repeat!important;background-size:auto!important}.grid .mega-menu .col1 img,.grid .mega-menu .col2 img,.grid .mega-menu .col3 img,.grid .mega-menu .col4 img,.grid .mega-menu .col5 img,.grid .mega-menu .col6 img{width:100%;height:auto;margin-bottom:10px}.contact-form{padding:0 20px}.contact-form input,.contact-form textarea{width:100%;height:35px;color:#222;background:#fff;border:1px solid #ddd;margin-bottom:10px;padding-left:10px;padding-right:10px;display:inline-block}input[type=checkbox]{width:auto;height:auto;float:left;margin-right:10px}.contact-form input:focus,.contact-form textarea:focus{outline:0}.contact-form textarea{height:150px}.vl-btn{border:none;padding:10px 20px}@media (max-width:1480px){#blog-menu>ul{right:-100px}}@media (max-width:1024px){.menu,.menu ul,div.mega-menu{display:inline-block;background:#333!important}.mega-menu p{padding-left:40px!important}.vl-logo{margin-top:10px}.vlmenu,.vlmenu ul,div.mega-menu{display:inline-block;background:#333!important}.vlmenu a{color:#fff!important}.vlmenu li{z-index:1300;background:#333;position:relative}.vlmenu>li{width:100%;border-bottom:1px solid #ffffff0d;padding:0;display:block}.vlmenu>li>a,.vlmenu>li>a>i.arrow{line-height:50px}.vlmenu>li>a{padding:0 20px}.vlmenu>li a:hover{background:#111}.vlmenu>li>a>i.arrow{margin-right:0}.vlmenu ul{width:100%;border:none;display:none;position:relative;overflow:hidden}.hidden-sub{display:none!important}.visible-sub{visibility:visible;opacity:1;display:block!important}.vlmenu ul a,.vlmenu li>div,.mega-menu ol li a{padding:10px 20px}.mega-menu ol li a,.vlmenu ul a{border-top:1px solid #ffffff0d}.vlmenu li>div{padding:10px 0}.vlmenu ul ul,.vlmenu>li.menu-right>ul ul{left:0}.vlmenu li li a{padding-left:40px}.vlmenu li li li a{padding-left:60px}.vlmenu li li li li a{padding-left:80px}.vlmenu li li li li li a{padding-left:100px}.vlmenu li li li li li li a{padding-left:120px}.vlmenu .full-nav,.vlmenu .half-nav,.vlmenu .quarter-nav{display:block;position:relative}.vlmenu .col1,.vlmenu .col2,.vlmenu .col3,.vlmenu .col4,.vlmenu .col5,.vlmenu .col6,.mega-menu ol,.grid .col1,.grid .col2,.grid .col3,.grid .col4,.grid .col5,.grid .col6{width:100%!important}.grid .col1,.grid .col2,.grid .col3,.grid .col4,.grid .col5,.grid .col6{margin-bottom:10px;display:inline-block}.vlmenu li>div{border:none}.vlmenu h1,.vlmenu h2,.vlmenu h3,.vlmenu h4,.vlmenu h5,.vlmenu h6{color:#fff;margin:10px 20px}.vlmenu p{color:#fff;padding:10px 20px}.vlmenu ul a:hover,.mega-menu ol li a:hover{color:#fff;background:#111}.mega-menu ol li a{margin-bottom:0}.wrapper,.vlmenu .half-nav,.vlmenu .quarter-nav,.vlmenu li.menu-right .half-nav,.vlmenu li.menu-right .quarter-nav{width:100%}.vlmenu{width:100%;display:none}.light-sub-menu ul a,.light-sub-menu li>div a,.light-sub-menu li>div h1,.light-sub-menu li>div h2,.light-sub-menu li>div h3,.light-sub-menu li>div h4,.light-sub-menu li>div h5,.light-sub-menu li>div h6,.light-sub-menu li>div p,.light-sub-menu li>div span{color:#fff}.light-sub-menu ul,.light-sub-menu li>div{box-shadow:none}.vlmenu ul,.vlmenu li>div{top:auto}.vlmenu>li>a{height:53px;border-radius:0;border:none!important}.vlmenu>li,.menu-row{margin:0}.center-menu .vlmenu ul,.center-menu .vlmenu li>div{top:0}.center-menu{text-align:left}.center-menu .vlmenu{display:none}.nav-btn{float:right;cursor:pointer;margin-top:10px;margin-bottom:10px;margin-right:0;display:block}.nav-btn .bars{vertical-align:bottom;height:2px;width:30px;background-color:#333;display:inline-block;position:relative;top:-5px}.nav-btn .bars:before,.nav-btn .bars:after{content:"";width:30px;height:2px;background-color:#333;display:inline-block;position:absolute;top:-8px}.nav-btn .bars:after{top:8px}#blog-menu>ul{right:0}}.introjs-overlay{box-sizing:content-box;z-index:999999;opacity:0;background-color:#000;background:-moz-radial-gradient( center,ellipse farthest-corner,#0006 0,#000000e6 100% );background:-webkit-gradient( radial,center center,0px,center center,100%,color-stop(0%,#0006),color-stop(100%,#000000e6));background:-webkit-radial-gradient( center,ellipse farthest-corner,#0006 0,#000000e6 100% );background:-o-radial-gradient( center,ellipse farthest-corner,#0006 0,#000000e6 100% );background:-ms-radial-gradient( center,ellipse farthest-corner,#0006 0,#000000e6 100% );background:radial-gradient( center,ellipse farthest-corner,#0006 0,#000000e6 100% );filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#66000000',endColorstr='#e6000000',GradientType=1)";-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);-o-transition:all .3s ease-out;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out;position:absolute}.introjs-fixParent{z-index:auto!important;opacity:1!important;-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;-o-transform:none!important;transform:none!important}.introjs-showElement,tr.introjs-showElement>td,tr.introjs-showElement>th{z-index:9999999!important}.introjs-disableInteraction{opacity:0;filter:alpha(opacity=0);background-color:#fff;position:absolute;z-index:99999999!important}.introjs-relativePosition,tr.introjs-showElement>td,tr.introjs-showElement>th{position:relative}.introjs-helperLayer{box-sizing:content-box;z-index:9999998;-o-transition:all .3s ease-out;background-color:#ffffffe6;border:1px solid #00000080;border-radius:4px;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out;position:absolute;box-shadow:0 2px 15px #0006}.introjs-tooltipReferenceLayer{box-sizing:content-box;visibility:hidden;z-index:100000000;-o-transition:all .3s ease-out;background-color:#0000;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out;position:absolute}.introjs-helperLayer *,.introjs-helperLayer :before,.introjs-helperLayer :after{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-ms-box-sizing:content-box;-o-box-sizing:content-box}.introjs-helperNumberLayer{box-sizing:content-box;visibility:visible;color:#fff;text-align:center;text-shadow:1px 1px 1px #0000004d;background:-moz-linear-gradient(#cf0404 0%,#ff3019 100%);background:-ms-linear-gradient(top,#ff3019 0%,#cf0404 100%);width:20px;height:20px;filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3019', endColorstr='#cf0404', GradientType=0)";filter:"progid:DXImageTransform.Microsoft.Shadow(direction=135, strength=2, color=ff0000)";background:-moz-linear-gradient(#cf0404 0%,#ff3019 100%);background:-webkit-linear-gradient(#cf0404 0%,#ff3019 100%);background:-webkit-gradient(linear,0 0,0 100%,from(#ff3019),to(#cf0404));background:-moz-linear-gradient(#cf0404 0%,#ff3019 100%);background:-o-linear-gradient(#cf0404 0%,#ff3019 100%);background:linear-gradient(#ff3019 0%,#cf0404 100%);border:3px solid #fff;border-radius:50%;padding:2px;font-family:Arial,verdana,tahoma;font-size:13px;font-weight:700;line-height:20px;position:absolute;top:-16px;left:-16px;box-shadow:0 2px 5px #0006;z-index:2147483647!important}.introjs-arrow{content:"";border:5px solid #0000;position:absolute}.introjs-arrow.top{border-bottom-color:#fff;top:-10px}.introjs-arrow.top-right{border-bottom-color:#fff;top:-10px;right:10px}.introjs-arrow.top-middle{border-bottom-color:#fff;margin-left:-5px;top:-10px;left:50%}.introjs-arrow.right{border-left-color:#fff;top:10px;right:-10px}.introjs-arrow.right-bottom{border-left-color:#fff;bottom:10px;right:-10px}.introjs-arrow.bottom{border-top-color:#fff;bottom:-10px}.introjs-arrow.bottom-right{border-top-color:#fff;bottom:-10px;right:10px}.introjs-arrow.bottom-middle{border-top-color:#fff;margin-left:-5px;bottom:-10px;left:50%}.introjs-arrow.left{border-right-color:#fff;top:10px;left:-10px}.introjs-arrow.left-bottom{border-right-color:#fff;bottom:10px;left:-10px}.introjs-tooltip{box-sizing:content-box;visibility:visible;min-width:200px;max-width:300px;-o-transition:opacity .1s ease-out;background-color:#fff;border-radius:3px;padding:10px;-webkit-transition:opacity .1s ease-out;-moz-transition:opacity .1s ease-out;-ms-transition:opacity .1s ease-out;transition:opacity .1s ease-out;position:absolute;box-shadow:0 1px 10px #0006}.introjs-tooltipbuttons{text-align:right;white-space:nowrap}.introjs-button{box-sizing:content-box;text-shadow:1px 1px #fff;color:#333;white-space:nowrap;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#f4f4f4,#ececec);-webkit-background-clip:padding;-moz-background-clip:padding;-o-background-clip:padding-box;zoom:1;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f4f4f4),to(#ececec));background-image:-moz-linear-gradient(#f4f4f4,#ececec);background-image:-o-linear-gradient(#f4f4f4,#ececec);border:1px solid #d4d4d4;-webkit-border-radius:.2em;-moz-border-radius:.2em;border-radius:.2em;outline:none;margin:10px 0 0;padding:.3em .8em;font:11px sans-serif;text-decoration:none;display:inline;position:relative;overflow:visible}.introjs-button:hover{border-color:#bcbcbc;text-decoration:none;box-shadow:0 1px 1px #e3e3e3}.introjs-button:focus,.introjs-button:active{background-image:-webkit-gradient(linear,0 0,0 100%,from(#ececec),to(#f4f4f4));background-image:-moz-linear-gradient(#ececec,#f4f4f4);background-image:-o-linear-gradient(#ececec,#f4f4f4);background-image:linear-gradient(#ececec,#f4f4f4)}.introjs-button::-moz-focus-inner{border:0;padding:0}.introjs-skipbutton{box-sizing:content-box;color:#7a7a7a;margin-right:5px}.introjs-prevbutton{border-right:none;-webkit-border-radius:.2em 0 0 .2em;-moz-border-radius:.2em 0 0 .2em;border-radius:.2em 0 0 .2em}.introjs-prevbutton.introjs-fullbutton{border:1px solid #d4d4d4;-webkit-border-radius:.2em;-moz-border-radius:.2em;border-radius:.2em}.introjs-nextbutton{-webkit-border-radius:0 .2em .2em 0;-moz-border-radius:0 .2em .2em 0;border-radius:0 .2em .2em 0}.introjs-nextbutton.introjs-fullbutton{-webkit-border-radius:.2em;-moz-border-radius:.2em;border-radius:.2em}.introjs-disabled,.introjs-disabled:hover,.introjs-disabled:focus{color:#9a9a9a;box-shadow:none;cursor:default;background-color:#f4f4f4;background-image:none;border-color:#d4d4d4;text-decoration:none}.introjs-hidden{display:none}.introjs-bullets{text-align:center}.introjs-bullets ul{box-sizing:content-box;clear:both;margin:15px auto 0;padding:0;display:inline-block}.introjs-bullets ul li{box-sizing:content-box;float:left;margin:0 2px;list-style:none}.introjs-bullets ul li a{box-sizing:content-box;width:6px;height:6px;cursor:pointer;background:#ccc;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;text-decoration:none;display:block}.introjs-bullets ul li a:hover{background:#999}.introjs-bullets ul li a.active{background:#999}.introjs-progress{box-sizing:content-box;height:10px;background-color:#ecf0f1;border-radius:4px;margin:10px 0 5px;overflow:hidden}.introjs-progressbar{box-sizing:content-box;float:left;width:0%;height:100%;text-align:center;background-color:#08c;font-size:10px;line-height:10px}.introjsFloatingElement{height:0;width:0;position:absolute;top:50%;left:50%}.introjs-fixedTooltip{position:fixed}.introjs-hint{box-sizing:content-box;width:20px;height:15px;cursor:pointer;background:0 0;position:absolute}.introjs-hint:focus{border:0;outline:0}.introjs-hidehint{display:none}.introjs-fixedhint{position:fixed}.introjs-hint:hover>.introjs-hint-pulse{border:5px solid #3c3c3c91}.introjs-hint-pulse{box-sizing:content-box;width:10px;height:10px;z-index:10;-o-transition:all .2s ease-out;background-color:#8888883d;border:5px solid #3c3c3c45;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;transition:all .2s ease-out;position:absolute}.introjs-hint-no-anim .introjs-hint-dot{-webkit-animation:none;-moz-animation:none;animation:none}.introjs-hint-dot{box-sizing:content-box;height:50px;width:50px;z-index:1;opacity:0;background:0 0;border:10px solid #9292925c;-webkit-border-radius:60px;-moz-border-radius:60px;border-radius:60px;-webkit-animation:introjspulse 3s ease-out infinite;-moz-animation:introjspulse 3s ease-out infinite;animation:introjspulse 3s ease-out infinite;position:absolute;top:-25px;left:-25px}@-webkit-keyframes introjspulse{0%{opacity:0;-webkit-transform:scale(0)}25%{opacity:.1;-webkit-transform:scale(0)}50%{opacity:.3;-webkit-transform:scale(.1)}75%{opacity:.5;-webkit-transform:scale(.5)}to{opacity:0;-webkit-transform:scale(1)}}@-moz-keyframes introjspulse{0%{opacity:0;-moz-transform:scale(0)}25%{opacity:.1;-moz-transform:scale(0)}50%{opacity:.3;-moz-transform:scale(.1)}75%{opacity:.5;-moz-transform:scale(.5)}to{opacity:0;-moz-transform:scale(1)}}@keyframes introjspulse{0%{opacity:0;transform:scale(0)}25%{opacity:.1;transform:scale(0)}50%{opacity:.3;transform:scale(.1)}75%{opacity:.5;transform:scale(.5)}to{opacity:0;transform:scale(1)}}@font-face{font-family:iconfont;src:url(iconfont.960c72b2.eot#iefix)format("embedded-opentype"),url(iconfont.a07d77e0.woff2)format("woff2"),url(iconfont.b2a06094.woff)format("woff")}.icon{line-height:1}.icon:before{vertical-align:top;font-style:normal;font-family:iconfont!important;font-weight:400!important}.icon-close-fullscreen:before{content:""}.icon-open-fullscreen:before{content:""}.icon-output:before{content:""}.icon-coverage:before{content:""}.icon-more:before{content:""}.icon-copy:before{content:""}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-text-size-adjust:100%;font-family:Nunito,sans-serif;font-size:16px;font-weight:400;line-height:1.6;overflow-x:hidden}html{scroll-behavior:smooth}a{color:#09c;word-break:break-word;text-decoration:none;transition:all .3s}a:hover{color:#069;text-decoration:none}button,a,.btn{outline:0;transition:all .3s}button:focus,a:focus,.btn:focus{outline:none;text-decoration:none;box-shadow:none!important}img{max-width:100%;height:auto}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{font-family:Nunito,sans-serif;font-weight:700;transition:all .3s}h1 a,.h1 a,h2 a,.h2 a,h3 a,.h3 a,h4 a,.h4 a,h5 a,.h5 a,h6 a,.h6 a{color:#242424}h1 a:hover,.h1 a:hover,h2 a:hover,.h2 a:hover,h3 a:hover,.h3 a:hover,h4 a:hover,.h4 a:hover,h5 a:hover,.h5 a:hover,h6 a:hover,.h6 a:hover{color:#09c;text-decoration:none}@media (min-width:576px){h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{margin-top:-64px;padding-top:64px}}h1,.h1{font-size:32px}h2,.h2{font-size:28px}h3,.h3{font-size:24px}h4,.h4{font-size:20px}h5,.h5{font-size:18px}h6,.h6{font-size:16px}.section-gap{padding-top:3rem;padding-bottom:3rem;position:relative}@media (max-width:991px){h1,.h1{font-size:32px}h2,.h2{font-size:28px}h3,.h3{font-size:24px}h4,.h4{font-size:20px}h5,.h5{font-size:18px}h6,.h6{font-size:16px}.app-header+.section-gap{padding-top:5rem}}@media (max-width:767px){h1,.h1{font-size:28px}h2,.h2{font-size:26px}h3,.h3{font-size:24px}h4,.h4{font-size:20px}h5,.h5{font-size:18px}h6,.h6{font-size:16px}}@media (max-width:667px){h1,.h1{font-size:26px}h2,.h2{font-size:24px}h3,.h3{font-size:22px}h4,.h4{font-size:20px}h5,.h5{font-size:18px}h6,.h6{font-size:16px}}@media (min-width:769px){.section-gap{padding-top:7.5rem;padding-bottom:7.5rem}}.vlmenu>li>a:hover,.vlmenu>li.active>a{color:#09c}.hamburger{cursor:pointer;font:inherit;color:inherit;text-transform:none;background-color:#0000;border:0;margin:10px 0 0;padding:0;transition-property:opacity,filter;transition-duration:.15s;transition-timing-function:linear;display:inline-block;overflow:visible}.hamburger:hover{opacity:.7}.hamburger.is-active:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner:before,.hamburger.is-active .hamburger-inner:after{background-color:#000}@media screen and (prefers-color-scheme:dark){.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner:before,.hamburger.is-active .hamburger-inner:after{background-color:#fff}}.hamburger-box{width:20px;height:17px;display:inline-block;position:relative}.hamburger-inner{margin-top:-2px;display:block;top:50%}.hamburger-inner,.hamburger-inner:before,.hamburger-inner:after{width:20px;height:2px;background-color:#000;border-radius:4px;transition-property:transform;transition-duration:.15s;transition-timing-function:ease;position:absolute}@media screen and (prefers-color-scheme:dark){.hamburger-inner,.hamburger-inner:before,.hamburger-inner:after{background-color:#fff}}.hamburger-inner:before,.hamburger-inner:after{content:"";display:block}.hamburger-inner:before{top:-10px}.hamburger-inner:after{bottom:-10px}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{width:14px;transition-property:transform,opacity;transition-duration:.15s;transition-timing-function:ease;top:7px}.hamburger--slider .hamburger-inner:after{top:14px}.hamburger--slider.is-active .hamburger-inner{transform:translateY(7px)rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{opacity:0;transform:rotate(-45deg)translate(-5.71429px,-6px)}.hamburger--slider.is-active .hamburger-inner:after{transform:translateY(-14px)rotate(-90deg)}.vl-accordion{font-family:Nunito,sans-serif!important}@media (max-width:1024px){.vlmenu{margin-top:10px}.app-header{width:100%;z-index:10;background:#fff;padding:.3em 0;position:absolute;top:auto}.app-header .logo-dark{height:50px;display:block}.app-header .logo-light{display:none}}@media screen and (max-width:1024px) and (prefers-color-scheme:dark){.app-header{background:#000}}@media (max-width:1024px){.app-header.transparent-header .logo-light{display:none}.header-links.navbar{position:absolute;right:15px}.vlmenu .vl-accordion .fa-angle-down{display:none}.vlmenu li li a{font-family:Nunito,sans-serif}.vlmenu>li>a{cursor:pointer}.mega-menu h3{font-size:14px;font-weight:700}.vlmenu .vl-accordion .fa-angle-down,.nav-extra-link{display:none}}@media (max-width:767px){.header-links.navbar{right:25px}}@media (min-width:1025px){.app-header{width:100%;z-index:10;background:#fff;transition:all .1s;position:absolute;top:auto}.app-header .navbar-brand{margin-top:0}.app-header .logo-light{display:none}.app-header.transparent-header .logo-light{display:block}.app-header.sticky-nav{z-index:1030;background:#fff;padding:0;animation:smoothScroll .3s forwards;position:fixed;top:0;bottom:auto;box-shadow:0 1px 10px #97a4af26}@keyframes smoothScroll{0%{transform:translateY(-100px)}to{transform:translateY(0)}}.transparent-header{background:0 0;padding-top:2rem;top:auto}.transparent-header .vlmenu>li>a{color:#fff}.transparent-header .vlmenu>li>a:hover{opacity:.7}.transparent-header .logo-dark{height:70px;display:none}.transparent-header.sticky-nav{background:#fff;top:0;box-shadow:0 1px 10px #97a4af26}.transparent-header.sticky-nav .vlmenu>li>a{color:#242424}.transparent-header.sticky-nav .vlmenu>li>a:hover{color:#09c}.transparent-header.sticky-nav .logo-light{display:none}.transparent-header.sticky-nav .logo-dark{height:50px;display:block}}@media screen and (min-width:1025px) and (prefers-color-scheme:dark){.transparent-header.sticky-nav{background:#000;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.transparent-header.sticky-nav .vlmenu>li>a{color:#fff}}@media (min-width:1025px){.transparent-header-dark-nav .vlmenu>li>a{color:#242424}.transparent-header-dark-nav .vlmenu>li>a:hover{color:#09c}}@media screen and (min-width:1025px) and (prefers-color-scheme:dark){.transparent-header-dark-nav .vlmenu>li>a{color:#fff}}@media (min-width:1025px){.transparent-header-dark-nav .logo-dark{display:block}.transparent-header-dark-nav .logo-light{display:none!important}.vlmenu>li>a>i.arrow{display:none;position:relative;top:2px}.light-sub-menu ul,.light-sub-menu li>div{box-shadow:0 1px 15px 1px #45414e1a}}@media screen and (min-width:1025px) and (prefers-color-scheme:dark){.light-sub-menu ul,.light-sub-menu li>div{color:#fff;background-color:#141414}}@media (min-width:1025px){.vlmenu ul{width:250px;padding-top:15px;padding-bottom:15px}.vlmenu ul a{padding:12px 30px;font-size:14px}.vlmenu ul ul{left:251px}.vlmenu li>div{padding:30px}.vlmenu li>div p{font-size:12px}.vlmenu>li.menu-right>ul ul{left:-251px}.vlmenu h3{margin-bottom:20px;font-size:14px;font-weight:700}.vlmenu .mega-menu ol li a{border-radius:6px;padding:12px 20px;font-size:14px}.vlmenu>li{padding:0 10px}}@media screen and (min-width:1025px) and (prefers-color-scheme:dark){.light-sub-menu ul a,.light-sub-menu ol li a{color:#fff}}@media (min-width:1025px){.light-sub-menu ul a:hover,.light-sub-menu ol li a:hover{color:#fff;background:#09c}}@media screen and (min-width:1025px) and (prefers-color-scheme:dark){.light-sub-menu ul a:hover,.light-sub-menu ol li a:hover{color:#fff}}@media (min-width:1025px){.vlmenu>li>a{cursor:pointer;padding:19.5px 0}.nav-btn{display:none}.vlmenu .half-nav,.vlmenu .full-nav,.vlmenu ul{border-radius:6px}.nav-extra-link .mt-3{margin-top:.85rem!important}}.overlay-nav{z-index:6;position:relative;top:1.7rem}.toggle-wrap{height:16px;width:20px;cursor:pointer;z-index:100;-webkit-transition:opacity .25s;transition:opacity .25s;position:absolute;top:3%;right:0}.toggle-wrap.active .top{background:#fff;-webkit-transform:translateY(7px)rotate(45deg);transform:translateY(7px)rotate(45deg)}.toggle-wrap.active .middle{opacity:0;background:#fff}.toggle-wrap.active .bottom{background:#fff;-webkit-transform:translateY(-7px)translate(0)rotate(-45deg);transform:translateY(-7px)translate(0)rotate(-45deg)}.toggle-wrap span{height:2px;width:100%;cursor:pointer;background:#242424;border:none;-webkit-transition:all .35s;transition:all .35s;position:absolute;top:0;left:0}.toggle-wrap span:nth-of-type(2){width:60%;top:7px}.toggle-wrap span:nth-of-type(3){top:14px}.overlay{width:100%;height:0;opacity:0;visibility:hidden;background:#242424;-webkit-transition:opacity .35s,visibility .35s,height .35s;transition:opacity .35s,visibility .35s,height .35s;position:fixed;top:0;left:0;overflow:hidden}.overlay.open{opacity:1;visibility:visible;height:100%}.overlay.open li{-webkit-animation:fadeInDown .5s .35s forwards;animation:fadeInDown .5s .35s forwards}.overlay.open li:nth-of-type(2){-webkit-animation-delay:.4s;animation-delay:.4s}.overlay.open li:nth-of-type(3){-webkit-animation-delay:.45s;animation-delay:.45s}.overlay.open li:nth-of-type(4){-webkit-animation-delay:.5s;animation-delay:.5s}.overlay.open li:nth-of-type(5){-webkit-animation-delay:.55s;animation-delay:.55s}.overlay.open li:nth-of-type(6){-webkit-animation-delay:.6s;animation-delay:.6s}.overlay.open li:nth-of-type(7){-webkit-animation-delay:.65s;animation-delay:.65s}.overlay.open li:nth-of-type(8){-webkit-animation-delay:.7s;animation-delay:.7s}.overlay nav{height:60%;text-align:center;font-size:1.5rem;position:relative;top:45%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.overlay ul{height:100%;margin:0 auto;padding:0;list-style:none;display:inline-block;position:relative}.overlay ul li{height:10%;min-height:50px;opacity:0;display:block;position:relative}.overlay ul li a{color:#fff;padding:0 0 10px;text-decoration:none;display:block;position:relative;overflow:hidden}.overlay ul li a:hover{color:#09c}.overlay ul li a:hover:after,.overlay ul li a:focus:after,.overlay ul li a:active:after{width:100%}.overlay ul li a:after{content:"";width:0%;height:1px;background:#09c;-webkit-transition:all .35s;transition:all .35s;position:absolute;bottom:5px;left:50%;-webkit-transform:translate(-50%);transform:translate(-50%)}.overlay-nav-social-link a{color:#8c8c8c;opacity:0;margin:0 .8rem;font-size:18px}.overlay-nav-social-link a:hover{color:#09c}.overlay-nav-social-link.open a{-webkit-animation:fadeInDown .6s .8s forwards;animation:fadeInDown .6s .8s forwards}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{opacity:1;-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{opacity:1;-webkit-transform:translate(0,0);transform:translate(0,0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}.app-footer{border-top:1px solid #e8e8e8;padding:3rem 0;font-family:Arial,Helvetica,sans-serif}.app-footer .footer-link{margin-bottom:.5rem;padding:0}.app-footer .footer-link li{margin-bottom:.5rem;margin-right:15px;display:inline-block}.app-footer .footer-link li a{text-transform:uppercase;color:#8c8c8c;font-size:12px}.app-footer .footer-link li a:hover{color:#242424;text-decoration:none}.app-footer .footer-link li:last-child{margin-right:0}.app-footer .social-links li a{font-size:16px}.app-footer .copyright{color:#8c8c8c;margin:0;font-size:14px}@media screen and (prefers-color-scheme:dark){.app-footer{border-color:#414141}}.app-footer.bg-dark{color:#fff;padding:4rem 0}.app-footer.bg-dark .border-right{border-right:1px solid #616161!important}.app-footer.bg-dark .border-left{border-left:1px solid #616161!important}.app-footer.bg-dark .border-top{border-top:1px solid #616161!important}.app-footer.bg-dark .border-bottom{border-bottom:1px solid #616161!important}.app-secondary-footer{background:#171717;padding:2rem 0}.two-col-link li{width:50%;float:left;box-sizing:border-box;margin-right:0!important}.instagram-feed a{width:75px;height:75px;margin:0 .3rem .2rem 0;display:inline-block;overflow:hidden}.instagram-feed a img{width:100%;height:100%}.social-media-list{padding:0;list-style:none}.social-media-list a{text-transform:capitalize;color:#242424;margin-bottom:.5rem;font-size:18px;font-weight:700;display:inline-block}.social-media-list a:hover{color:#09c}.go-up-link i{font-weight:700}.go-up-link:hover{text-decoration:none}@media (max-width:767px){.app-footer .border-right,.app-footer.bg-dark .border-right{border-right:none!important}.app-footer,.app-footer.bg-dark{padding:2rem 0}.social-media-list a{font-size:14px}.footer-logo{max-height:32px}}img.footer-icon{width:28px;height:28px;margin:0}@media screen and (prefers-color-scheme:dark){code[class*=language-],pre[class*=language-]{color:#c5c8c6;text-shadow:0 1px #0000004d;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;font-family:Inconsolata,Monaco,Consolas,Courier New,Courier,monospace;line-height:1.5}pre[class*=language-]{border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#1d1f21}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#7c7c7c}.token.punctuation{color:#c5c8c6}.namespace{opacity:.7}.token.property,.token.keyword,.token.tag{color:#96cbfe}.token.class-name{color:#ffffb6;text-decoration:underline}.token.boolean,.token.constant{color:#9c9}.token.symbol,.token.deleted{color:#f92672}.token.number{color:#ff73fd}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#a8ff60}.token.variable{color:#c6c5fe}.token.operator{color:#ededed;background-color:inherit}.token.entity{color:#ffffb6;cursor:help}.token.url{color:#96cbfe}.language-css .token.string,.style .token.string{color:#87c38a}.token.atrule,.token.attr-value{color:#f9ee98}.token.function{color:#dad085}.token.regex{color:#e9c062}.token.important{color:#fd971f}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}}.hero-img{background-position:50%;background-repeat:no-repeat;background-size:cover}.hero-img,.bg-overlay,.bg-overlay:before,.bg-theme-overlay,.bg-theme-overlay:before,.bg-navy-overlay,.bg-navy-overlay:before,.bg-gradient-overlay,.bg-gradient-overlay:before{position:absolute;inset:0}.bg-overlay:before{content:"";background-color:#242424}.bg-theme-overlay:before{content:"";background:#09c}.bg-navy-overlay:before{content:"";background:#1d2b40}.bg-gradient-overlay:before{content:"";background-image:linear-gradient(90deg,#09c 0%,#7431ff 100%)}[data-overlay="0"]:before{opacity:0}[data-overlay="1"]:before{opacity:.1}[data-overlay="2"]:before{opacity:.2}[data-overlay="3"]:before{opacity:.3}[data-overlay="4"]:before{opacity:.4}[data-overlay="5"]:before{opacity:.5}[data-overlay="6"]:before{opacity:.6}[data-overlay="7"]:before{opacity:.7}[data-overlay="8"]:before{opacity:.8}[data-overlay="9"]:before{opacity:.9}@media (max-width:768px){.section-top{padding-top:5rem}.hero-avatar-bottom{position:relative;bottom:-3rem}.scroll-down{bottom:10px;left:0;right:0}.scroll-down span{color:#09c;display:block}.scroll-down-circle{display:none}}@media (min-width:769px){.section-full>.section-full-exception,.section-full>.container:not(#homepage-container)>.row{min-height:calc(100vh - 20.8125rem)}.section-full .container>.row:before{min-height:inherit;content:""}.section-top{padding-top:13.3125rem}.scroll-down{bottom:50px;left:0;right:0}.scroll-down span{color:#09c;display:block}.scroll-down-circle{width:80px;height:80px;background:#fff;border-radius:50%;line-height:80px;position:absolute;bottom:-100px;left:50%;transform:translate(-50%);box-shadow:0 .2rem .8rem #24242426}}.btn{text-transform:uppercase;white-space:nowrap;padding:.75rem 2rem;font-size:11px;font-weight:700}.btn.btn-sm{padding:.485rem 1.2rem;font-size:10px;font-weight:700;line-height:1.6}.btn.btn-lg{padding:.965rem 2rem}.btn-pill{border-radius:5rem}.btn-theme{background:#09c;border:2px solid #09c;color:#fff!important}.btn-theme:hover{color:#fff;background:#069;border:2px solid #069}.btn-rv-blue{background:#09c;border:2px solid #09c;color:#fff!important}.btn-rv-blue:hover{color:#fff;background:#069;border:2px solid #069}.btn-outline{cursor:pointer;color:#242424;background:#fff;border:2px solid #e8e8e8;margin-left:2em}.btn-outline:hover{background:#242424;border-color:#242424;color:#fff!important}@media screen and (prefers-color-scheme:dark){.btn-outline{color:#fff;background:#000;border-color:#e8e8e8}.btn-outline:hover{border-color:#777}}.btn-outline-dark{color:#242424;background:0 0;border:2px solid #242424}.btn-outline-dark:hover{color:#fff;background:#242424;border-color:#242424}.btn-outline-light{color:#fff;background:0 0;border:2px solid #fff}.btn-outline-light:hover{color:#242424;background:#fff;border-color:#fff}.btn-solid-light{color:#242424;background:#fff;border:2px solid #fff}.btn-solid-light:hover{color:#fff;background:#09c;border-color:#09c}.btn-solid-dark{color:#fff;background:#242424;border:2px solid #242424}.btn-solid-dark:hover{color:#fff;background:#09c;border-color:#09c}.video-btn .video-play-icon,.video-btn span{display:inline-block}.video-btn .video-play-icon{width:46px;height:46px;text-align:center;color:#242424;cursor:pointer;background:#fff;border-radius:50%;line-height:46px;box-shadow:0 3px 6px #0000000d}.video-btn .video-play-icon i{font-size:12px;position:relative;top:0;left:2px}.video-btn .video-play-icon:hover i{color:#09c}.video-btn span{text-transform:uppercase;font-size:11px;font-weight:700;position:relative;left:10px}.video-play-btn-align-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.btn-read-more{display:inline-block;position:relative}.btn-read-more:hover{text-decoration:none}.btn-read-more:hover:after{right:-30px}@media (max-width:767px){.btn.btn-sm{padding:.4rem 1rem}.btn{padding:.5rem 1.3rem}.btn.btn-lg{padding:.7rem 1.4rem}}.accordion .card{border-color:#e8e8e8}.accordion .card p{color:#8c8c8c}.accordion .card-header{border-color:#e8e8e8;padding:0}.accordion .card-header h6{margin-bottom:0;font-size:16px;font-weight:400}.accordion .card-header a{cursor:pointer;color:#09c;background:#fff;border-radius:4px 4px 0 0;padding:1.2rem 1.5rem;display:block;position:relative}.accordion .card-header a:hover{color:#09c}.accordion .card-header .collapsed{color:#242424}.accordion .card-header .collapsed:after{content:""}.accordion .accordion-list{list-style:none}.accordion .accordion-list li{margin-bottom:.5rem}.accordion .accordion-list li a{color:#8c8c8c}.accordion .accordion-list li a i{font-size:14px}.accordion .accordion-list li a:hover{color:#09c;text-decoration:none}.accordion.accordion-style-1 .card-header a{color:#09c;background:#fff}.accordion.accordion-style-1 .card-header a:hover{color:#09c}.accordion.accordion-style-1 .card-header a:hover:after{color:#fff;background:#09c;border:1px solid #09c;transition:all .3s}.accordion.accordion-style-1 .card-header .collapsed{color:#242424}.accordion.accordion-style-1 .card-header .collapsed:after{content:"";color:#8c8c8c;background:#fff;border:1px solid #ccc}.accordion.accordion-style-2 .card{border-radius:4px;margin-bottom:10px}.accordion.accordion-style-2 .card .card-header{background:0 0;border:none;margin-bottom:0}.accordion.accordion-style-2 .card .card-header a:after{content:"";font-family:fontawesome;font-size:14px;position:absolute;top:35%;right:20px}.accordion.accordion-style-2 .card .card-header a.collapsed{border-radius:4px;position:relative}.accordion.accordion-style-2 .card .card-header a.collapsed:after{content:""}.accordion.accordion-style-2 .card:not(:first-of-type):not(:last-of-type){border-radius:4px}.accordion.accordion-style-2 .card:first-of-type,.accordion.accordion-style-2 .card:not(:first-of-type):not(:last-of-type){border-bottom:1px solid #e8e8e8}.accordion.accordion-style-3 .card,.accordion.accordion-style-3 .card-header,.accordion.accordion-style-3 .card-header a{background:0 0;border:none}.accordion.accordion-style-3 .card-header a{color:#09c;padding:1.2rem 0 1.2rem 4rem}.accordion.accordion-style-3 .card-header a:before{width:40px;height:40px;text-align:center;color:#fff;content:"";background:#09c;border-radius:50%;font-family:fontawesome;font-size:14px;line-height:40px;position:absolute;top:8px;left:5px}.accordion.accordion-style-3 .card-header a:after{content:""}.accordion.accordion-style-3 .card-header .collapsed{color:#242424}.accordion.accordion-style-3 .card-header .collapsed:before{content:"";width:40px;height:40px;text-align:center;color:#242424;background:#fff;border:1px solid #f5f5f5;border-radius:50%;line-height:38px;box-shadow:0 3px 6px #0000000d}.accordion.accordion-style-3 .card-body{padding:1.25rem 0 1.25rem 4rem}.accordion.accordion-style-4 .card{border-radius:4px;margin-bottom:10px}.accordion.accordion-style-4 .card .card-header{background:0 0;border:none;margin-bottom:0;position:relative}.accordion.accordion-style-4 .card .card-header a{color:#242424;padding:2.5rem 1.5rem;font-weight:700}.accordion.accordion-style-4 .card .card-header a.collapsed{border-radius:4px;position:relative}.accordion.accordion-style-4 .card .card-header a.collapsed:after{content:""}.accordion.accordion-style-4 .card .card-header i{color:#09c;position:absolute;top:28px}.accordion.accordion-style-4 .card .card-header span{padding-left:3rem}.accordion.accordion-style-4 .card:not(:first-of-type):not(:last-of-type){border-radius:4px}.accordion.accordion-style-4 .card:first-of-type,.accordion.accordion-style-4 .card:not(:first-of-type):not(:last-of-type){border-bottom:1px solid #e8e8e8}.blurb i{margin-bottom:2rem;font-size:3rem;display:inline-block}.blurb p{color:#8c8c8c;padding-right:2rem}.blurb.text-right p{padding-left:2rem;padding-right:0}.blurb-border{background:#fff;border:1px solid #e8e8e8;border-radius:6px;padding:1.8rem}.blurb-border p{margin-bottom:.5rem;padding:0}@media (max-width:767px){.blurb i{font-size:2.5rem}.blurb-border{margin-bottom:1.5rem}}.list-group-right-arrow a{position:relative}.list-group-right-arrow a:after{content:"";width:25px;height:25px;text-align:center;border:1px solid #e8e8e8;border-radius:50%;padding-left:2px;font-family:fontawesome;font-size:14px;line-height:23px;position:absolute;top:30%;right:20px}.list-group-right-arrow a:hover:after{color:#fff;background:#09c;border-color:#09c;transition:all .3s}.list-group-right-arrow .list-group-item.active{color:#09c;background:#fff;border-color:#e8e8e8}.list-group-right-arrow .list-group-item.active:after{color:#fff;background:#09c;border-color:#09c}.list-group-right-arrow-on-hover a:after{opacity:0;width:30px;height:30px;border:3px solid #fff;line-height:25px;top:33%;right:13px}.list-group-right-arrow-on-hover a:hover:after{opacity:1;width:30px;height:30px;border:3px solid #fff;line-height:25px;right:-13px}.list-group-right-arrow-on-hover .list-group-item.active:after{opacity:1;width:30px;height:30px;border:3px solid #fff;line-height:25px;right:-13px}.list-group .list-group-item h6{color:#242424}.list-group .list-group-item:hover h6{color:#09c}.list-group-gap .list-group-item{border-radius:6px;margin-bottom:10px;padding:1.8rem 1.25rem}@media (prefers-color-scheme:dark){.list-group-item{color:#fff;background-color:#1b1b1b;border-color:#414141}}.custom-list{padding:0;list-style:none}.custom-list li{padding:.8rem 0}.custom-list li a{color:#242424}.custom-list li a:hover{color:#09c;text-decoration:none}.custom-list-border li{border-bottom:1px solid #e8e8e8}.custom-list-border li:first-child{border-top:1px solid #e8e8e8}@media (prefers-color-scheme:dark){.list-group-item{color:#fff;background-color:#1b1b1b;border-color:#414141}}.clients-thumb{width:100%;max-width:10rem;height:auto;opacity:.5;margin-left:auto;margin-right:auto}.clients-thumb:hover{opacity:1}.dot-style-1.owl-theme .owl-dots .owl-dot span{width:6px;height:6px;background:#242424;transition:all .3s}.dot-style-1.owl-theme .owl-dots .owl-dot.active span{transform:scale(1.5)}.dot-style-2.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;background:#ccc;transition:all .3s}.dot-style-2.owl-theme .owl-dots .owl-dot.active span{width:20px;height:10px;background:#09c;margin:5px 3px}.owl-carousel.text-center .owl-stage{display:inline-block}.carousel-highlighter.owl-carousel .owl-item{opacity:.2}.carousel-highlighter.owl-carousel .owl-item .card-img-overlay{opacity:0}.carousel-highlighter.owl-carousel .owl-item.center,.carousel-highlighter.owl-carousel .owl-item.center .card-img-overlay{opacity:1}.carousel-zoom-img .owl-stage-outer{overflow:visible}.carousel-zoom-img .owl-item .item h6{opacity:0}.carousel-zoom-img .owl-item.center .item{z-index:100;position:relative;transform:scale(1.2)}.carousel-zoom-img .owl-item.center .item h6{opacity:1}.carousel-zoom-img .owl-dots{margin-top:4rem}.owl-theme .owl-nav,.owl-theme .owl-nav.disabled+.owl-dots{margin-top:30px}.nav-circle.owl-theme .owl-nav [class*=owl-],.nav-circle-light.owl-theme .owl-nav [class*=owl-],.nav-circle-solid-light.owl-theme .owl-nav [class*=owl-]{width:50px;height:50px;text-align:center;color:#8c8c8c;border:1px solid #ccc;border-radius:50%;margin-bottom:2rem;font-size:12px;line-height:50px;position:relative}.nav-circle.owl-theme .owl-nav [class*=owl-]:hover,.nav-circle-light.owl-theme .owl-nav [class*=owl-]:hover,.nav-circle-solid-light.owl-theme .owl-nav [class*=owl-]:hover{color:#fff;background:#242424;border-color:#242424}.nav-circle-light.owl-theme .owl-nav [class*=owl-]:hover{color:#242424;background:#fff;border-color:#fff}.nav-circle-solid-light.owl-theme .owl-nav [class*=owl-]{color:#242424;background:#fff;border-color:#fff}.nav-circle-solid-light.owl-theme .owl-nav [class*=owl-]:hover{color:#fff;background:#09c;border-color:#09c}.nav-round.owl-theme .owl-nav [class*=owl-]{width:40px;height:90px;text-align:center;color:#fff;background:#0000004d;border-radius:6px;margin-bottom:2rem;font-size:12px;line-height:90px;position:relative}.nav-round.owl-theme .owl-nav [class*=owl-]:hover{background:#242424}.nav-round.owl-carousel .owl-nav .owl-prev,.nav-round.owl-carousel .owl-nav .owl-next{margin-top:-90px;position:absolute;top:50%}.nav-round.owl-carousel .owl-nav .owl-prev{border-radius:0 6px 6px 0;left:-5px}.nav-round.owl-carousel .owl-nav .owl-next{border-radius:6px 0 0 6px;right:-5px}.custom-testimonial.owl-theme .owl-nav{margin-top:0;bottom:2%}.custom-testimonial.owl-theme .owl-nav [class*=owl-]{width:35px;height:35px;text-align:center;color:#8c8c8c;border:1px solid #ccc;border-radius:50%;font-size:12px;line-height:35px;position:relative}.custom-testimonial.owl-theme .owl-nav [class*=owl-]:hover{color:#fff;background:#242424;border-color:#242424}.owl-carousel .owl-item img{width:auto}@media (min-width:1025px){.nav-circle.owl-carousel .owl-nav .owl-prev,.nav-circle.owl-carousel .owl-nav .owl-next,.nav-circle-light.owl-carousel .owl-nav .owl-prev,.nav-circle-light.owl-carousel .owl-nav .owl-next,.nav-circle-solid-light.owl-carousel .owl-nav .owl-prev,.nav-circle-solid-light.owl-carousel .owl-nav .owl-next,.nav-inside.owl-carousel .owl-nav .owl-prev,.nav-inside.owl-carousel .owl-nav .owl-next{margin-top:-50px;position:absolute;top:50%}.nav-circle.owl-carousel .owl-nav .owl-prev,.nav-circle-light.owl-carousel .owl-nav .owl-prev,.nav-circle-solid-light.owl-carousel .owl-nav .owl-prev{left:-8%}.nav-circle.owl-carousel .owl-nav .owl-next,.nav-circle-light.owl-carousel .owl-nav .owl-next,.nav-circle-solid-light.owl-carousel .owl-nav .owl-next{right:-8%}.nav-inside.owl-carousel .owl-nav .owl-prev,.nav-inside.owl-carousel .owl-nav .owl-prev{left:3%}.nav-inside.owl-carousel .owl-nav .owl-next,.nav-inside.owl-carousel .owl-nav .owl-next{right:3%}.custom-testimonial.owl-theme .owl-nav{z-index:100;margin-top:0;position:absolute;bottom:8%;right:11%}}.t-star-icon{font-size:8px;position:relative;bottom:2px}.justify-content-between .card-arrow-icon{width:25px;height:25px;text-align:center;border:1px solid #ddd;border-radius:50%;line-height:25px;transition:all .3s;position:relative}.justify-content-between .card-arrow-icon:after{content:"";font-family:fontawesome;font-size:14px;position:absolute;top:-1px;left:9px}.justify-content-between>a{text-decoration:none}.justify-content-between>a:hover+.card-arrow-icon{color:#fff;background:#09c;border-color:#09c}.card-img-overlay{top:auto;left:auto;right:auto}.box-hover,img.box-hover{transition:top .2s,box-shadow .2s;position:relative;top:0;box-shadow:0 0 #0000}.box-hover:hover,img.box-hover:hover{top:-.5rem;box-shadow:0 .2rem .8rem #24242426}@media (min-width:768px){.card.flex-md-row .card-img{object-fit:cover;border-radius:.375rem 0 0 .375rem}.card.flex-md-row .card-img-right{object-fit:cover;border-radius:0 .375rem .375rem 0}}@media (max-width:991.98px){.card.flex-column .card-img{border-radius:.375rem .375rem 0 0}.card.flex-md-row .card-img-right{border-radius:0 0 .375rem .375rem}}.form-control,.custom-select,.custom-file,.custom-file-input,.custom-file-label{height:calc(2.25rem + 12px);border:1px solid #e8e8e8}.form-control:focus,.custom-select:focus,.custom-file:focus,.custom-file-input:focus,.custom-file-label:focus{box-shadow:none}@media screen and (prefers-color-scheme:dark){.form-control,.form-control:focus{color:#fff;background-color:#1b1b1b;border-color:#414141}}.form-inline .form-control{height:calc(2.25rem + 8px)}.custom-file{border:none}.custom-file-label{padding:.65rem .75rem}.custom-file-label:after{height:2.85rem;padding:inherit;background:#fafafa;border-radius:0 .15rem .15rem 0}.icon-field,.icon-field-right{position:relative}.icon-field i,.icon-field-right i{user-select:none;cursor:default;color:#8c8c8c;position:absolute}.icon-field i{top:15px;left:15px}.icon-field input{padding-left:45px}.icon-field-right i{top:15px;right:15px}.icon-field-right input{padding-right:45px}.custom-control-label:before,.custom-control-label:after{width:1.3rem;height:1.3rem;top:.1rem;left:-1.5rem}.custom-control-label:before{border:1px solid #e8e8e8}.custom-control-label{padding-left:10px}.custom-switch .custom-control-label:before{width:40px;pointer-events:all;height:24px;background:#e8e8e8;border-radius:5rem;left:-2.25rem}.custom-switch .custom-control-label:after{width:calc(1.4rem - 2px);height:calc(1.4rem - 2px);background-color:#fff;border-radius:5rem;top:calc(.25rem - 1px);left:calc(3px - 2.25rem)}.custom-switch .custom-control-input:checked~.custom-control-label:after{transform:translate(.95rem)}.custom-switch .custom-control-label{padding-left:20px}.custom-file-input:focus~.custom-file-label,.custom-control-input:focus~.custom-control-label:before{box-shadow:none}.custom-control-input:checked~.custom-control-label:before,.custom-control-input:focus:not(:checked)~.custom-control-label:before{border:1px solid #e8e8e8}.custom-select{background:#fff url(select-arrow.b8e89c0c.svg) right .75rem center/8px 10px no-repeat}.login-content{color:#fff;text-align:center;width:100%;padding:2rem;position:absolute;top:50%;transform:translateY(-50%)}.login-circle-logo{width:80px;height:80px;background:#fff;border-radius:50%;line-height:80px;display:inline-block;box-shadow:0 .2rem .8rem #24242426}.c-form-content,.coming-soon-social{color:#fff;text-align:center;width:100%;padding:3rem;position:absolute;bottom:3%}.coming-soon-social{left:0}@media (max-width:991px){.coming-soon-social{margin-top:3rem;padding:0;position:relative}}@media (max-width:767px){.form-inline .form-control{height:2.25rem}}.steps-solid,.steps-dashed,.steps-dashed-light{width:150px;height:150px;text-align:center;background:#fff;border:2px solid #e8e8e8;border-radius:50%;line-height:150px;display:inline-block;position:relative}.steps-solid:after,.steps-dashed:after,.steps-dashed-light:after{content:"";width:100px;border-bottom:1px dashed #ccc;position:absolute;top:50%;right:-110%}.steps-solid i,.steps-dashed i,.steps-dashed-light i{line-height:150px}.steps-solid .step-number,.steps-dashed .step-number,.steps-dashed-light .step-number{color:#fff;background:#09c;border:3px solid #fff;border-radius:30px;padding:2px 10px;font-size:12px;font-weight:700;line-height:normal;position:absolute;top:10px;right:5px}.steps-solid.step-last:after,.steps-dashed.step-last:after,.steps-dashed-light.step-last:after{border-bottom:none}.steps-dashed{background:0 0;border:2px dashed #ccc}.steps-dashed-light{background:0 0;border:2px dashed #fff}.steps-dashed-light i{color:#fff}.steps-dashed-light:after{border-bottom:2px dashed #fff}.steps-dashed-light+.steps-info{color:#fff}.steps-info{padding:0 2rem}@media (max-width:1024px){.steps-solid:after,.steps-dashed:after,.steps-dashed-light:after{width:100%;top:50%;right:-110%}}@media (max-width:991px){.steps-solid:after,.steps-dashed:after,.steps-dashed-light:after{width:55%;right:-60%}}@media (max-width:767px){.steps-solid,.steps-dashed,.steps-dashed-light{width:100px;height:100px;line-height:100px}.steps-solid i,.steps-dashed i,.steps-dashed-light i{line-height:100px}.steps-solid:after,.steps-dashed:after,.steps-dashed-light:after{border-bottom:none}.steps-solid .step-number,.steps-dashed .step-number,.steps-dashed-light .step-number{right:-15px}.steps-info{margin-bottom:2rem}}.block-image{width:100%;height:100%;z-index:0;top:0;left:0}img.block-image{object-fit:cover}.block-image:not([class*=absolute]){position:absolute}.img-caption{width:70%;background:#ffffffe6;border-radius:0 .375rem .375rem 0;padding:1.5rem;position:absolute;bottom:10%;left:0}@media (min-width:1025px){.parallax-img{background-attachment:fixed}}@media (max-width:767px){.img-caption{padding:1rem}}.custom-progress{height:2px;box-shadow:none;background:#e8e8e8;border-radius:0;margin-top:4rem;position:relative}.custom-progress .progress-bar .skills-info{color:#242424;text-align:left;font-size:14px;position:relative;top:-20px}.custom-progress .progress-bar span{float:right;color:#242424;line-height:normal;position:relative;bottom:0}.custom-progress:first-child{margin-top:1.5rem}.custom-progress.progress{overflow:visible}.custom-progress.dark-progress .progress-bar,.custom-progress-inside.dark-progress .progress-bar{background:#242424}.progress-light-txt .progress-bar .skills-info,.progress-light-txt .progress-bar span{color:#fff}.custom-progress-inside{height:30px;background:#e8e8e8;margin-top:2rem}.custom-progress-inside .progress-bar .skills-info{color:#fff;text-align:left;padding:0 1rem;font-size:14px;position:relative;top:0}.custom-progress-inside .progress-bar span{float:right;color:#fff;line-height:normal;position:relative;bottom:0}.custom-progress-inside:first-child{margin-top:0}.nav.nav-group{display:inline-block}.nav.nav-group>li{text-align:center;float:left;margin:0 auto}.nav.nav-group>li .nav-link{color:#242424;padding:1rem 2rem;display:block}@media screen and (prefers-color-scheme:dark){.nav.nav-group>li .nav-link{color:#fff}}.nav.nav-group li a{background:#f9f9f9;border:1px solid #e8e8e8;margin-right:-1px}@media screen and (prefers-color-scheme:dark){.nav.nav-group li a{color:#fff;background-color:#000;border:1px solid #2f2f2f}}.nav.nav-group li a.active{color:#09c;background:#fff}@media screen and (prefers-color-scheme:dark){.nav.nav-group li a.active{background-color:#000}}.nav.nav-group li:first-child a{border-radius:30px 0 0 30px}.nav.nav-group li:last-child a{border-radius:0 30px 30px 0}.nav-line{border-bottom:1px solid #e8e8e8}.nav-line>li .nav-link{color:#242424;border-bottom:1px solid #0000;padding:1.5rem 3rem;display:block;position:relative;bottom:-1px}.nav-line>li a.active{color:#09c;border-bottom:1px solid #242424}.nav-vertical{border-right:1px solid #e8e8e8}.nav-vertical .nav-link{color:#242424;border-right:1px solid #0000;padding:1rem;display:block;position:relative;right:-1px}.nav-vertical i{position:relative;top:5px}.nav-vertical a.active{color:#09c;border-right:1px solid #242424}@media (max-width:1024px){.nav.nav-group>li .nav-link,.nav.nav-line>li .nav-link{padding:.6rem 1.5rem}}@media (max-width:767px){.nav-vertical{margin-bottom:2rem}}@media screen and (prefers-color-scheme:dark){.nav-tabs{border-color:#777}.nav-tabs .nav-link{color:#fff!important}.nav-tabs .nav-link.active{background-color:inherit;border-color:#777}}.vl-custom-table{border-spacing:0 1em;border-collapse:separate}.vl-custom-table h6{color:#616161;margin-top:0;padding-top:0;font-size:16px}.vl-custom-table thead th{vertical-align:middle;border-bottom:none;padding:.5rem 1.75rem}.vl-custom-table th,.vl-custom-table td{vertical-align:middle;border-top:none;font-family:Nunito,sans-serif}.vl-custom-table td:first-child{border-left:1px solid #e8e8e8;border-top-left-radius:10px;border-bottom-left-radius:10px}.vl-custom-table td:last-child{border-right:1px solid #e8e8e8;border-top-right-radius:10px;border-bottom-right-radius:10px}.vl-custom-table tbody td{background:#fff;border-top:1px solid #e8e8e8;border-bottom:1px solid #e8e8e8;padding:1.75rem}@media screen and (prefers-color-scheme:dark){.vl-custom-table h6{color:#777}.vl-custom-table td:first-child,.vl-custom-table td:last-child{border-color:#414141}.vl-custom-table tbody .report-row-header>td{background-color:#000;border-color:#414141}.vl-custom-table tbody .report-output-row>td{color:#fff;background-color:#000}.vl-custom-table tbody .report-output-row>td .report-view-box{color:#fff}.vl-custom-table tbody td{background-color:inherit}}.table-striped td,.table-striped th{vertical-align:middle}.table-striped tbody tr:nth-of-type(2n+1){background-color:#00000006}.table thead th{border-bottom-width:1px}.table .btn{white-space:nowrap}@media screen and (prefers-color-scheme:dark){.table thead,.table td{color:#fff}}.team-card{cursor:pointer;position:relative;overflow:hidden;box-shadow:0 8px 16px #0000001a}.team-card:hover{transition:all .3s;box-shadow:0 8px 16px #0003}@media screen and (prefers-color-scheme:dark){.team-card{color:#fff;background-color:#000}}.team-info .top-section{flex-direction:row;display:flex}.team-info .top-section .profile-img{width:200px;height:200px;background-color:#efefef;background-size:cover;margin-bottom:24px;margin-right:24px}.team-info .top-section .team-title p.team-position{margin-bottom:.5rem;font-size:14px}.team-info .top-section .team-social-links a{display:inline-block}@media (max-width:568px){.team-info .top-section{flex-direction:column;margin-bottom:16px}.team-info .top-section .profile-img{margin:0 auto 24px}}.team-info .modal-header{border-bottom:none;padding-bottom:0}@media screen and (prefers-color-scheme:dark){.team-info{color:#fff;background-color:#000}}.social-links a{color:#8c8c8c;margin-right:15px;display:inline-block}.social-links a:hover{color:#09c}@-webkit-keyframes blink{0%{opacity:1}50%{opacity:0}to{opacity:1}}@keyframes blink{0%{opacity:1}50%{opacity:0}to{opacity:1}}.typist-blink:after{height:26px;content:" ";border-right:2px solid;margin-left:3px;margin-right:7px;animation:blink 1s step-start infinite;display:inline-block;position:relative;top:3px}@media (max-width:667px){.typist-blink:after{height:22px;top:2px}}.typist-blink>.selectedText{display:none}.typist-mark>.selectedText{color:#fff;background-color:#242424;font-style:normal}@media screen and (max-width:1080px) and (min-width:768px){.firefly-typist-header{min-height:180px}}@media screen and (max-width:767px) and (min-width:668px){.firefly-typist-header{min-height:102px}}@media screen and (max-width:667px){.firefly-typist-header{min-height:124px}}.count-block{width:150px;height:150px;text-align:center;margin:0 20px;display:inline-block}.count-block h2{margin:2.5rem 0 0;font-weight:700}.count-block span{font-size:16px}.count-solid-light .count-block{background:#fff;border:1px solid #e8e8e8;margin-bottom:20px}.count-solid-dark .count-block{background:#242424;margin-bottom:20px}.count-solid-dark .count-block h2,.count-solid-dark .count-block span{color:#fff}.circle .count-block{border-radius:50%}.round .count-block{border-radius:6px}@media screen and (max-width:767px){.count-block{width:100px;height:100px}.count-block h2{margin:1.5rem 0 0}}.portfolio-filter{margin-bottom:50px;padding:0 1rem;list-style:none}.portfolio-filter li{margin:0 20px;font-family:Lora,serif;display:inline-block;position:relative}.portfolio-filter li a{color:#8c8c8c;text-transform:capitalize;font-size:16px;text-decoration:none}.portfolio-filter li a:hover{color:#242424}.portfolio-filter li:after{content:"/";color:#8c8c8c;position:absolute;top:0;right:-30px}.portfolio-filter li:last-child:after{content:" "}.portfolio-filter li.active a{color:#242424}.portfolio-grid .portfolio-item{float:left}.portfolio-grid .portfolio-item a{text-decoration:none}.portfolio-grid .portfolio-item a:focus{outline:none}.portfolio-grid .portfolio-item .portfolio-image{display:block;position:relative}.portfolio-grid .portfolio-item .portfolio-image img{width:100%;height:auto;display:block}.portfolio-grid .portfolio-item .portfolio-image .portfolio-hover-title{opacity:0;background-color:#242424e6;justify-content:center;align-items:center;margin:0;padding:30px;transition:all .3s;position:absolute;inset:0}.portfolio-grid .portfolio-item .portfolio-image .portfolio-hover-title .portfolio-content{width:100%;text-align:left;transition:all .3s;position:absolute;bottom:2rem;left:2rem}.portfolio-grid .portfolio-item .portfolio-image .portfolio-hover-title .portfolio-content h6{color:#fff;margin-bottom:.2rem;font-size:16px}.portfolio-grid .portfolio-item .portfolio-image .portfolio-hover-title .portfolio-content .portfolio-category span{color:#ccc;margin-right:5px;font-family:Lora,serif;font-size:14px}.portfolio-grid .portfolio-item:hover .portfolio-hover-title{opacity:1}.portfolio-grid .portfolio-title{margin:5% 0}.portfolio-grid .portfolio-title .portfolio-content h6{color:#242424;margin-bottom:.2rem}.portfolio-grid .portfolio-title .portfolio-content span{color:#8c8c8c;font-family:Lora,serif}.portfolio-grid.grid-2 .portfolio-item{width:50%}@media (max-width:768px){.portfolio-grid.grid-2 .portfolio-item{width:50%}}@media (max-width:568px){.portfolio-grid.grid-2 .portfolio-item{width:100%}}.portfolio-grid.grid-3 .portfolio-item{width:33.33%}@media (max-width:768px){.portfolio-grid.grid-3 .portfolio-item{width:50%}}@media (max-width:568px){.portfolio-grid.grid-3 .portfolio-item{width:100%}}.portfolio-grid.grid-4 .portfolio-item{width:25%}@media (max-width:768px){.portfolio-grid.grid-4 .portfolio-item{width:50%}}@media (max-width:568px){.portfolio-grid.grid-4 .portfolio-item{width:100%}}.portfolio-grid.grid-4 .portfolio-item .portfolio-content h6{font-size:16px}.portfolio-grid.grid-4 .portfolio-item .portfolio-content span{font-size:14px}.portfolio-grid.grid-5 .portfolio-item{width:20%}@media (max-width:768px){.portfolio-grid.grid-5 .portfolio-item{width:50%}}@media (max-width:568px){.portfolio-grid.grid-5 .portfolio-item{width:100%}}.portfolio-grid.grid-5 .portfolio-item .portfolio-content h6,.portfolio-grid.grid-5 .portfolio-item .portfolio-content span{font-size:14px}.portfolio-grid.grid-2.gutter{margin-right:-2%}.portfolio-grid.grid-2.gutter .portfolio-item{width:48%;margin-bottom:2%;margin-right:2%}@media (max-width:768px){.portfolio-grid.grid-2.gutter .portfolio-item{width:48%}}@media (max-width:568px){.portfolio-grid.grid-2.gutter .portfolio-item{width:98%}}.portfolio-grid.grid-3.gutter{margin-right:-2%}.portfolio-grid.grid-3.gutter .portfolio-item{width:31.33%;margin-bottom:2%;margin-right:2%}@media (max-width:768px){.portfolio-grid.grid-3.gutter .portfolio-item{width:48%}}@media (max-width:568px){.portfolio-grid.grid-3.gutter .portfolio-item{width:98%}}.portfolio-grid.grid-4.gutter{margin-right:-2%}.portfolio-grid.grid-4.gutter .portfolio-item{width:23%;margin-bottom:2%;margin-right:2%}@media (max-width:768px){.portfolio-grid.grid-4.gutter .portfolio-item{width:48%}}@media (max-width:568px){.portfolio-grid.grid-4.gutter .portfolio-item{width:98%}}.portfolio-grid.grid-5.gutter{margin-right:-2%}.portfolio-grid.grid-5.gutter .portfolio-item{width:18%;margin-bottom:2%;margin-right:2%}@media (max-width:768px){.portfolio-grid.grid-5.gutter .portfolio-item{width:48%}}@media (max-width:568px){.portfolio-grid.grid-5.gutter .portfolio-item{width:98%}}.portfolio-masonry .portfolio-title{padding-left:3%}.portfolio-masonry.gutter .portfolio-title{padding-left:0}.portfolio-grid.gutter .portfolio-item .portfolio-image .portfolio-hover-title,.portfolio-masonry.gutter .portfolio-item .portfolio-image .portfolio-hover-title,.portfolio-grid.gutter img,.portfolio-masonry.gutter img{border-radius:6px}.isotope-item{z-index:2}.isotope-hidden.isotope-item{pointer-events:none;z-index:1}.isotope,.isotope .isotope-item{transition-duration:.8s}.isotope{transition-property:height,width}.isotope .isotope-item{transition-property:transform,opacity}.isotope.no-transition,.isotope.no-transition .isotope-item,.isotope .isotope-item.no-transition{transition-duration:0s}.isotope.infinite-scrolling{transition:none}.twitter-feed-style{background:#fff;border:1px solid #e8e8e8;position:relative}.twitter-feed-style:after{content:"";color:#e8e8e8;font-family:FontAwesome;font-size:24px;position:absolute;top:1rem;right:1.5rem}.twitter-feed-style ul{margin-bottom:0;padding:0;list-style:none}.twitter-feed-style ul li{padding:2rem;position:relative;overflow:hidden}.twitter-feed-style .user{width:18%;float:left;margin-bottom:.928571em}.twitter-feed-style .user img{max-width:80%;height:auto;border-radius:50%}.twitter-feed-style .user [data-scribe=component\:author]{margin-left:1.3rem;position:absolute;top:10%;left:18%}.twitter-feed-style .user [data-scribe=component\:author] a{text-decoration:none}.twitter-feed-style .user [data-scribe=component\:author] span{display:block}.twitter-feed-style .user [data-scribe=component\:author] [data-scribe=element\:name]{color:#242424;font-weight:700}.twitter-feed-style .user [data-scribe=component\:author] [data-scribe=element\:screen_name]{color:#8c8c8c;font-size:14px}.twitter-feed-style .tweet{color:#8c8c8c;word-break:break-all;margin-top:4rem;margin-bottom:.464286em}.twitter-feed-style .tweet a{margin:0 3px}.twitter-feed-style .tweet,.twitter-feed-style .timePosted{width:82%;float:right}.twitter-feed-style .timePosted{margin-bottom:0;font-size:14px}.twitter-feed-style .timePosted a{color:#8c8c8c}.twitter-feed-style .interact{display:none}.twitter-feed-alt .user [data-scribe=component\:author]{display:none}.twitter-feed-alt .tweet{margin-top:0}.twitter-feed-alt:after{content:""}.floating-search-wrap{position:fixed;top:40%;left:3%}.floating-search-wrap a{color:#242424;margin-bottom:1.5rem;text-decoration:none;display:block}.floating-search-wrap a:hover{color:#09c}.floating-social-link{position:fixed;top:70%;right:0%;transform:translate(30%)rotate(-90deg)}.floating-social-link a{color:#242424;margin-left:.5rem;text-decoration:none}.floating-social-link a:hover{color:#09c}.floating-social-link span{color:#ccc}@media (max-width:1249px){.floating-search-wrap,.floating-social-link{display:none}}.blog-post{border-bottom:1px solid #ccc;margin-bottom:3.5rem;padding-bottom:3rem}.meta a,.meta.text-white a{color:#616161}.meta .meta-separator,.meta.text-white .meta-separator{width:30px;border-top:1px solid #616161;margin:0 15px;display:inline-block;position:relative;bottom:3px}.meta.text-white a{color:#fff}.meta.text-white .meta-separator{border-top:1px solid #fff}.blog-widget .instagram-feed a{width:95px;height:95px}.blog-single p{margin-bottom:3rem}.single-post .comments-area,.single-post .comments{margin-bottom:5rem;display:block}.single-post .comments-area .comments-title,.single-post .comments .comments-title{margin-bottom:5rem;font-size:28px}.single-post .comments-area ol,.single-post .comments-area ul,.single-post .comments ol,.single-post .comments ul,.single-post .comments-area ol ol,.single-post .comments-area ol ul,.single-post .comments-area ul ol,.single-post .comments-area ul ul,.single-post .comments ol ol,.single-post .comments ol ul,.single-post .comments ul ol,.single-post .comments ul ul{list-style:none}.single-post .comment-list,.single-post .comments>ul{margin:0;padding:0;list-style:none}.single-post .comment-list li,.single-post .comments>ul li{margin-bottom:1rem}.single-post .comment-list li .comment-body,.single-post .comments>ul li .comment-body{border-bottom:1px solid #e8e8e8;margin-bottom:3rem;padding-bottom:1.5rem;position:relative}.single-post .comment-list .comment-meta,.single-post .comments>ul .comment-meta{margin-bottom:1rem}.single-post .comment-list .comment-meta .comment-author img,.single-post .comments>ul .comment-meta .comment-author img{width:100px;height:100px;float:left;border-radius:6px;margin-right:2rem}.single-post .comment-list .comment-meta .comment-author a,.single-post .comments>ul .comment-meta .comment-author a{font-size:16px;font-weight:700}.single-post .comment-list .comment-meta .comment-author .says,.single-post .comments>ul .comment-meta .comment-author .says{display:none}.single-post .comment-list .comment-meta .comment-metadata a,.single-post .comments>ul .comment-meta .comment-metadata a{color:#8c8c8c;font-size:14px}.single-post .comment-list .comment-content,.single-post .comments>ul .comment-content{overflow:hidden}.single-post .comment-list .reply,.single-post .comments>ul .reply{position:absolute;top:0;right:0}.single-post .comment-list .reply a,.single-post .comments>ul .reply a{color:#09c}.single-post .comment-list .reply a:hover,.single-post .comments>ul .reply a:hover{color:#242424}@media (max-width:991px){.single-post .comments-area .comments-title,.comment-reply-title{font-size:1.5rem}.single-post .comments-area .comments-title{margin-bottom:3rem}}@media (max-width:767px){.single-post .comments-area .comments-title,.comment-reply-title{font-size:1.2rem}.single-post .comments-area .comment-list .comment-meta .comment-author img{width:50px;height:auto}.blog-post{margin-bottom:1.5rem;padding-bottom:1.5rem}}.form-qty{height:calc(2.25rem + 8px)}.bd-toc{order:2;padding-top:1.5rem;padding-bottom:1.5rem;font-size:.875rem}@supports (position: sticky){.bd-toc{height:calc(100vh - 4rem);position:sticky;top:4rem;overflow-y:auto}}.section-nav{border-left:1px solid #eee;padding-left:0}.section-nav ul{padding-left:1rem}.toc-entry{display:block}.toc-entry a{color:#77757a;padding:.125rem 1.5rem;display:block}.toc-entry a:hover{color:#007bff;text-decoration:none}.bd-sidebar{order:0}@media (min-width:768px){.bd-sidebar{border-right:1px solid #0000001a}@supports (position: sticky){.bd-sidebar{z-index:1000;height:calc(100vh - 4rem);position:sticky;top:4rem}}}@media (min-width:1200px){.bd-sidebar{flex:0 320px}}@media (prefers-color-scheme:dark){.bd-sidebar{border-right-color:#414141}}.bd-links{margin-left:-15px;margin-right:-15px;padding-top:1rem;padding-bottom:1rem}@media (min-width:768px){@supports (position: sticky){.bd-links{max-height:calc(100vh - 9rem);overflow-y:auto}}.bd-links{display:block!important}}.bd-search{border-bottom:1px solid #0000000d;margin-left:-15px;margin-right:-15px;padding:1rem 15px;position:relative}.bd-search .form-control:focus{border-color:#fc0;box-shadow:0 0 0 3px #ffcc0040}.bd-search-docs-toggle{color:#212529}@media screen and (prefers-color-scheme:dark){.bd-search-docs-toggle{color:#ccc}.bd-search-docs-toggle:hover{color:#e8e8e8}}.bd-sidenav{display:none}.bd-toc-link{color:#000000a6;padding:.25rem 1.5rem;font-weight:600;display:block}.bd-toc-link:hover{color:#000000d9;text-decoration:none}.bd-toc-link code{color:#e83e8c}.bd-toc-link.selected{color:#09c;font-weight:800}.bd-toc-link.selected:hover{color:#069}@media screen and (prefers-color-scheme:dark){.bd-toc-link{color:#fff}.bd-toc-link:hover{color:#ccc}}.bd-toc-item.active{margin-bottom:1rem}.bd-toc-item.active:not(:first-child){margin-top:1rem}.bd-toc-item.active>.bd-toc-link{color:#000000d9}.bd-toc-item.active>.bd-toc-link:hover{background-color:#0000}.bd-toc-item.active>.bd-sidenav{display:block}.bd-sidebar .nav>li>a{color:#000000a6;padding:.25rem 1.5rem;font-size:90%;display:block}.bd-sidebar .nav>li>a:hover{color:#000000d9;background-color:#0000;text-decoration:none}.bd-sidebar .nav>.active>a,.bd-sidebar .nav>.active:hover>a{color:#000000d9;background-color:#0000;font-weight:600}.navbar{flex-wrap:wrap;justify-content:space-between;align-items:center;padding:.5rem 1rem;display:flex;position:relative}.navbar>.container,.navbar>.container-fluid{flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.navbar-brand{font-size:1.25rem;line-height:inherit;white-space:nowrap;margin-right:1rem;padding-top:.3125rem;padding-bottom:.3125rem;display:inline-block}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{flex-direction:column;margin-bottom:0;padding-left:0;list-style:none;display:flex}.navbar-nav .nav-link{padding-left:0;padding-right:0}.navbar-nav .dropdown-menu{float:none;position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;display:inline-block}.navbar-collapse{flex-grow:1;flex-basis:100%;align-items:center}.navbar-toggler{background-color:#0000;border:1px solid #0000;border-radius:.25rem;padding:.25rem .75rem;font-size:1.25rem;line-height:1}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat;display:inline-block}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-left:0;padding-right:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{left:auto;right:0}.navbar-expand-sm .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-left:0;padding-right:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{left:auto;right:0}.navbar-expand-md .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-left:0;padding-right:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{left:auto;right:0}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-left:0;padding-right:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{left:auto;right:0}.navbar-expand-xl .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-left:0;padding-right:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{left:auto;right:0}.navbar-expand .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:#000000e6}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#000000e6}.navbar-light .navbar-nav .nav-link{color:#00000080}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:#000000b3}.navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:#000000e6}.navbar-light .navbar-toggler{color:#00000080;border-color:#0000001a}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,")}.navbar-light .navbar-text{color:#00000080}.navbar-light .navbar-text a{color:#000000e6}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#000000e6}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#ffffff80}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}.navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:#ffffff80;border-color:#ffffff1a}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,")}.navbar-dark .navbar-text{color:#ffffff80}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.bd-navbar{min-height:4rem;background-color:#fff;box-shadow:0 .5rem 1rem #0000000d,inset 0 -1px #0000001a}@media (max-width:991.98px){.bd-navbar{padding-left:.5rem;padding-right:.5rem}.bd-navbar .navbar-nav-scroll{max-width:100%;height:2.5rem;margin-top:.25rem;font-size:.875rem;overflow:hidden}.bd-navbar .navbar-nav-scroll .navbar-nav{white-space:nowrap;-webkit-overflow-scrolling:touch;padding-bottom:2rem;overflow-x:auto}}@media (min-width:768px){@supports (position: sticky){.bd-navbar{z-index:1071;position:sticky;top:0}}}.bd-navbar .navbar-nav .nav-link{color:#09c;padding-left:.5rem;padding-right:.5rem}.bd-navbar .navbar-nav .nav-link.active,.bd-navbar .navbar-nav .nav-link:hover{color:#069;background-color:#0000}.bd-navbar .navbar-nav .nav-link.active{font-weight:500}.bd-navbar .navbar-nav-svg{width:1rem;height:1rem;vertical-align:text-top;display:inline-block}.bd-navbar .dropdown-menu{font-size:.875rem}.bd-navbar .dropdown-item.active{color:#212529;background-color:#0000;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23292b2c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-position:.4rem .6rem;background-repeat:no-repeat;background-size:.75rem .75rem;font-weight:500}@media screen and (prefers-color-scheme:dark){.bd-navbar{color:#fff;background-color:#0f0f0f;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}}.bg-primary{background:#09c}.bg-success{background:#96be5d}.bg-warning{background:#fab63f}.bg-info{background:#18b9d4}.bg-danger{background:#ef5a5a}.text-primary{color:#09c}.text-purple{color:#7431ff}.text-muted{color:#8c8c8c!important}.rounded{border-radius:6px!important}.card{border-color:#e8e8e8;border-radius:6px}.card-img-top{border-top-left-radius:6px;border-top-right-radius:6px}.card-footer{background:0 0;border-top:1px solid #0000000f;padding:1.1rem 1.25rem}.bg-dark .card-footer{border-top:1px solid #ffffff0f}.alert-secondary{color:#242424;background-color:#f4f5f7;border-color:#e8e8e8}.alert-warning{color:#fab63f;background-color:#fef8ec;border-color:#fab63f}.alert-success{color:#7dad14;background-color:#f3f8ed;border-color:#7dad14}.alert-danger{color:#ef5a5a;background-color:#fdeced;border-color:#ef5a5a}.alert-primary{color:#09c;background-color:#eaf4ff;border-color:#09c}.alert-solid-secondary{color:#242424;background-color:#e8e8e8;border-color:#e8e8e8}.alert-solid-warning{color:#fff;background-color:#fab63f;border-color:#fab63f}.alert-solid-success{color:#fff;background-color:#7dad14;border-color:#7dad14}.alert-solid-danger{color:#fff;background-color:#ef5a5a;border-color:#ef5a5a}.alert-solid-primary{color:#fff;background-color:#09c;border-color:#09c}.list-group-item{color:#8c8c8c;border-color:#e8e8e8;padding:1.3rem 1.25rem}.badge{position:relative;bottom:1px}.custom-modal .modal-body{padding:2.5rem}.custom-modal .modal-content{border:none}.custom-modal .modal-header{padding:1rem}.custom-modal .modal-header .close{padding:.5rem 1rem}.modal-body{padding:1.8rem}.modal-header,.modal-footer{padding:1rem 1.8rem}@media screen and (prefers-color-scheme:dark){.modal-header{border-bottom-color:#414141}.modal-footer{border-top-color:#414141}}.modal-image{border-top-left-radius:.25rem;border-top-right-radius:.25rem;position:relative}.modal-image .close{width:50px;height:50px;opacity:1;text-shadow:none;background:#fff;border-radius:50%;line-height:50px;position:absolute;top:1.875rem;right:1.875rem}.modal-image .close:hover{color:#fff;opacity:1;background:#09c}@media (min-width:576px){.modal-dialog{max-width:600px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}.ls-2{letter-spacing:1rem}.ls-3{letter-spacing:2rem}.lh-35{line-height:35px}.lh-45{line-height:45px}.h60{height:60%}.h70{height:70%}.curve-bottom-1,.curve-bottom-right{clip-path:polygon(0 0,100% 0,100% 85%,70% 100%,0 85%)}.curve-top-bottom{clip-path:polygon(100% 6%,100% 100%,68% 94%,0% 100%,0 10%,28% 0)}.curve-bottom-center{clip-path:polygon(0 0,100% 0,100% 70%,50% 100%,0 70%)}.font-lora{font-family:Lora,serif}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-20{font-size:20px!important}.font-size-60{font-size:60px}.font-size-72{font-size:72px}.i-size-60{font-size:60px}.section-gray,.bg-gray{background-color:#e8e8e8}@media screen and (prefers-color-scheme:dark){.section-gray,.bg-gray{background-color:#2f2f2f}.text-dark{color:#e8e8e8!important}}.bg-white{background:#fff}.bg-dark{background:#242424!important}.bg-dark hr{border-top:1px solid #ffffff80}@media screen and (prefers-color-scheme:dark){hr{border-top-color:#414141}}.bg-green-light{background:#d7f5e3}.bg-dark-alt{background:#303030}.bg-extra{background:#e5e8ec}.component-section{padding:4rem 0;position:relative;overflow:hidden}.show-markup-section{position:relative}.demo .btn{margin:0 .4rem 1rem}.title-separator{margin-bottom:4rem;position:relative}.title-separator:after{content:"";width:60px;height:2px;background:#fff;position:absolute;bottom:-2rem;left:0}.gradient-primary{background-image:linear-gradient(90deg,#09c 0%,#7431ff 100%)}.cta-img{background-position:50%;background-repeat:no-repeat;background-size:cover;position:relative;overflow:hidden}.border-light{border-color:#ffffff20!important}.custom-dropdown{border:none;box-shadow:0 1px 10px #97a4af26}.custom-dropdown .dropdown-item{font-size:12px}.custom-dropdown-sm{min-width:6rem}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.avatar-sm{width:35px;height:35px}.avatar,.avatar-md{width:70px;height:70px}.avatar-lg{width:140px;height:140px}.icon-sm{font-size:28px}.icon-md{font-size:42px}.icon-lg{font-size:56px}.ft-tag{color:#fff;background:#09c;border-radius:30px;padding:3px 12px;font-size:11px;font-weight:700}.ft-inside-tl{position:absolute;top:1rem;left:1rem}.ft-inside-tr{position:absolute;top:1rem;right:1rem}.ft-inside-bl{position:absolute;bottom:1rem;left:1rem}.ft-inside-br{position:absolute;bottom:1rem;right:1rem}.ft-overflow-bl{border:2px solid #fff;position:absolute;bottom:-.8rem;left:1rem}.ft-overflow-br{border:2px solid #fff;position:absolute;bottom:-.8rem;right:1rem}.ft-overflow-bc{border:2px solid #fff;position:absolute;bottom:-.8rem;left:50%;transform:translate(-50%)}.ft-overflow-tl{border:2px solid #fff;position:absolute;top:2rem;left:-2rem}.ft-overflow-tr{border:2px solid #fff;position:absolute;top:2rem;right:-2rem}.ft-overflow-tc{border:2px solid #fff;position:absolute;top:-1rem;left:50%;transform:translate(-50%)}@media (max-width:991px){.component-section{padding:3rem 0}}@media (max-width:767px){.i-size-60{font-size:3rem}.lh-35,.lh-45{line-height:normal}.ls-2{letter-spacing:.5rem}.font-size-60{font-size:28px}.font-size-72{font-size:32px}.icon-md{font-size:2rem}.icon-lg{font-size:2.5rem}.border-sm-right-0{border-right:none!important}.curve-top-bottom,.curve-bottom-1,.curve-bottom-right{clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}.btn-sm-block{width:100%;padding:.75rem 2rem;display:block}}@media (min-width:991px){.neg-mt-100{margin-top:-100px}.neg-mt-300{margin-top:-300px}.clab-shape{padding-bottom:13.5rem;overflow:hidden}.clab-shape:after{content:"ă";color:#1420f11a;font-size:1200px;font-weight:800;position:absolute;top:-35%;left:50%;transform:translate(-50%)}.clab-shape .container{z-index:1;position:relative}}.markup-example{position:relative}.markup-example .btn{z-index:2;padding:.385rem 1rem;line-height:normal;position:absolute;top:.5rem;right:.5rem}.markup-example pre[class*=language-]{background:#e8e8e8;border-radius:6px;padding:3rem 1rem 1rem}.component-section>button,.show-markup-section>button{z-index:1000;opacity:0;transition:opacity .2s linear;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.component-section:hover>button,.show-markup-section:hover>button{opacity:1}.clip-txt{text-align:center;color:#0000;background-position:50%;background-size:cover;background-clip:text;-webkit-background-clip:text;font-size:15rem;font-weight:700;line-height:normal}@media (max-width:565px){.clip-txt{font-size:6rem}}@media (min-width:769px){.clip-txt{font-size:25rem}}.landing-slider .owl-carousel .owl-item img{width:100%}@media screen and (max-width:991px){.wow{visibility:visible!important;animation-name:none!important}}.buy-link{color:#fff;z-index:1200;text-transform:uppercase;text-align:center;background:#82b440;border-radius:0 5px 5px 0;padding:.6rem;font-size:12px;font-weight:700;transition:all .3s;position:fixed;top:30%;left:-5px}.buy-link:hover{color:#fff;text-decoration:none;left:0}html body{background-color:#fff}@media screen and (prefers-color-scheme:dark){html body{color:#fff;background-color:#000}}body.modal-open{overflow:hidden}.report-view-box{height:80vh;white-space:pre-wrap;cursor:default;overflow:hidden}.report-view-box>div{height:100%;max-width:1035px;margin:auto;overflow:auto}.report-view-box .split-view-container{display:flex;overflow:hidden}.report-view-box .split-view-container .solidity-coverage-container{width:100%;min-width:0;flex-direction:column;flex-grow:0;display:flex}.report-view-box .split-view-container .solidity-coverage-container .solidity-coverage{height:100%;overflow:auto}.report-view-box .split-view-container .solidity-coverage-container .message-box{height:25%}@media screen and (prefers-color-scheme:dark){.report-view-box .split-view-container .solidity-coverage-container .message-box table.table-light{color:#fff;background-color:#000}}.report-view-box .split-view-container .bytecode-coverage{max-width:25%;overflow:auto}.report-view-box .split-view-container .contract-explorer{width:25%;background-color:#fcfcfc;padding:8px 0;font-size:.9rem;overflow:auto}.report-view-box .split-view-container .contract-explorer>ul>li{cursor:pointer;padding:4px 8px;transition:background .3s}.report-view-box .split-view-container .contract-explorer>ul>li:hover{background:#ddd}.report-view-box .split-view-container .contract-explorer>ul>li.active{background:#8ed3f1}.report-view-box .split-view-container .contract-explorer>ul>li:first-child{font-size:1rem}.report-view-box .split-view-container .contract-explorer>ul>li:not(:first-child){border-left:1px solid #ccc;margin-left:.75rem}@media screen and (prefers-color-scheme:dark){.report-view-box .split-view-container .contract-explorer{color:#fff;background-color:#000}.report-view-box .split-view-container .contract-explorer>ul>li.active{background:#09c}}.report-view-box .split-view-container tr{border-bottom:2px solid #0000}.report-view-box .split-view-container tr:hover{cursor:pointer}.report-view-box .split-view-container tr.covered:hover{border-bottom:2px solid #91daa6}.report-view-box .split-view-container tr.weak-covered:hover{border-bottom:2px solid #d2da91}.report-view-box .split-view-container tr.not-covered:hover{border-bottom:2px solid #da919a}.report-view-box .split-view-container tr.active{filter:brightness(85%)}.report-view-box .split-view-container tr.covered.active{border-bottom:2px solid #91daa6}.report-view-box .split-view-container tr.weak-covered.active{border-bottom:2px solid #d2da91}.report-view-box .split-view-container tr.not-covered.active{border-bottom:2px solid #da919a}.report-view-box .split-view-container .has-highlight tr.text-muted.not-covered,.report-view-box .split-view-container .has-highlight tr.text-muted.covered,.report-view-box .split-view-container .has-highlight tr.text-muted.weak-covered,.report-view-box .split-view-container .has-highlight tr.text-muted tr,.report-view-box .split-view-container .has-highlight tr.text-muted td{background-color:inherit!important}.report-view-box .split-view-container .has-highlight tr.message-muted{display:none}.benefits{padding-bottom:48px}.has-highlighted>table tr:not(.highlighted) *{color:#ccc!important;background-color:inherit!important}pre[class*=language-]{background-color:inherit;padding:0}.coverage{height:100%;font-size:14px;overflow:auto}.coverage:not(.solidity-coverage){font-size:13px}.coverage tr td,.coverage tr th{white-space:nowrap;border:0;padding:0 0 0 1em;border-radius:0!important}.coverage tr td pre,.coverage tr th pre{background:inherit;margin:0;padding:0}.coverage tr th{border-bottom:1px solid #dfdfdf;font-size:16px}.coverage tr td.index,.coverage tr th.index{text-align:right;width:3em;border-right:1px solid #ccc;padding-right:1ch}.coverage tr td.index{background-color:#fafbfc}.coverage tr td.opcode{font-weight:600}.coverage tr td.hit-count{text-align:center}.coverage tr.covered,.coverage tr.covered td{background-color:#e6ffed}.coverage tr.covered td.index{background-color:#dbffe3}.coverage tr.not-covered,.coverage tr.not-covered td{background-color:#ffe6e8}.coverage tr.not-covered td.index{background-color:#ffdbdf}.coverage tr.weak-covered,.coverage tr.weak-covered td{background-color:#fcffe6}.coverage tr.weak-covered td.index{background-color:#fbffdb}@media screen and (prefers-color-scheme:dark){.coverage{color:#ccc}.coverage th{color:#fff}.coverage tr.not-covered td.index,.coverage tr.covered td.index{color:#ccc}.coverage tr th.index{border-color:#414141}.coverage tr td.index{background-color:#000;border-color:#414141}.coverage tr td.opcode{color:#ccc}.coverage tr.covered,.coverage tr.covered td{background-color:#295234}.coverage tr.covered td.index{background-color:#214129}.coverage tr.not-covered,.coverage tr.not-covered td{background-color:#692217}.coverage tr.not-covered td.index{background-color:#541b12}.coverage tr.weak-covered,.coverage tr.weak-covered td{background-color:#68360b}.coverage tr.weak-covered td.index{background-color:#512a09}}.coverage table{width:100%}.mouse-pointer{cursor:pointer}.wizard-grid div{padding:10px}.wizard-grid .btn-outline,.wizard-box .btn-outline{margin-left:0}a.wizard-link:visited{color:purple}.code{background-color:#fafbfc;padding:10px}@media screen and (prefers-color-scheme:dark){.code{color:#fff;background-color:#2f2f2f}}.code-block-selectors{color:#000;width:fit-content;background-color:#e5e5e5;border-radius:4px;margin-bottom:8px;padding:2px 12px;position:absolute;top:0;left:0}@media screen and (prefers-color-scheme:dark){.code-block-selectors{color:#fff;background-color:#616161}}.nav-item{cursor:pointer}.ns-form{grid-column-gap:1rem;grid-template-columns:75% 25%;display:grid}.btn-disabled{background:#fff;border:2px solid #e8e8e8;margin-left:2em;color:gray!important}#firefly-reports,#firefly-report{margin-bottom:100px}#firefly-reports thead tr th,#firefly-report thead tr th{text-align:center;padding:.5rem .75rem}#firefly-reports tbody .report-row-header td,#firefly-report tbody .report-row-header td{text-align:center}#firefly-reports tbody .report-row-header td .report-id,#firefly-report tbody .report-row-header td .report-id{color:#09c;text-decoration:underline}#firefly-reports tbody .report-row-header td .report-id:hover,#firefly-report tbody .report-row-header td .report-id:hover{color:#007aa3}#firefly-reports .center-image,#firefly-report .center-image{padding-bottom:0;padding-left:21px;padding-right:21px}.report-buttons>ul{align-items:center;margin:0;display:flex}.report-buttons>ul>li p{margin:0}.report-buttons>ul>li:not(:last-child){margin-right:1.5rem}.report-buttons>ul .dropdown{display:inline-block}.report-buttons>ul .dropdown.show{outline:2px solid #09c}.report-buttons>ul .dropdown img{height:2rem}.report-buttons>ul .dropdown img:hover{outline:1px solid #09c}.report-buttons>ul .dropdown-toggle:after{content:none}@media screen and (prefers-color-scheme:dark){.report-buttons>ul{color:#fff}.report-buttons>ul .dropdown-menu,.report-buttons>ul .dropdown-item{color:#fff;background-color:#000}.report-buttons>ul .dropdown-item:hover{color:#c2c2c2}}@media (prefers-color-scheme:dark){.dropdown-menu,.dropdown-item{color:#fff;background-color:#1b1b1b}.dropdown-item:hover{color:#fff;background-color:#2f2f2f}}.report-coverage-row td{position:relative}.report-coverage-row .report-container .fullscreen-btn{cursor:pointer;color:#09c;font-size:2rem;position:absolute;top:.5rem;right:2rem}.report-coverage-row .report-container.fullscreen{width:100%;height:100%;z-index:10;background-color:#000000e6;padding:2rem;transition:all .15s linear;position:fixed;top:0;left:0}.report-coverage-row .report-container.fullscreen .report-wrapper{height:100%;background-color:#fff;border-radius:.3rem;padding:2rem;animation-name:zoom;animation-duration:.6s;position:relative;overflow:auto}.report-coverage-row .report-container.fullscreen .report-wrapper .fullscreen-btn{position:fixed;top:2rem;right:2.8rem}.report-coverage-row .report-container.fullscreen .report-wrapper .report-view-box{height:calc(100vh - 256px)}@media screen and (prefers-color-scheme:dark){.report-coverage-row .report-container.fullscreen .report-wrapper{background-color:#000}.report-coverage-row .report-container.fullscreen .report-wrapper th{color:#fff}}.report-coverage-row .report-container.fullscreen .coverage,.report-coverage-row .report-container.fullscreen .split-view-container{max-width:initial}.introjs-hint.introjs-fixedhint{z-index:11}i.fa{margin:0 1ch}.expandable-title{padding:.3rem 0;transition:all .3s}.expandable-title:hover{cursor:pointer;color:#09c}.expandable-title:not(.contract-title){font-weight:400}.contract-title .contract-coverage{float:right}.contract-hint-trigger{text-align:center;display:block}.contract-hint-trigger:hover{cursor:pointer;color:#fc0}.contract-hint-trigger .contract-hint-trigger-hidden{display:none}.source-name{border-bottom:1px solid #ccc;font-size:12px}@media screen and (prefers-color-scheme:dark){.source-name{color:#fff;border-color:#414141}}.indent-2{padding-left:2ch}.btn-download-report{background-image:url(Firefly-Download-Icon.8094a4f0.png)}.btn-download-report:hover{background-image:url(Firefly-Download-Icon-Inverted.32636383.png)}.btn-copy-report-id{cursor:pointer;background-size:cover;display:inline-block;font-size:1rem!important}@media (min-width:1025px){#firefly-header:not(.sticky-nav)>.container>.row>.col-12{min-height:150px}.vlmenu>li:not(:last-child){margin-right:20px}.vlmenu>li>a{padding-bottom:0}.vlmenu li:hover{border-bottom:2px solid #fc0}.vlmenu li.active{border-bottom:2px solid #fc0}.vlmenu li>ul{z-index:1}#dashboard-submenu{position:relative}#dashboard-submenu>ul{z-index:0;box-shadow:none;width:260px;justify-content:space-between;display:flex;position:absolute;top:50px;right:0}#dashboard-submenu>ul>li{display:inline-block}#dashboard-submenu>ul>li>a{padding:0;display:inline-block}#dashboard-submenu>ul>li>a:hover{color:#000;background:0 0}}@media screen and (min-width:1025px) and (prefers-color-scheme:dark){#dashboard-submenu>ul>li>a:hover{color:#fff}}.breadcrumb{background-color:inherit}.breadcrumb-item+.breadcrumb-item:before{content:">"!important}div.table-responsive{padding:0 8px}#youtube-video{height:303.75px;width:540px;max-width:100%;background-color:#d7d7d7;justify-content:center;align-items:center;display:flex}video{width:100%!important;height:auto!important}.gif:hover{opacity:.7}.custom-control-input:checked~.custom-control-label:before{background-color:#09c}.divider-bar-closed{color:#fff;background:#09c}.divider-bar-closed:hover{background:#008ab8}.divider-bar-opened{background:#fc0}.divider-bar-opened:hover{background:#e6b800}.divider-bar{cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;transition:background .2s ease-in-out;display:flex}.divider-bar span{letter-spacing:1px}@media screen and (prefers-color-scheme:dark){.divider-bar{color:#fff;background:#343434}.divider-bar:hover{background-color:#393939}}.divider-bar-vertical{width:1.3rem;flex-direction:column}.divider-bar-vertical span{writing-mode:vertical-lr;text-orientation:sideways}.divider-bar-vertical i{margin:1ch 0}.divider-bar-horizontal{height:1.3rem;flex-direction:row}#contact-links li:hover{cursor:pointer;border:none!important}#contact-links img{height:1.5rem}#firefly-profile .btn{margin:4px auto;padding:4px 1rem}.icon{color:#09c;font-size:2rem;transition:color .2s}.icon:hover{color:#069}.icon.active{color:#fc0}.icon.active:hover{color:#ccb400}@media screen and (prefers-color-scheme:dark){.introjs-tooltip{background-color:#000}.introjs-helperLayer{background-color:#414141e6}}.modal{width:100%;height:100%;background-color:#000000e6;display:none;position:fixed;top:0;left:0;overflow:auto}#email-modal{z-index:2000}.modal-content{width:80%;max-width:1024px;margin:auto;display:block}@media screen and (prefers-color-scheme:dark){.modal-content{color:#fff;background-color:#141414}}video.modal-content{margin-top:100px}#modal-caption{width:80%;max-width:700px;text-align:center;color:#ccc;margin:auto;padding:10px 0;display:block}.modal-content,#modal-caption{animation-name:zoom;animation-duration:.6s}@keyframes zoom{0%{transform:scale(0)}to{transform:scale(1)}}.close{color:#09c;z-index:99;font-size:50px;font-weight:700;transition:all .3s;position:absolute;top:15px;right:35px}.close:hover,.close:focus{color:#fc0;cursor:pointer;text-decoration:none}@media only screen and (max-width:1024px){.modal-content{width:100%}}#firefly-feedback{z-index:999;position:fixed;bottom:30px;right:30px}#firefly-feedback>picture>img{width:100px}#firefly-feedback img{cursor:pointer;opacity:.7;transition:opacity .3s}#firefly-feedback img:hover{opacity:1}#firefly-feedback .feedback-form{background:#fff;border-radius:4px;flex-direction:column;justify-content:space-evenly;padding:24px;display:flex;box-shadow:1px 2px 10px #0003}#firefly-feedback .feedback-form .fa-times{cursor:pointer;opacity:.5;transition:opacity .3s;position:absolute;top:25px;right:25px}#firefly-feedback .feedback-form .fa-times:hover{opacity:1}#firefly-feedback .feedback-form .feedback-rating{justify-content:space-evenly;display:flex}#firefly-feedback .feedback-form .feedback-rating>picture>img{height:120px;margin:4px 18px}#firefly-feedback .feedback-form .feedback-message{float:left;width:100%;height:150px;margin-top:10px;margin-bottom:10px;overflow:scroll}@media only screen and (max-width:767px){#firefly-feedback .feedback-form{position:fixed;bottom:8px;left:8px;right:8px}#firefly-feedback .feedback-form .feedback-rating>picture>img{height:100px}}@media screen and (prefers-color-scheme:dark){#firefly-feedback .feedback-form{color:#fff;background-color:#000}}#contact-links img{margin-right:1rem}#bytecodes,#solidity-files,#contract-links{margin-bottom:24px}.drop-area{text-align:center;height:64px;cursor:pointer;background-color:#f7f8fa;border-style:dashed;border-color:#616161;margin-top:0;margin-bottom:0}.drop-area:hover{background-color:#edf1f4}.drop-area p{margin:0;position:relative;top:50%;transform:translateY(-50%)}.drop-area.uploader{margin-bottom:0}@media screen and (prefers-color-scheme:dark){.drop-area{color:#242424;border-color:#777}}.ratings,.ratings p{display:inline-block}.ratings #positive{text-align:left}.ratings #indifferent{text-align:center}.ratings #negative{text-align:right}.feedback-table{height:70%}.color-erc20-green{color:#007f3a!important}.background-color-erc20-green{background-color:#007f3a!important}#erc20-dashboard .bytecode-row-header h6 a,#erc20-bytecode .bytecode-row-header h6 a,#erc20-dev-dashboard .bytecode-row-header h6 a{color:#09c;text-decoration:underline}#erc20-dashboard .bytecode-row-header h6 a:hover,#erc20-bytecode .bytecode-row-header h6 a:hover,#erc20-dev-dashboard .bytecode-row-header h6 a:hover{color:#007aa3}#erc20-dashboard .markdown-preview,#erc20-bytecode .markdown-preview,#erc20-dev-dashboard .markdown-preview{border:1px solid #e8e8e8;border-radius:4px;margin-bottom:32px;padding:8px}#erc20-dashboard .markdown-preview pre[class*=language-],#erc20-bytecode .markdown-preview pre[class*=language-],#erc20-dev-dashboard .markdown-preview pre[class*=language-]{word-break:normal;white-space:pre-wrap;background-color:#f7f8fa;padding:16px;font-size:.85rem;overflow:auto}@media screen and (prefers-color-scheme:dark){#erc20-dashboard .markdown-preview,#erc20-bytecode .markdown-preview,#erc20-dev-dashboard .markdown-preview{color:#e8e8e8;border:1px solid #414141}#erc20-dashboard .markdown-preview pre[class*=language-],#erc20-bytecode .markdown-preview pre[class*=language-],#erc20-dev-dashboard .markdown-preview pre[class*=language-]{background-color:#1d1f21}#erc20-dashboard,#erc20-bytecode,#erc20-dev-dashboard,#erc20-dashboard .table,#erc20-bytecode .table,#erc20-dev-dashboard .table{color:#fff}}.logo-link{color:#242424}@media screen and (prefers-color-scheme:dark){.logo-link{color:#fff}}pre[class*=language-],pre{word-break:normal;white-space:pre-wrap;background-color:#f7f8fa;padding:16px;font-family:Inconsolata,Monaco,Consolas,Courier New,Courier,monospace;font-size:.85rem;overflow:auto}code[class*=language-]{font-family:Inconsolata,Monaco,Consolas,Courier New,Courier,monospace}pre[class*=language-]{border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}@media screen and (prefers-color-scheme:dark){pre[class*=language-],pre{color:#c5c8c6;background-color:#1d1f21}}.h1 a,.h2 a,.h3 a,.h4 a,.h5 a,.h6 a,h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:#09c}.h1 a:hover,.h2 a:hover,.h3 a:hover,.h4 a:hover,.h5 a:hover,.h6 a:hover,h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color:#069}.rv-btn{color:#242424;background-color:#fff;border-color:#242424}.rv-btn:hover{background-color:#f2f2f2;border-color:#171717}@media screen and (prefers-color-scheme:dark){.rv-btn{color:#fff;background-color:#242424;border-color:#fff}.rv-btn:hover{color:#fff;background-color:#212121;border-color:#f2f2f2}}.rv-btn-yellow{color:#242424;background-color:#fc0;border-color:#fc0}.rv-btn-yellow:hover{background-color:#e6b800;border-color:#e6b800}@media screen and (prefers-color-scheme:dark){.rv-btn-yellow{background-color:#ccb400;border-color:#ccb400}.rv-btn-yellow:hover{background-color:#b39e00;border-color:#b39e00}}.rv-btn-blue{background-color:#09c;border-color:#09c;color:#fff!important}.rv-btn-blue:hover{background-color:#0086b3;border-color:#0086b3;color:#fff!important}@media screen and (prefers-color-scheme:dark){.rv-btn-blue{background-color:#069;border-color:#069}.rv-btn-blue:hover{background-color:#005580;border-color:#005580}}.rv-btn-red{background-color:#f04124;border-color:#f04124;color:#fff!important}.rv-btn-red:hover{background-color:#ea2f10;border-color:#ea2f10;color:#fff!important}@media screen and (prefers-color-scheme:dark){.rv-btn-red{background-color:#cf2a0e;border-color:#cf2a0e}.rv-btn-red:hover{background-color:#b7250c;border-color:#b7250c}}.rv-btn-green{background-color:#007f3a;border-color:#007f3a;color:#fff!important}.rv-btn-green:hover{background-color:#00662e;border-color:#00662e;color:#fff!important}@media screen and (prefers-color-scheme:dark){.rv-btn-green{background-color:#007f3a;border-color:#007f3a}.rv-btn-green:hover{background-color:#00662e;border-color:#00662e}}.card{position:relative;overflow:hidden;box-shadow:0 8px 16px #0000001a}.card:hover{transition:all .3s;box-shadow:0 8px 16px #0003}@media screen and (prefers-color-scheme:dark){.card{color:#fff;background-color:#141414;border-color:#414141}}blockquote{font-size:inherit;color:#5c5c5c;background-color:#f0f0f0;border-left:4px solid #d6d6d6;margin:16px 0;padding:0 15px}@media screen and (prefers-color-scheme:dark){blockquote{font-size:inherit;color:#fdfdfd;background-color:#323232;border-left:4px solid #474747;margin:16px 0;padding:0 15px}}.page-toc{background-color:#fff;border-left:1px solid #0000001a;border-right:none;overflow:auto}@media (max-width:767.98px){.page-toc{z-index:2000;height:100%;background-color:#fff;border:none;display:none;position:fixed;top:0;overflow:auto}}@media screen and (prefers-color-scheme:dark){.page-toc{background:#000;border-left-color:#414141}}.page-toc .bd-toc-link-wrapper .bd-toc-link{white-space:nowrap;padding:.25rem 0;display:inline}.page-toc .bd-toc-link-wrapper.highlighted .bd-toc-link{color:#09c;font-weight:800}.page-toc-toggle-btn{width:48px;height:48px;z-index:3000;border-radius:100%;padding:0;font-size:150%;display:none;position:fixed;bottom:12px;right:12px}@media (max-width:767.98px){.page-toc-toggle-btn{justify-content:center;align-items:center;display:flex}} \ No newline at end of file diff --git a/assets/css/owl.video.play.e7a23fb2.png b/assets/css/owl.video.play.e7a23fb2.png new file mode 100644 index 0000000000..aa387f962d Binary files /dev/null and b/assets/css/owl.video.play.e7a23fb2.png differ diff --git a/assets/css/select-arrow.b8e89c0c.svg b/assets/css/select-arrow.b8e89c0c.svg new file mode 100644 index 0000000000..4c24a2a342 --- /dev/null +++ b/assets/css/select-arrow.b8e89c0c.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/public_content/assets/img/404.png b/assets/img/404.png similarity index 100% rename from web/public_content/assets/img/404.png rename to assets/img/404.png diff --git a/web/public_content/assets/img/500.png b/assets/img/500.png similarity index 100% rename from web/public_content/assets/img/500.png rename to assets/img/500.png diff --git a/web/public_content/assets/img/hero/kerc20-hero-image.png b/assets/img/hero/kerc20-hero-image.png similarity index 100% rename from web/public_content/assets/img/hero/kerc20-hero-image.png rename to assets/img/hero/kerc20-hero-image.png diff --git a/web/public_content/assets/img/hero/test-coverage-hero-image.png b/assets/img/hero/test-coverage-hero-image.png similarity index 100% rename from web/public_content/assets/img/hero/test-coverage-hero-image.png rename to assets/img/hero/test-coverage-hero-image.png diff --git a/web/public_content/assets/img/hero/test-runner-hero-image.png b/assets/img/hero/test-runner-hero-image.png similarity index 100% rename from web/public_content/assets/img/hero/test-runner-hero-image.png rename to assets/img/hero/test-runner-hero-image.png diff --git a/web/public_content/assets/img/rv-logo-dark.png b/assets/img/rv-logo-dark.png similarity index 100% rename from web/public_content/assets/img/rv-logo-dark.png rename to assets/img/rv-logo-dark.png diff --git a/web/public_content/assets/img/rv-logo.png b/assets/img/rv-logo.png similarity index 100% rename from web/public_content/assets/img/rv-logo.png rename to assets/img/rv-logo.png diff --git a/assets/js/index.js b/assets/js/index.js new file mode 100644 index 0000000000..670ddccf7b --- /dev/null +++ b/assets/js/index.js @@ -0,0 +1,212 @@ +var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};var t={},n={},i=e.parcelRequire2b1d;null==i&&((i=function(e){if(e in t)return t[e].exports;if(e in n){var i=n[e];delete n[e];var o={id:e,exports:{}};return t[e]=o,i.call(o.exports,o,o.exports),o.exports}var s=new Error("Cannot find module '"+e+"'");throw s.code="MODULE_NOT_FOUND",s}).register=function(e,t){n[e]=t},e.parcelRequire2b1d=i),i.register("lJ4Q2",(function(e,t){ +/*! + * jQuery JavaScript Library v3.6.0 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2021-03-02T17:08Z + */ +!function(t,n){"use strict";"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:e.exports,(function(e,t){"use strict";var n=[],i=Object.getPrototypeOf,o=n.slice,s=n.flat?function(e){return n.flat.call(e)}:function(e){return n.concat.apply([],e)},r=n.push,a=n.indexOf,l={},c=l.toString,u=l.hasOwnProperty,d=u.toString,h=d.call(Object),f={},p=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},m=function(e){return null!=e&&e===e.window},g=e.document,v={type:!0,src:!0,nonce:!0,noModule:!0};function y(e,t,n){var i,o,s=(n=n||g).createElement("script");if(s.text=e,t)for(i in v)(o=t[i]||t.getAttribute&&t.getAttribute(i))&&s.setAttribute(i,o);n.head.appendChild(s).parentNode.removeChild(s)}function b(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var _="3.6.0",w=function(e,t){return new w.fn.init(e,t)};function x(e){var t=!!e&&"length"in e&&e.length,n=b(e);return!p(e)&&!m(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}w.fn=w.prototype={jquery:_,constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(w.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(w.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|[\\x20\\t\\r\\n\\f])[\\x20\\t\\r\\n\\f]*"),U=new RegExp(H+"|>"),V=new RegExp(R),Q=new RegExp("^"+j+"$"),G={ID:new RegExp("^#("+j+")"),CLASS:new RegExp("^\\.("+j+")"),TAG:new RegExp("^("+j+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+R),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\([\\x20\\t\\r\\n\\f]*(even|odd|(([+-]|)(\\d*)n|)[\\x20\\t\\r\\n\\f]*(?:([+-]|)[\\x20\\t\\r\\n\\f]*(\\d+)|))[\\x20\\t\\r\\n\\f]*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^[\\x20\\t\\r\\n\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\([\\x20\\t\\r\\n\\f]*((?:-\\d)?\\d*)[\\x20\\t\\r\\n\\f]*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,X=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}[\\x20\\t\\r\\n\\f]?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},ie=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,oe=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},se=function(){h()},re=_e((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{L.apply(O=$.call(w.childNodes),w.childNodes),O[w.childNodes.length].nodeType}catch(e){L={apply:O.length?function(e,t){N.apply(e,$.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}function ae(e,t,i,o){var s,a,c,u,d,p,v,y=t&&t.ownerDocument,w=t?t.nodeType:9;if(i=i||[],"string"!=typeof e||!e||1!==w&&9!==w&&11!==w)return i;if(!o&&(h(t),t=t||f,m)){if(11!==w&&(d=J.exec(e)))if(s=d[1]){if(9===w){if(!(c=t.getElementById(s)))return i;if(c.id===s)return i.push(c),i}else if(y&&(c=y.getElementById(s))&&b(t,c)&&c.id===s)return i.push(c),i}else{if(d[2])return L.apply(i,t.getElementsByTagName(e)),i;if((s=d[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(i,t.getElementsByClassName(s)),i}if(n.qsa&&!k[e+" "]&&(!g||!g.test(e))&&(1!==w||"object"!==t.nodeName.toLowerCase())){if(v=e,y=t,1===w&&(U.test(e)||q.test(e))){for((y=ee.test(e)&&ve(t.parentNode)||t)===t&&n.scope||((u=t.getAttribute("id"))?u=u.replace(ie,oe):t.setAttribute("id",u=_)),a=(p=r(e)).length;a--;)p[a]=(u?"#"+u:":scope")+" "+be(p[a]);v=p.join(",")}try{return L.apply(i,y.querySelectorAll(v)),i}catch(t){k(e,!0)}finally{u===_&&t.removeAttribute("id")}}}return l(e.replace(B,"$1"),t,i,o)}function le(){var e=[];return function t(n,o){return e.push(n+" ")>i.cacheLength&&delete t[e.shift()],t[n+" "]=o}}function ce(e){return e[_]=!0,e}function ue(e){var t=f.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function de(e,t){for(var n=e.split("|"),o=n.length;o--;)i.attrHandle[n[o]]=t}function he(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function me(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&re(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ge(e){return ce((function(t){return t=+t,ce((function(n,i){for(var o,s=e([],n.length,t),r=s.length;r--;)n[o=s[r]]&&(n[o]=!(i[o]=n[o]))}))}))}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=ae.support={},s=ae.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},h=ae.setDocument=function(e){var t,o,r=e?e.ownerDocument||e:w;return r!=f&&9===r.nodeType&&r.documentElement?(p=(f=r).documentElement,m=!s(f),w!=f&&(o=f.defaultView)&&o.top!==o&&(o.addEventListener?o.addEventListener("unload",se,!1):o.attachEvent&&o.attachEvent("onunload",se)),n.scope=ue((function(e){return p.appendChild(e).appendChild(f.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length})),n.attributes=ue((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=ue((function(e){return e.appendChild(f.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=Z.test(f.getElementsByClassName),n.getById=ue((function(e){return p.appendChild(e).id=_,!f.getElementsByName||!f.getElementsByName(_).length})),n.getById?(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n=t.getElementById(e);return n?[n]:[]}}):(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n,i,o,s=t.getElementById(e);if(s){if((n=s.getAttributeNode("id"))&&n.value===e)return[s];for(o=t.getElementsByName(e),i=0;s=o[i++];)if((n=s.getAttributeNode("id"))&&n.value===e)return[s]}return[]}}),i.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],o=0,s=t.getElementsByTagName(e);if("*"===e){for(;n=s[o++];)1===n.nodeType&&i.push(n);return i}return s},i.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&m)return t.getElementsByClassName(e)},v=[],g=[],(n.qsa=Z.test(f.querySelectorAll))&&(ue((function(e){var t;p.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|"+P+")"),e.querySelectorAll("[id~="+_+"-]").length||g.push("~="),(t=f.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||g.push("\\[[\\x20\\t\\r\\n\\f]*name[\\x20\\t\\r\\n\\f]*=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+_+"+*").length||g.push(".#.+[+~]"),e.querySelectorAll("\\\f"),g.push("[\\r\\n\\f]")})),ue((function(e){e.innerHTML="";var t=f.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),p.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")}))),(n.matchesSelector=Z.test(y=p.matches||p.webkitMatchesSelector||p.mozMatchesSelector||p.oMatchesSelector||p.msMatchesSelector))&&ue((function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),v.push("!=",R)})),g=g.length&&new RegExp(g.join("|")),v=v.length&&new RegExp(v.join("|")),t=Z.test(p.compareDocumentPosition),b=t||Z.test(p.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},I=t?function(e,t){if(e===t)return d=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i||(1&(i=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===i?e==f||e.ownerDocument==w&&b(w,e)?-1:t==f||t.ownerDocument==w&&b(w,t)?1:u?z(u,e)-z(u,t):0:4&i?-1:1)}:function(e,t){if(e===t)return d=!0,0;var n,i=0,o=e.parentNode,s=t.parentNode,r=[e],a=[t];if(!o||!s)return e==f?-1:t==f?1:o?-1:s?1:u?z(u,e)-z(u,t):0;if(o===s)return he(e,t);for(n=e;n=n.parentNode;)r.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;r[i]===a[i];)i++;return i?he(r[i],a[i]):r[i]==w?-1:a[i]==w?1:0},f):f},ae.matches=function(e,t){return ae(e,null,null,t)},ae.matchesSelector=function(e,t){if(h(e),n.matchesSelector&&m&&!k[t+" "]&&(!v||!v.test(t))&&(!g||!g.test(t)))try{var i=y.call(e,t);if(i||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(e){k(t,!0)}return ae(t,f,null,[e]).length>0},ae.contains=function(e,t){return(e.ownerDocument||e)!=f&&h(e),b(e,t)},ae.attr=function(e,t){(e.ownerDocument||e)!=f&&h(e);var o=i.attrHandle[t.toLowerCase()],s=o&&A.call(i.attrHandle,t.toLowerCase())?o(e,t,!m):void 0;return void 0!==s?s:n.attributes||!m?e.getAttribute(t):(s=e.getAttributeNode(t))&&s.specified?s.value:null},ae.escape=function(e){return(e+"").replace(ie,oe)},ae.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ae.uniqueSort=function(e){var t,i=[],o=0,s=0;if(d=!n.detectDuplicates,u=!n.sortStable&&e.slice(0),e.sort(I),d){for(;t=e[s++];)t===e[s]&&(o=i.push(s));for(;o--;)e.splice(i[o],1)}return u=null,e},o=ae.getText=function(e){var t,n="",i=0,s=e.nodeType;if(s){if(1===s||9===s||11===s){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===s||4===s)return e.nodeValue}else for(;t=e[i++];)n+=o(t);return n},i=ae.selectors={cacheLength:50,createPseudo:ce,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ae.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ae.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=r(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+e+"("+H+"|$)"),C(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})))},ATTR:function(e,t,n){return function(i){var o=ae.attr(i,e);return null==o?"!="===t:!t||(o+="","="===t?o===n:"!="===t?o!==n:"^="===t?n&&0===o.indexOf(n):"*="===t?n&&o.indexOf(n)>-1:"$="===t?n&&o.slice(-n.length)===n:"~="===t?(" "+o.replace(F," ")+" ").indexOf(n)>-1:"|="===t&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,i,o){var s="nth"!==e.slice(0,3),r="last"!==e.slice(-4),a="of-type"===t;return 1===i&&0===o?function(e){return!!e.parentNode}:function(t,n,l){var c,u,d,h,f,p,m=s!==r?"nextSibling":"previousSibling",g=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!l&&!a,b=!1;if(g){if(s){for(;m;){for(h=t;h=h[m];)if(a?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;p=m="only"===e&&!p&&"nextSibling"}return!0}if(p=[r?g.firstChild:g.lastChild],r&&y){for(b=(f=(c=(u=(d=(h=g)[_]||(h[_]={}))[h.uniqueID]||(d[h.uniqueID]={}))[e]||[])[0]===x&&c[1])&&c[2],h=f&&g.childNodes[f];h=++f&&h&&h[m]||(b=f=0)||p.pop();)if(1===h.nodeType&&++b&&h===t){u[e]=[x,f,b];break}}else if(y&&(b=f=(c=(u=(d=(h=t)[_]||(h[_]={}))[h.uniqueID]||(d[h.uniqueID]={}))[e]||[])[0]===x&&c[1]),!1===b)for(;(h=++f&&h&&h[m]||(b=f=0)||p.pop())&&((a?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(y&&((u=(d=h[_]||(h[_]={}))[h.uniqueID]||(d[h.uniqueID]={}))[e]=[x,b]),h!==t)););return(b-=o)===i||b%i==0&&b/i>=0}}},PSEUDO:function(e,t){var n,o=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ae.error("unsupported pseudo: "+e);return o[_]?o(t):o.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ce((function(e,n){for(var i,s=o(e,t),r=s.length;r--;)e[i=z(e,s[r])]=!(n[i]=s[r])})):function(e){return o(e,0,n)}):o}},pseudos:{not:ce((function(e){var t=[],n=[],i=a(e.replace(B,"$1"));return i[_]?ce((function(e,t,n,o){for(var s,r=i(e,null,o,[]),a=e.length;a--;)(s=r[a])&&(e[a]=!(t[a]=s))})):function(e,o,s){return t[0]=e,i(t,null,s,n),t[0]=null,!n.pop()}})),has:ce((function(e){return function(t){return ae(e,t).length>0}})),contains:ce((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||o(t)).indexOf(e)>-1}})),lang:ce((function(e){return Q.test(e||"")||ae.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=m?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===p},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:me(!1),disabled:me(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return K.test(e.nodeName)},input:function(e){return X.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ge((function(){return[0]})),last:ge((function(e,t){return[t-1]})),eq:ge((function(e,t,n){return[n<0?n+t:n]})),even:ge((function(e,t){for(var n=0;nt?t:n;--i>=0;)e.push(i);return e})),gt:ge((function(e,t,n){for(var i=n<0?n+t:n;++i1?function(t,n,i){for(var o=e.length;o--;)if(!e[o](t,n,i))return!1;return!0}:e[0]}function xe(e,t,n,i,o){for(var s,r=[],a=0,l=e.length,c=null!=t;a-1&&(s[c]=!(r[c]=d))}}else v=xe(v===r?v.splice(p,v.length):v),o?o(null,r,v,l):L.apply(r,v)}))}function Ce(e){for(var t,n,o,s=e.length,r=i.relative[e[0].type],a=r||i.relative[" "],l=r?1:0,u=_e((function(e){return e===t}),a,!0),d=_e((function(e){return z(t,e)>-1}),a,!0),h=[function(e,n,i){var o=!r&&(i||n!==c)||((t=n).nodeType?u(e,n,i):d(e,n,i));return t=null,o}];l1&&we(h),l>1&&be(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(B,"$1"),n,l0,o=e.length>0,s=function(s,r,a,l,u){var d,p,g,v=0,y="0",b=s&&[],_=[],w=c,E=s||o&&i.find.TAG("*",u),C=x+=null==w?1:Math.random()||.1,S=E.length;for(u&&(c=r==f||r||u);y!==S&&null!=(d=E[y]);y++){if(o&&d){for(p=0,r||d.ownerDocument==f||(h(d),a=!m);g=e[p++];)if(g(d,r||f,a)){l.push(d);break}u&&(x=C)}n&&((d=!g&&d)&&v--,s&&b.push(d))}if(v+=y,n&&y!==v){for(p=0;g=t[p++];)g(b,_,r,a);if(s){if(v>0)for(;y--;)b[y]||_[y]||(_[y]=D.call(l));_=xe(_)}L.apply(l,_),u&&!s&&_.length>0&&v+t.length>1&&ae.uniqueSort(l)}return u&&(x=C,c=w),b};return n?ce(s):s}(s,o)),a.selector=e}return a},l=ae.select=function(e,t,n,o){var s,l,c,u,d,h="function"==typeof e&&e,f=!o&&r(e=h.selector||e);if(n=n||[],1===f.length){if((l=f[0]=f[0].slice(0)).length>2&&"ID"===(c=l[0]).type&&9===t.nodeType&&m&&i.relative[l[1].type]){if(!(t=(i.find.ID(c.matches[0].replace(te,ne),t)||[])[0]))return n;h&&(t=t.parentNode),e=e.slice(l.shift().value.length)}for(s=G.needsContext.test(e)?0:l.length;s--&&(c=l[s],!i.relative[u=c.type]);)if((d=i.find[u])&&(o=d(c.matches[0].replace(te,ne),ee.test(l[0].type)&&ve(t.parentNode)||t))){if(l.splice(s,1),!(e=o.length&&be(l)))return L.apply(n,o),n;break}}return(h||a(e,f))(o,t,!m,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},n.sortStable=_.split("").sort(I).join("")===_,n.detectDuplicates=!!d,h(),n.sortDetached=ue((function(e){return 1&e.compareDocumentPosition(f.createElement("fieldset"))})),ue((function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")}))||de("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&ue((function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||de("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),ue((function(e){return null==e.getAttribute("disabled")}))||de(P,(function(e,t,n){var i;if(!n)return!0===e[t]?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null})),ae}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var C=function(e,t,n){for(var i=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&w(e).is(n))break;i.push(e)}return i},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},T=w.expr.match.needsContext;function k(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var I=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function A(e,t,n){return p(t)?w.grep(e,(function(e,i){return!!t.call(e,i,e)!==n})):t.nodeType?w.grep(e,(function(e){return e===t!==n})):"string"!=typeof t?w.grep(e,(function(e){return a.call(t,e)>-1!==n})):w.filter(t,e,n)}w.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?w.find.matchesSelector(i,e)?[i]:[]:w.find.matches(e,w.grep(t,(function(e){return 1===e.nodeType})))},w.fn.extend({find:function(e){var t,n,i=this.length,o=this;if("string"!=typeof e)return this.pushStack(w(e).filter((function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(A(this,e||[],!1))},not:function(e){return this.pushStack(A(this,e||[],!0))},is:function(e){return!!A(this,"string"==typeof e&&T.test(e)?w(e):e||[],!1).length}});var O,D=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||O,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:D.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),I.test(i[1])&&w.isPlainObject(t))for(i in t)p(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=g.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):p(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,O=w(g);var N=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function $(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){s.push(n);break}return this.pushStack(s.length>1?w.uniqueSort(s):s)},index:function(e){return e?"string"==typeof e?a.call(w(e),this[0]):a.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return C(e,"parentNode")},parentsUntil:function(e,t,n){return C(e,"parentNode",n)},next:function(e){return $(e,"nextSibling")},prev:function(e){return $(e,"previousSibling")},nextAll:function(e){return C(e,"nextSibling")},prevAll:function(e){return C(e,"previousSibling")},nextUntil:function(e,t,n){return C(e,"nextSibling",n)},prevUntil:function(e,t,n){return C(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return null!=e.contentDocument&&i(e.contentDocument)?e.contentDocument:(k(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},(function(e,t){w.fn[e]=function(n,i){var o=w.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(o=w.filter(i,o)),this.length>1&&(L[e]||w.uniqueSort(o),N.test(e)&&o.reverse()),this.pushStack(o)}}));var z=/[^\x20\t\r\n\f]+/g;function P(e){return e}function H(e){throw e}function j(e,t,n,i){var o;try{e&&p(o=e.promise)?o.call(e).done(t).fail(n):e&&p(o=e.then)?o.call(e,t,n):t.apply(void 0,[e].slice(i))}catch(e){n.apply(void 0,[e])}}w.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return w.each(e.match(z)||[],(function(e,n){t[n]=!0})),t}(e):w.extend({},e);var t,n,i,o,s=[],r=[],a=-1,l=function(){for(o=o||e.once,i=t=!0;r.length;a=-1)for(n=r.shift();++a-1;)s.splice(n,1),n<=a&&a--})),this},has:function(e){return e?w.inArray(e,s)>-1:s.length>0},empty:function(){return s&&(s=[]),this},disable:function(){return o=r=[],s=n="",this},disabled:function(){return!s},lock:function(){return o=r=[],n||t||(s=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=[e,(n=n||[]).slice?n.slice():n],r.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!i}};return c},w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],i="pending",o={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return o.then(null,e)},pipe:function(){var e=arguments;return w.Deferred((function(t){w.each(n,(function(n,i){var o=p(e[i[4]])&&e[i[4]];s[i[1]]((function(){var e=o&&o.apply(this,arguments);e&&p(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[i[0]+"With"](this,o?[e]:arguments)}))})),e=null})).promise()},then:function(t,i,o){var s=0;function r(t,n,i,o){return function(){var a=this,l=arguments,c=function(){var e,c;if(!(t=s&&(i!==H&&(a=void 0,l=[e]),n.rejectWith(a,l))}};t?u():(w.Deferred.getStackHook&&(u.stackTrace=w.Deferred.getStackHook()),e.setTimeout(u))}}return w.Deferred((function(e){n[0][3].add(r(0,e,p(o)?o:P,e.notifyWith)),n[1][3].add(r(0,e,p(t)?t:P)),n[2][3].add(r(0,e,p(i)?i:H))})).promise()},promise:function(e){return null!=e?w.extend(e,o):o}},s={};return w.each(n,(function(e,t){var r=t[2],a=t[5];o[t[1]]=r.add,a&&r.add((function(){i=a}),n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),r.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=r.fireWith})),o.promise(s),t&&t.call(s,s),s},when:function(e){var t=arguments.length,n=t,i=Array(n),s=o.call(arguments),r=w.Deferred(),a=function(e){return function(n){i[e]=this,s[e]=arguments.length>1?o.call(arguments):n,--t||r.resolveWith(i,s)}};if(t<=1&&(j(e,r.done(a(n)).resolve,r.reject,!t),"pending"===r.state()||p(s[n]&&s[n].then)))return r.then();for(;n--;)j(s[n],a(n),r.reject);return r.promise()}});var M=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&M.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout((function(){throw t}))};var R=w.Deferred();function F(){g.removeEventListener("DOMContentLoaded",F),e.removeEventListener("load",F),w.ready()}w.fn.ready=function(e){return R.then(e).catch((function(e){w.readyException(e)})),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||R.resolveWith(g,[w]))}}),w.ready.then=R.then,"complete"===g.readyState||"loading"!==g.readyState&&!g.documentElement.doScroll?e.setTimeout(w.ready):(g.addEventListener("DOMContentLoaded",F),e.addEventListener("load",F));var B=function(e,t,n,i,o,s,r){var a=0,l=e.length,c=null==n;if("object"===b(n))for(a in o=!0,n)B(e,t,a,n[a],!0,s,r);else if(void 0!==i&&(o=!0,p(i)||(r=!0),c&&(r?(t.call(e,i),t=null):(c=t,t=function(e,t,n){return c.call(w(e),n)})),t))for(;a1,null,!0)},removeData:function(e){return this.each((function(){X.remove(this,e)}))}}),w.extend({queue:function(e,t,n){var i;if(e)return t=(t||"fx")+"queue",i=Y.get(e,t),n&&(!i||Array.isArray(n)?i=Y.access(e,t,w.makeArray(n)):i.push(n)),i||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),i=n.length,o=n.shift(),s=w._queueHooks(e,t);"inprogress"===o&&(o=n.shift(),i--),o&&("fx"===t&&n.unshift("inprogress"),delete s.stop,o.call(e,(function(){w.dequeue(e,t)}),s)),!i&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:w.Callbacks("once memory").add((function(){Y.remove(e,[t+"queue",n])}))})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,me=/^$|^module$|\/(?:java|ecma)script/i;de=g.createDocumentFragment().appendChild(g.createElement("div")),(he=g.createElement("input")).setAttribute("type","radio"),he.setAttribute("checked","checked"),he.setAttribute("name","t"),de.appendChild(he),f.checkClone=de.cloneNode(!0).cloneNode(!0).lastChild.checked,de.innerHTML="",f.noCloneChecked=!!de.cloneNode(!0).lastChild.defaultValue,de.innerHTML="",f.option=!!de.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&k(e,t)?w.merge([e],n):n}function ye(e,t){for(var n=0,i=e.length;n",""]);var be=/<|&#?\w+;/;function _e(e,t,n,i,o){for(var s,r,a,l,c,u,d=t.createDocumentFragment(),h=[],f=0,p=e.length;f-1)o&&o.push(s);else if(c=oe(s),r=ve(d.appendChild(s),"script"),c&&ye(r),n)for(u=0;s=r[u++];)me.test(s.type||"")&&n.push(s);return d}var we=/^([^.]*)(?:\.(.+)|)/;function xe(){return!0}function Ee(){return!1}function Ce(e,t){return e===function(){try{return g.activeElement}catch(e){}}()==("focus"===t)}function Se(e,t,n,i,o,s){var r,a;if("object"==typeof t){for(a in"string"!=typeof n&&(i=i||n,n=void 0),t)Se(e,a,n,i,t[a],s);return e}if(null==i&&null==o?(o=n,i=n=void 0):null==o&&("string"==typeof n?(o=i,i=void 0):(o=i,i=n,n=void 0)),!1===o)o=Ee;else if(!o)return e;return 1===s&&(r=o,o=function(e){return w().off(e),r.apply(this,arguments)},o.guid=r.guid||(r.guid=w.guid++)),e.each((function(){w.event.add(this,t,o,i,n)}))}function Te(e,t,n){n?(Y.set(e,t,!1),w.event.add(e,t,{namespace:!1,handler:function(e){var i,s,r=Y.get(this,t);if(1&e.isTrigger&&this[t]){if(r.length)(w.event.special[t]||{}).delegateType&&e.stopPropagation();else if(r=o.call(arguments),Y.set(this,t,r),i=n(this,t),this[t](),r!==(s=Y.get(this,t))||i?Y.set(this,t,!1):s={},r!==s)return e.stopImmediatePropagation(),e.preventDefault(),s&&s.value}else r.length&&(Y.set(this,t,{value:w.event.trigger(w.extend(r[0],w.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,t)&&w.event.add(e,t,xe)}w.event={global:{},add:function(e,t,n,i,o){var s,r,a,l,c,u,d,h,f,p,m,g=Y.get(e);if(Q(e))for(n.handler&&(n=(s=n).handler,o=s.selector),o&&w.find.matchesSelector(ie,o),n.guid||(n.guid=w.guid++),(l=g.events)||(l=g.events=Object.create(null)),(r=g.handle)||(r=g.handle=function(t){return void 0!==w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),c=(t=(t||"").match(z)||[""]).length;c--;)f=m=(a=we.exec(t[c])||[])[1],p=(a[2]||"").split(".").sort(),f&&(d=w.event.special[f]||{},f=(o?d.delegateType:d.bindType)||f,d=w.event.special[f]||{},u=w.extend({type:f,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&w.expr.match.needsContext.test(o),namespace:p.join(".")},s),(h=l[f])||((h=l[f]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(e,i,p,r)||e.addEventListener&&e.addEventListener(f,r)),d.add&&(d.add.call(e,u),u.handler.guid||(u.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,u):h.push(u),w.event.global[f]=!0)},remove:function(e,t,n,i,o){var s,r,a,l,c,u,d,h,f,p,m,g=Y.hasData(e)&&Y.get(e);if(g&&(l=g.events)){for(c=(t=(t||"").match(z)||[""]).length;c--;)if(f=m=(a=we.exec(t[c])||[])[1],p=(a[2]||"").split(".").sort(),f){for(d=w.event.special[f]||{},h=l[f=(i?d.delegateType:d.bindType)||f]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),r=s=h.length;s--;)u=h[s],!o&&m!==u.origType||n&&n.guid!==u.guid||a&&!a.test(u.namespace)||i&&i!==u.selector&&("**"!==i||!u.selector)||(h.splice(s,1),u.selector&&h.delegateCount--,d.remove&&d.remove.call(e,u));r&&!h.length&&(d.teardown&&!1!==d.teardown.call(e,p,g.handle)||w.removeEvent(e,f,g.handle),delete l[f])}else for(f in l)w.event.remove(e,f+t[c],n,i,!0);w.isEmptyObject(l)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,i,o,s,r,a=new Array(arguments.length),l=w.event.fix(e),c=(Y.get(this,"events")||Object.create(null))[l.type]||[],u=w.event.special[l.type]||{};for(a[0]=l,t=1;t=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==e.type||!0!==c.disabled)){for(s=[],r={},n=0;n-1:w.find(o,this,null,[c]).length),r[o]&&s.push(i);s.length&&a.push({elem:c,handlers:s})}return c=this,l\s*$/g;function Oe(e,t){return k(e,"table")&&k(11!==t.nodeType?t:t.firstChild,"tr")&&w(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Ne(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,i,o,s,r,a;if(1===t.nodeType){if(Y.hasData(e)&&(a=Y.get(e).events))for(o in Y.remove(t,"handle events"),a)for(n=0,i=a[o].length;n1&&"string"==typeof g&&!f.checkClone&&Ie.test(g))return e.each((function(o){var s=e.eq(o);v&&(t[0]=g.call(this,o,s.html())),ze(s,t,n,i)}));if(h&&(r=(o=_e(t,e[0].ownerDocument,!1,e,i)).firstChild,1===o.childNodes.length&&(o=r),r||i)){for(l=(a=w.map(ve(o,"script"),De)).length;d0&&ye(r,!l&&ve(e,"script")),a},cleanData:function(e){for(var t,n,i,o=w.event.special,s=0;void 0!==(n=e[s]);s++)if(Q(n)){if(t=n[Y.expando]){if(t.events)for(i in t.events)o[i]?w.event.remove(n,i):w.removeEvent(n,i,t.handle);n[Y.expando]=void 0}n[X.expando]&&(n[X.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Pe(this,e,!0)},remove:function(e){return Pe(this,e)},text:function(e){return B(this,(function(e){return void 0===e?w.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return ze(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)}))},prepend:function(){return ze(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return ze(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return ze(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return w.clone(this,e,t)}))},html:function(e){return B(this,(function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(pe.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-s-l-a-.5))||0),l}function Je(e,t,n){var i=je(e),o=(!f.boxSizingReliable()||n)&&"border-box"===w.css(e,"boxSizing",!1,i),s=o,r=Fe(e,t,i),a="offset"+t[0].toUpperCase()+t.slice(1);if(He.test(r)){if(!n)return r;r="auto"}return(!f.boxSizingReliable()&&o||!f.reliableTrDimensions()&&k(e,"tr")||"auto"===r||!parseFloat(r)&&"inline"===w.css(e,"display",!1,i))&&e.getClientRects().length&&(o="border-box"===w.css(e,"boxSizing",!1,i),(s=a in e)&&(r=e[a])),(r=parseFloat(r)||0)+Ze(e,t,n||(o?"border":"content"),s,i,r)+"px"}function et(e,t,n,i,o){return new et.prototype.init(e,t,n,i,o)}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,s,r,a=V(t),l=Ge.test(t),c=e.style;if(l||(t=Ve(a)),r=w.cssHooks[t]||w.cssHooks[a],void 0===n)return r&&"get"in r&&void 0!==(o=r.get(e,!1,i))?o:c[t];"string"===(s=typeof n)&&(o=te.exec(n))&&o[1]&&(n=ae(e,t,o),s="number"),null!=n&&n==n&&("number"!==s||l||(n+=o&&o[3]||(w.cssNumber[a]?"":"px")),f.clearCloneStyle||""!==n||0!==t.indexOf("background")||(c[t]="inherit"),r&&"set"in r&&void 0===(n=r.set(e,n,i))||(l?c.setProperty(t,n):c[t]=n))}},css:function(e,t,n,i){var o,s,r,a=V(t);return Ge.test(t)||(t=Ve(a)),(r=w.cssHooks[t]||w.cssHooks[a])&&"get"in r&&(o=r.get(e,!0,n)),void 0===o&&(o=Fe(e,t,i)),"normal"===o&&t in Xe&&(o=Xe[t]),""===n||n?(s=parseFloat(o),!0===n||isFinite(s)?s||0:o):o}}),w.each(["height","width"],(function(e,t){w.cssHooks[t]={get:function(e,n,i){if(n)return!Qe.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,t,i):Me(e,Ye,(function(){return Je(e,t,i)}))},set:function(e,n,i){var o,s=je(e),r=!f.scrollboxSize()&&"absolute"===s.position,a=(r||i)&&"border-box"===w.css(e,"boxSizing",!1,s),l=i?Ze(e,t,i,a,s):0;return a&&r&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(s[t])-Ze(e,t,"border",!1,s)-.5)),l&&(o=te.exec(n))&&"px"!==(o[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(0,n,l)}}})),w.cssHooks.marginLeft=Be(f.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),w.each({margin:"",padding:"",border:"Width"},(function(e,t){w.cssHooks[e+t]={expand:function(n){for(var i=0,o={},s="string"==typeof n?n.split(" "):[n];i<4;i++)o[e+ne[i]+t]=s[i]||s[i-2]||s[0];return o}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)})),w.fn.extend({css:function(e,t){return B(this,(function(e,t,n){var i,o,s={},r=0;if(Array.isArray(t)){for(i=je(e),o=t.length;r1)}}),w.Tween=et,et.prototype={constructor:et,init:function(e,t,n,i,o,s){this.elem=e,this.prop=n,this.easing=o||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=s||(w.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}},et.prototype.init.prototype=et.prototype,et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||!w.cssHooks[e.prop]&&null==e.elem.style[Ve(e.prop)]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},et.propHooks.scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=et.prototype.init,w.fx.step={};var tt,nt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function st(){nt&&(!1===g.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(st):e.setTimeout(st,w.fx.interval),w.fx.tick())}function rt(){return e.setTimeout((function(){tt=void 0})),tt=Date.now()}function at(e,t){var n,i=0,o={height:e};for(t=t?1:0;i<4;i+=2-t)o["margin"+(n=ne[i])]=o["padding"+n]=e;return t&&(o.opacity=o.width=e),o}function lt(e,t,n){for(var i,o=(ct.tweeners[t]||[]).concat(ct.tweeners["*"]),s=0,r=o.length;s1)},removeAttr:function(e){return this.each((function(){w.removeAttr(this,e)}))}}),w.extend({attr:function(e,t,n){var i,o,s=e.nodeType;if(3!==s&&8!==s&&2!==s)return void 0===e.getAttribute?w.prop(e,t,n):(1===s&&w.isXMLDoc(e)||(o=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?ut:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):o&&"set"in o&&void 0!==(i=o.set(e,n,t))?i:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(i=o.get(e,t))?i:null==(i=w.find.attr(e,t))?void 0:i)},attrHooks:{type:{set:function(e,t){if(!f.radioValue&&"radio"===t&&k(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i=0,o=t&&t.match(z);if(o&&1===e.nodeType)for(;n=o[i++];)e.removeAttribute(n)}}),ut={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=dt[t]||w.find.attr;dt[t]=function(e,t,i){var o,s,r=t.toLowerCase();return i||(s=dt[r],dt[r]=o,o=null!=n(e,t,i)?r:null,dt[r]=s),o}}));var ht=/^(?:input|select|textarea|button)$/i,ft=/^(?:a|area)$/i;function pt(e){return(e.match(z)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function gt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(z)||[]}w.fn.extend({prop:function(e,t){return B(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[w.propFix[e]||e]}))}}),w.extend({prop:function(e,t,n){var i,o,s=e.nodeType;if(3!==s&&8!==s&&2!==s)return 1===s&&w.isXMLDoc(e)||(t=w.propFix[t]||t,o=w.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(i=o.set(e,n,t))?i:e[t]=n:o&&"get"in o&&null!==(i=o.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||ft.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),f.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){w.propFix[this.toLowerCase()]=this})),w.fn.extend({addClass:function(e){var t,n,i,o,s,r,a,l=0;if(p(e))return this.each((function(t){w(this).addClass(e.call(this,t,mt(this)))}));if((t=gt(e)).length)for(;n=this[l++];)if(o=mt(n),i=1===n.nodeType&&" "+pt(o)+" "){for(r=0;s=t[r++];)i.indexOf(" "+s+" ")<0&&(i+=s+" ");o!==(a=pt(i))&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,i,o,s,r,a,l=0;if(p(e))return this.each((function(t){w(this).removeClass(e.call(this,t,mt(this)))}));if(!arguments.length)return this.attr("class","");if((t=gt(e)).length)for(;n=this[l++];)if(o=mt(n),i=1===n.nodeType&&" "+pt(o)+" "){for(r=0;s=t[r++];)for(;i.indexOf(" "+s+" ")>-1;)i=i.replace(" "+s+" "," ");o!==(a=pt(i))&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e,i="string"===n||Array.isArray(e);return"boolean"==typeof t&&i?t?this.addClass(e):this.removeClass(e):p(e)?this.each((function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)})):this.each((function(){var t,o,s,r;if(i)for(o=0,s=w(this),r=gt(e);t=r[o++];)s.hasClass(t)?s.removeClass(t):s.addClass(t);else void 0!==e&&"boolean"!==n||((t=mt(this))&&Y.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":Y.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,i=0;for(t=" "+e+" ";n=this[i++];)if(1===n.nodeType&&(" "+pt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var vt=/\r/g;w.fn.extend({val:function(e){var t,n,i,o=this[0];return arguments.length?(i=p(e),this.each((function(n){var o;1===this.nodeType&&(null==(o=i?e.call(this,n,w(this).val()):e)?o="":"number"==typeof o?o+="":Array.isArray(o)&&(o=w.map(o,(function(e){return null==e?"":e+""}))),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))}))):o?(t=w.valHooks[o.type]||w.valHooks[o.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:"string"==typeof(n=o.value)?n.replace(vt,""):null==n?"":n:void 0}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:pt(w.text(e))}},select:{get:function(e){var t,n,i,o=e.options,s=e.selectedIndex,r="select-one"===e.type,a=r?null:[],l=r?s+1:o.length;for(i=s<0?l:r?s:0;i-1)&&(n=!0);return n||(e.selectedIndex=-1),s}}}}),w.each(["radio","checkbox"],(function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},f.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),f.focusin="onfocusin"in e;var yt=/^(?:focusinfocus|focusoutblur)$/,bt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var s,r,a,l,c,d,h,f,v=[i||g],y=u.call(t,"type")?t.type:t,b=u.call(t,"namespace")?t.namespace.split("."):[];if(r=f=a=i=i||g,3!==i.nodeType&&8!==i.nodeType&&!yt.test(y+w.event.triggered)&&(y.indexOf(".")>-1&&(b=y.split("."),y=b.shift(),b.sort()),c=y.indexOf(":")<0&&"on"+y,(t=t[w.expando]?t:new w.Event(y,"object"==typeof t&&t)).isTrigger=o?2:3,t.namespace=b.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),h=w.event.special[y]||{},o||!h.trigger||!1!==h.trigger.apply(i,n))){if(!o&&!h.noBubble&&!m(i)){for(l=h.delegateType||y,yt.test(l+y)||(r=r.parentNode);r;r=r.parentNode)v.push(r),a=r;a===(i.ownerDocument||g)&&v.push(a.defaultView||a.parentWindow||e)}for(s=0;(r=v[s++])&&!t.isPropagationStopped();)f=r,t.type=s>1?l:h.bindType||y,(d=(Y.get(r,"events")||Object.create(null))[t.type]&&Y.get(r,"handle"))&&d.apply(r,n),(d=c&&r[c])&&d.apply&&Q(r)&&(t.result=d.apply(r,n),!1===t.result&&t.preventDefault());return t.type=y,o||t.isDefaultPrevented()||h._default&&!1!==h._default.apply(v.pop(),n)||!Q(i)||c&&p(i[y])&&!m(i)&&((a=i[c])&&(i[c]=null),w.event.triggered=y,t.isPropagationStopped()&&f.addEventListener(y,bt),i[y](),t.isPropagationStopped()&&f.removeEventListener(y,bt),w.event.triggered=void 0,a&&(i[c]=a)),t.result}},simulate:function(e,t,n){var i=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(i,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each((function(){w.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),f.focusin||w.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var i=this.ownerDocument||this.document||this,o=Y.access(i,t);o||i.addEventListener(e,n,!0),Y.access(i,t,(o||0)+1)},teardown:function(){var i=this.ownerDocument||this.document||this,o=Y.access(i,t)-1;o?Y.access(i,t,o):(i.removeEventListener(e,n,!0),Y.remove(i,t))}}}));var _t=e.location,wt={guid:Date.now()},xt=/\?/;w.parseXML=function(t){var n,i;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){}return i=n&&n.getElementsByTagName("parsererror")[0],n&&!i||w.error("Invalid XML: "+(i?w.map(i.childNodes,(function(e){return e.textContent})).join("\n"):t)),n};var Et=/\[\]$/,Ct=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,Tt=/^(?:input|select|textarea|keygen)/i;function kt(e,t,n,i){var o;if(Array.isArray(t))w.each(t,(function(t,o){n||Et.test(e)?i(e,o):kt(e+"["+("object"==typeof o&&null!=o?t:"")+"]",o,n,i)}));else if(n||"object"!==b(t))i(e,t);else for(o in t)kt(e+"["+o+"]",t[o],n,i)}w.param=function(e,t){var n,i=[],o=function(e,t){var n=p(t)?t():t;i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,(function(){o(this.name,this.value)}));else for(n in e)kt(n,e[n],t,o);return i.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&Tt.test(this.nodeName)&&!St.test(e)&&(this.checked||!fe.test(e))})).map((function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,(function(e){return{name:t.name,value:e.replace(Ct,"\r\n")}})):{name:t.name,value:n.replace(Ct,"\r\n")}})).get()}});var It=/%20/g,At=/#.*$/,Ot=/([?&])_=[^&]*/,Dt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Nt=/^(?:GET|HEAD)$/,Lt=/^\/\//,$t={},zt={},Pt="*/".concat("*"),Ht=g.createElement("a");function jt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,o=0,s=t.toLowerCase().match(z)||[];if(p(n))for(;i=s[o++];)"+"===i[0]?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function Mt(e,t,n,i){var o={},s=e===zt;function r(a){var l;return o[a]=!0,w.each(e[a]||[],(function(e,a){var c=a(t,n,i);return"string"!=typeof c||s||o[c]?s?!(l=c):void 0:(t.dataTypes.unshift(c),r(c),!1)})),l}return r(t.dataTypes[0])||!o["*"]&&r("*")}function Rt(e,t){var n,i,o=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((o[n]?e:i||(i={}))[n]=t[n]);return i&&w.extend(!0,e,i),e}Ht.href=_t.href,w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:_t.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(_t.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Pt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Rt(Rt(e,w.ajaxSettings),t):Rt(w.ajaxSettings,e)},ajaxPrefilter:jt($t),ajaxTransport:jt(zt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,s,r,a,l,c,u,d,h,f=w.ajaxSetup({},n),p=f.context||f,m=f.context&&(p.nodeType||p.jquery)?w(p):w.event,v=w.Deferred(),y=w.Callbacks("once memory"),b=f.statusCode||{},_={},x={},E="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(c){if(!r)for(r={};t=Dt.exec(s);)r[t[1].toLowerCase()+" "]=(r[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=r[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return c?s:null},setRequestHeader:function(e,t){return null==c&&(e=x[e.toLowerCase()]=x[e.toLowerCase()]||e,_[e]=t),this},overrideMimeType:function(e){return null==c&&(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)C.always(e[C.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||E;return i&&i.abort(t),S(0,t),this}};if(v.promise(C),f.url=((t||f.url||_t.href)+"").replace(Lt,_t.protocol+"//"),f.type=n.method||n.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(z)||[""],null==f.crossDomain){l=g.createElement("a");try{l.href=f.url,l.href=l.href,f.crossDomain=Ht.protocol+"//"+Ht.host!=l.protocol+"//"+l.host}catch(e){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!=typeof f.data&&(f.data=w.param(f.data,f.traditional)),Mt($t,f,n,C),c)return C;for(d in(u=w.event&&f.global)&&0==w.active++&&w.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!Nt.test(f.type),o=f.url.replace(At,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(It,"+")):(h=f.url.slice(o.length),f.data&&(f.processData||"string"==typeof f.data)&&(o+=(xt.test(o)?"&":"?")+f.data,delete f.data),!1===f.cache&&(o=o.replace(Ot,"$1"),h=(xt.test(o)?"&":"?")+"_="+wt.guid+++h),f.url=o+h),f.ifModified&&(w.lastModified[o]&&C.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&C.setRequestHeader("If-None-Match",w.etag[o])),(f.data&&f.hasContent&&!1!==f.contentType||n.contentType)&&C.setRequestHeader("Content-Type",f.contentType),C.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+Pt+"; q=0.01":""):f.accepts["*"]),f.headers)C.setRequestHeader(d,f.headers[d]);if(f.beforeSend&&(!1===f.beforeSend.call(p,C,f)||c))return C.abort();if(E="abort",y.add(f.complete),C.done(f.success),C.fail(f.error),i=Mt(zt,f,n,C)){if(C.readyState=1,u&&m.trigger("ajaxSend",[C,f]),c)return C;f.async&&f.timeout>0&&(a=e.setTimeout((function(){C.abort("timeout")}),f.timeout));try{c=!1,i.send(_,S)}catch(e){if(c)throw e;S(-1,e)}}else S(-1,"No Transport");function S(t,n,r,l){var d,h,g,_,x,E=n;c||(c=!0,a&&e.clearTimeout(a),i=void 0,s=l||"",C.readyState=t>0?4:0,d=t>=200&&t<300||304===t,r&&(_=function(e,t,n){for(var i,o,s,r,a=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader("Content-Type"));if(i)for(o in a)if(a[o]&&a[o].test(i)){l.unshift(o);break}if(l[0]in n)s=l[0];else{for(o in n){if(!l[0]||e.converters[o+" "+l[0]]){s=o;break}r||(r=o)}s=s||r}if(s)return s!==l[0]&&l.unshift(s),n[s]}(f,C,r)),!d&&w.inArray("script",f.dataTypes)>-1&&w.inArray("json",f.dataTypes)<0&&(f.converters["text script"]=function(){}),_=function(e,t,n,i){var o,s,r,a,l,c={},u=e.dataTypes.slice();if(u[1])for(r in e.converters)c[r.toLowerCase()]=e.converters[r];for(s=u.shift();s;)if(e.responseFields[s]&&(n[e.responseFields[s]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=s,s=u.shift())if("*"===s)s=l;else if("*"!==l&&l!==s){if(!(r=c[l+" "+s]||c["* "+s]))for(o in c)if((a=o.split(" "))[1]===s&&(r=c[l+" "+a[0]]||c["* "+a[0]])){!0===r?r=c[o]:!0!==c[o]&&(s=a[0],u.unshift(a[1]));break}if(!0!==r)if(r&&e.throws)t=r(t);else try{t=r(t)}catch(e){return{state:"parsererror",error:r?e:"No conversion from "+l+" to "+s}}}return{state:"success",data:t}}(f,_,C,d),d?(f.ifModified&&((x=C.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=x),(x=C.getResponseHeader("etag"))&&(w.etag[o]=x)),204===t||"HEAD"===f.type?E="nocontent":304===t?E="notmodified":(E=_.state,h=_.data,d=!(g=_.error))):(g=E,!t&&E||(E="error",t<0&&(t=0))),C.status=t,C.statusText=(n||E)+"",d?v.resolveWith(p,[h,E,C]):v.rejectWith(p,[C,E,g]),C.statusCode(b),b=void 0,u&&m.trigger(d?"ajaxSuccess":"ajaxError",[C,f,d?h:g]),y.fireWith(p,[C,E]),u&&(m.trigger("ajaxComplete",[C,f]),--w.active||w.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],(function(e,t){w[t]=function(e,n,i,o){return p(n)&&(o=o||i,i=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:o,data:n,success:i},w.isPlainObject(e)&&e))}})),w.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),w._evalUrl=function(e,t,n){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){w.globalEval(e,t,n)}})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(p(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return p(e)?this.each((function(t){w(this).wrapInner(e.call(this,t))})):this.each((function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=p(e);return this.each((function(n){w(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){w(this).replaceWith(this.childNodes)})),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Ft={0:200,1223:204},Bt=w.ajaxSettings.xhr();f.cors=!!Bt&&"withCredentials"in Bt,f.ajax=Bt=!!Bt,w.ajaxTransport((function(t){var n,i;if(f.cors||Bt&&!t.crossDomain)return{send:function(o,s){var r,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(r in t.xhrFields)a[r]=t.xhrFields[r];for(r in t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest"),o)a.setRequestHeader(r,o[r]);n=function(e){return function(){n&&(n=i=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?s(0,"error"):s(a.status,a.statusText):s(Ft[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),i=a.onerror=a.ontimeout=n("error"),void 0!==a.onabort?a.onabort=i:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout((function(){n&&i()}))},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}})),w.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),w.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(i,o){t=w(" + + + + + + + diff --git a/kevm-pyk/.cruft.json b/kevm-pyk/.cruft.json deleted file mode 100644 index 7986d60f9b..0000000000 --- a/kevm-pyk/.cruft.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "template": "https://github.com/runtimeverification/python-project-template.git", - "commit": "601d5e2a0e8a98c87dcb1ae694d22d76d0114e01", - "checkout": null, - "context": { - "cookiecutter": { - "project_name": "kevm-pyk", - "project_slug": "kevm-pyk", - "package_name": "kevm_pyk", - "version": "0.1.0", - "description": "", - "author_name": "Runtime Verification, Inc.", - "author_email": "contact@runtimeverification.com", - "_template": "https://github.com/runtimeverification/python-project-template.git" - } - }, - "directory": null -} diff --git a/kevm-pyk/.flake8 b/kevm-pyk/.flake8 deleted file mode 100644 index b2ad33071f..0000000000 --- a/kevm-pyk/.flake8 +++ /dev/null @@ -1,9 +0,0 @@ -[flake8] -max-line-length = 120 -extend-select = B9, TC1 -extend-ignore = B950,E,W1,W2,W3,W4,W5 -per-file-ignores = - */__init__.py: F401 -type-checking-strict = true -exclude = - src/kevm_pyk/kproj/ diff --git a/kevm-pyk/.gitignore b/kevm-pyk/.gitignore deleted file mode 100644 index 98fe5a7f3d..0000000000 --- a/kevm-pyk/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/dist/ -__pycache__/ -.coverage diff --git a/kevm-pyk/Makefile b/kevm-pyk/Makefile deleted file mode 100644 index c09fe7b40f..0000000000 --- a/kevm-pyk/Makefile +++ /dev/null @@ -1,103 +0,0 @@ -POETRY := poetry -POETRY_RUN := $(POETRY) run - - -default: check test-unit - -all: check cov - -.PHONY: clean -clean: - rm -rf dist .coverage cov-* .mypy_cache .pytest_cache - find -type d -name __pycache__ -prune -exec rm -rf {} \; - -.PHONY: build -build: - $(POETRY) build - -.PHONY: poetry-install -poetry-install: - $(POETRY) install - - -# Tests - -PYTEST_BASE_ARGS := --verbose --durations=0 --dist=worksteal -PYTEST_ARGS := -PYTEST_PARALLEL := 8 -PYTEST_MAXFAIL := 1 - -test: test-all - -test-all: poetry-install - $(POETRY_RUN) pytest src/tests $(PYTEST_BASE_ARGS) --maxfail=$(PYTEST_MAXFAIL) --numprocesses=$(PYTEST_PARALLEL) $(PYTEST_ARGS) - -test-unit: poetry-install - $(POETRY_RUN) pytest src/tests/unit $(PYTEST_BASE_ARGS) --maxfail=$(PYTEST_MAXFAIL) --numprocesses=$(PYTEST_PARALLEL) $(PYTEST_ARGS) - -test-integration: poetry-install - $(POETRY_RUN) pytest src/tests/integration $(PYTEST_BASE_ARGS) --maxfail=$(PYTEST_MAXFAIL) --numprocesses=$(PYTEST_PARALLEL) $(PYTEST_ARGS) - - -# Coverage - -COV_ARGS := - -cov: cov-all - -cov-%: TEST_ARGS += --cov=kevm_pyk --no-cov-on-fail --cov-branch --cov-report=term - -cov-all: TEST_ARGS += --cov-report=html:cov-all-html $(COV_ARGS) -cov-all: test-all - -cov-unit: TEST_ARGS += --cov-report=html:cov-unit-html $(COV_ARGS) -cov-unit: test-unit - -cov-integration: TEST_ARGS += --cov-report=html:cov-integration-html $(COV_ARGS) -cov-integration: test-integration - - -# Profiling - -PROF_ARGS := - -profile: poetry-install - $(POETRY_RUN) pytest src/tests/profiling --maxfail=1 --verbose --durations=0 --numprocesses=4 --dist=worksteal $(PROF_ARGS) - - -# Checks and formatting - -format: autoflake isort black -check: check-flake8 check-mypy check-autoflake check-isort check-black - -check-flake8: poetry-install - $(POETRY_RUN) flake8 src - -check-mypy: poetry-install - $(POETRY_RUN) mypy src - -autoflake: poetry-install - $(POETRY_RUN) autoflake --quiet --in-place src - -check-autoflake: poetry-install - $(POETRY_RUN) autoflake --quiet --check src - -isort: poetry-install - $(POETRY_RUN) isort src - -check-isort: poetry-install - $(POETRY_RUN) isort --check src - -black: poetry-install - $(POETRY_RUN) black src - -check-black: poetry-install - $(POETRY_RUN) black --check src - - -# Optional tools - -SRC_FILES := $(shell find src -type f -name '*.py') - -pyupgrade: poetry-install - $(POETRY_RUN) pyupgrade --py310-plus $(SRC_FILES) diff --git a/kevm-pyk/poetry.lock b/kevm-pyk/poetry.lock deleted file mode 100644 index 908ba06c06..0000000000 --- a/kevm-pyk/poetry.lock +++ /dev/null @@ -1,1120 +0,0 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. - -[[package]] -name = "attrs" -version = "23.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, -] - -[package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] - -[[package]] -name = "autoflake" -version = "2.3.1" -description = "Removes unused imports and unused variables" -optional = false -python-versions = ">=3.8" -files = [ - {file = "autoflake-2.3.1-py3-none-any.whl", hash = "sha256:3ae7495db9084b7b32818b4140e6dc4fc280b712fb414f5b8fe57b0a8e85a840"}, - {file = "autoflake-2.3.1.tar.gz", hash = "sha256:c98b75dc5b0a86459c4f01a1d32ac7eb4338ec4317a4469515ff1e687ecd909e"}, -] - -[package.dependencies] -pyflakes = ">=3.0.0" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} - -[[package]] -name = "black" -version = "24.4.2" -description = "The uncompromising code formatter." -optional = false -python-versions = ">=3.8" -files = [ - {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, - {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, - {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, - {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, - {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, - {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, - {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, - {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, - {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, - {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, - {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, - {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, - {file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"}, - {file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"}, - {file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"}, - {file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"}, - {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, - {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, - {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, - {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, - {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, - {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, -] - -[package.dependencies] -click = ">=8.0.0" -mypy-extensions = ">=0.4.3" -packaging = ">=22.0" -pathspec = ">=0.9.0" -platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] - -[[package]] -name = "classify-imports" -version = "4.2.0" -description = "Utilities for refactoring imports in python-like syntax." -optional = false -python-versions = ">=3.7" -files = [ - {file = "classify_imports-4.2.0-py2.py3-none-any.whl", hash = "sha256:dbbc264b70a470ed8c6c95976a11dfb8b7f63df44ed1af87328bbed2663f5161"}, - {file = "classify_imports-4.2.0.tar.gz", hash = "sha256:7abfb7ea92149b29d046bd34573d247ba6e68cc28100c801eba4af17964fc40e"}, -] - -[[package]] -name = "click" -version = "8.1.7" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "cmd2" -version = "2.4.3" -description = "cmd2 - quickly build feature-rich and user-friendly interactive command line applications in Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "cmd2-2.4.3-py3-none-any.whl", hash = "sha256:f1988ff2fff0ed812a2d25218a081b0fa0108d45b48ba2a9272bb98091b654e6"}, - {file = "cmd2-2.4.3.tar.gz", hash = "sha256:71873c11f72bd19e2b1db578214716f0d4f7c8fa250093c601265a9a717dee52"}, -] - -[package.dependencies] -attrs = ">=16.3.0" -pyperclip = ">=1.6" -pyreadline3 = {version = "*", markers = "sys_platform == \"win32\""} -wcwidth = ">=0.1.7" - -[package.extras] -dev = ["codecov", "doc8", "flake8", "invoke", "mypy", "nox", "pytest (>=4.6)", "pytest-cov", "pytest-mock", "sphinx", "sphinx-autobuild", "sphinx-rtd-theme", "twine (>=1.11)"] -test = ["codecov", "coverage", "gnureadline", "pytest (>=4.6)", "pytest-cov", "pytest-mock"] -validate = ["flake8", "mypy", "types-pkg-resources"] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "coloredlogs" -version = "15.0.1" -description = "Colored terminal output for Python's logging module" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934"}, - {file = "coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0"}, -] - -[package.dependencies] -humanfriendly = ">=9.1" - -[package.extras] -cron = ["capturer (>=2.4)"] - -[[package]] -name = "coverage" -version = "7.5.1" -description = "Code coverage measurement for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "coverage-7.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e"}, - {file = "coverage-7.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f"}, - {file = "coverage-7.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a"}, - {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35"}, - {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e"}, - {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223"}, - {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e"}, - {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146"}, - {file = "coverage-7.5.1-cp310-cp310-win32.whl", hash = "sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228"}, - {file = "coverage-7.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8"}, - {file = "coverage-7.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428"}, - {file = "coverage-7.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746"}, - {file = "coverage-7.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3"}, - {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2"}, - {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca"}, - {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8"}, - {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057"}, - {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987"}, - {file = "coverage-7.5.1-cp311-cp311-win32.whl", hash = "sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136"}, - {file = "coverage-7.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd"}, - {file = "coverage-7.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206"}, - {file = "coverage-7.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34"}, - {file = "coverage-7.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d"}, - {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa"}, - {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e"}, - {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572"}, - {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07"}, - {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7"}, - {file = "coverage-7.5.1-cp312-cp312-win32.whl", hash = "sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19"}, - {file = "coverage-7.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596"}, - {file = "coverage-7.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7"}, - {file = "coverage-7.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90"}, - {file = "coverage-7.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e"}, - {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5"}, - {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661"}, - {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8"}, - {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4"}, - {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d"}, - {file = "coverage-7.5.1-cp38-cp38-win32.whl", hash = "sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41"}, - {file = "coverage-7.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de"}, - {file = "coverage-7.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1"}, - {file = "coverage-7.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece"}, - {file = "coverage-7.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26"}, - {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5"}, - {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601"}, - {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be"}, - {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f"}, - {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668"}, - {file = "coverage-7.5.1-cp39-cp39-win32.whl", hash = "sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981"}, - {file = "coverage-7.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f"}, - {file = "coverage-7.5.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312"}, - {file = "coverage-7.5.1.tar.gz", hash = "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c"}, -] - -[package.dependencies] -tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} - -[package.extras] -toml = ["tomli"] - -[[package]] -name = "dill" -version = "0.3.8" -description = "serialize all of Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, - {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, -] - -[package.extras] -graph = ["objgraph (>=1.7.2)"] -profile = ["gprof2dot (>=2022.7.29)"] - -[[package]] -name = "exceptiongroup" -version = "1.2.1" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, - {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "execnet" -version = "2.1.1" -description = "execnet: rapid multi-Python deployment" -optional = false -python-versions = ">=3.8" -files = [ - {file = "execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"}, - {file = "execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"}, -] - -[package.extras] -testing = ["hatch", "pre-commit", "pytest", "tox"] - -[[package]] -name = "filelock" -version = "3.14.0" -description = "A platform independent file lock." -optional = false -python-versions = ">=3.8" -files = [ - {file = "filelock-3.14.0-py3-none-any.whl", hash = "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f"}, - {file = "filelock-3.14.0.tar.gz", hash = "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"}, -] - -[package.extras] -docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] -typing = ["typing-extensions (>=4.8)"] - -[[package]] -name = "flake8" -version = "7.0.0" -description = "the modular source code checker: pep8 pyflakes and co" -optional = false -python-versions = ">=3.8.1" -files = [ - {file = "flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"}, - {file = "flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132"}, -] - -[package.dependencies] -mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.11.0,<2.12.0" -pyflakes = ">=3.2.0,<3.3.0" - -[[package]] -name = "flake8-bugbear" -version = "24.4.26" -description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." -optional = false -python-versions = ">=3.8.1" -files = [ - {file = "flake8_bugbear-24.4.26-py3-none-any.whl", hash = "sha256:cb430dd86bc821d79ccc0b030789a9c87a47a369667f12ba06e80f11305e8258"}, - {file = "flake8_bugbear-24.4.26.tar.gz", hash = "sha256:ff8d4ba5719019ebf98e754624c30c05cef0dadcf18a65d91c7567300e52a130"}, -] - -[package.dependencies] -attrs = ">=19.2.0" -flake8 = ">=6.0.0" - -[package.extras] -dev = ["coverage", "hypothesis", "hypothesmith (>=0.2)", "pre-commit", "pytest", "tox"] - -[[package]] -name = "flake8-comprehensions" -version = "3.14.0" -description = "A flake8 plugin to help you write better list/set/dict comprehensions." -optional = false -python-versions = ">=3.8" -files = [ - {file = "flake8_comprehensions-3.14.0-py3-none-any.whl", hash = "sha256:7b9d07d94aa88e62099a6d1931ddf16c344d4157deedf90fe0d8ee2846f30e97"}, - {file = "flake8_comprehensions-3.14.0.tar.gz", hash = "sha256:81768c61bfc064e1a06222df08a2580d97de10cb388694becaf987c331c6c0cf"}, -] - -[package.dependencies] -flake8 = ">=3.0,<3.2.0 || >3.2.0" - -[[package]] -name = "flake8-quotes" -version = "3.4.0" -description = "Flake8 lint for quotes." -optional = false -python-versions = "*" -files = [ - {file = "flake8-quotes-3.4.0.tar.gz", hash = "sha256:aad8492fb710a2d3eabe68c5f86a1428de650c8484127e14c43d0504ba30276c"}, -] - -[package.dependencies] -flake8 = "*" -setuptools = "*" - -[[package]] -name = "flake8-type-checking" -version = "2.9.0" -description = "A flake8 plugin for managing type-checking imports & forward references" -optional = false -python-versions = ">=3.8" -files = [ - {file = "flake8_type_checking-2.9.0-py3-none-any.whl", hash = "sha256:b63e1745f6e7deee1403d7e0150a5bca378315e9fe4d4cdaa7b71338034dbcc3"}, - {file = "flake8_type_checking-2.9.0.tar.gz", hash = "sha256:6fcc0e8a63f6a87b5b26b776388c21907e66c4efbd15dcc1bcbd96fe884da93d"}, -] - -[package.dependencies] -classify-imports = "*" -flake8 = "*" - -[[package]] -name = "graphviz" -version = "0.20.3" -description = "Simple Python interface for Graphviz" -optional = false -python-versions = ">=3.8" -files = [ - {file = "graphviz-0.20.3-py3-none-any.whl", hash = "sha256:81f848f2904515d8cd359cc611faba817598d2feaac4027b266aa3eda7b3dde5"}, - {file = "graphviz-0.20.3.zip", hash = "sha256:09d6bc81e6a9fa392e7ba52135a9d49f1ed62526f96499325930e87ca1b5925d"}, -] - -[package.extras] -dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"] -docs = ["sphinx (>=5,<7)", "sphinx-autodoc-typehints", "sphinx-rtd-theme"] -test = ["coverage", "pytest (>=7,<8.1)", "pytest-cov", "pytest-mock (>=3)"] - -[[package]] -name = "humanfriendly" -version = "10.0" -description = "Human friendly output for text interfaces using Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477"}, - {file = "humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc"}, -] - -[package.dependencies] -pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_version >= \"3.8\""} - -[[package]] -name = "importlib-metadata" -version = "7.1.0" -description = "Read metadata from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, - {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "inotify" -version = "0.2.10" -description = "An adapter to Linux kernel support for inotify directory-watching." -optional = false -python-versions = "*" -files = [ - {file = "inotify-0.2.10-py2-none-any.whl", hash = "sha256:397f8785450e41f606fe4eb6f5e8e0a1c70b354b56495225fc6c6fe7e07db0c9"}, - {file = "inotify-0.2.10.tar.gz", hash = "sha256:974a623a338482b62e16d4eb705fb863ed33ec178680fc3e96ccdf0df6c02a07"}, -] - -[package.dependencies] -nose = "*" - -[[package]] -name = "isort" -version = "5.13.2" -description = "A Python utility / library to sort Python imports." -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, - {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, -] - -[package.extras] -colors = ["colorama (>=0.4.6)"] - -[[package]] -name = "linkify-it-py" -version = "2.0.3" -description = "Links recognition library with FULL unicode support." -optional = false -python-versions = ">=3.7" -files = [ - {file = "linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048"}, - {file = "linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79"}, -] - -[package.dependencies] -uc-micro-py = "*" - -[package.extras] -benchmark = ["pytest", "pytest-benchmark"] -dev = ["black", "flake8", "isort", "pre-commit", "pyproject-flake8"] -doc = ["myst-parser", "sphinx", "sphinx-book-theme"] -test = ["coverage", "pytest", "pytest-cov"] - -[[package]] -name = "markdown-it-py" -version = "2.2.0" -description = "Python port of markdown-it. Markdown parsing, done right!" -optional = false -python-versions = ">=3.7" -files = [ - {file = "markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1"}, - {file = "markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30"}, -] - -[package.dependencies] -linkify-it-py = {version = ">=1,<3", optional = true, markers = "extra == \"linkify\""} -mdit-py-plugins = {version = "*", optional = true, markers = "extra == \"plugins\""} -mdurl = ">=0.1,<1.0" - -[package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -code-style = ["pre-commit (>=3.0,<4.0)"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins"] -profiling = ["gprof2dot"] -rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - -[[package]] -name = "mccabe" -version = "0.7.0" -description = "McCabe checker, plugin for flake8" -optional = false -python-versions = ">=3.6" -files = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] - -[[package]] -name = "mdit-py-plugins" -version = "0.4.1" -description = "Collection of plugins for markdown-it-py" -optional = false -python-versions = ">=3.8" -files = [ - {file = "mdit_py_plugins-0.4.1-py3-none-any.whl", hash = "sha256:1020dfe4e6bfc2c79fb49ae4e3f5b297f5ccd20f010187acc52af2921e27dc6a"}, - {file = "mdit_py_plugins-0.4.1.tar.gz", hash = "sha256:834b8ac23d1cd60cec703646ffd22ae97b7955a6d596eb1d304be1e251ae499c"}, -] - -[package.dependencies] -markdown-it-py = ">=1.0.0,<4.0.0" - -[package.extras] -code-style = ["pre-commit"] -rtd = ["myst-parser", "sphinx-book-theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - -[[package]] -name = "mdurl" -version = "0.1.2" -description = "Markdown URL utilities" -optional = false -python-versions = ">=3.7" -files = [ - {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, - {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, -] - -[[package]] -name = "multiprocess" -version = "0.70.16" -description = "better multiprocessing and multithreading in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "multiprocess-0.70.16-pp310-pypy310_pp73-macosx_10_13_x86_64.whl", hash = "sha256:476887be10e2f59ff183c006af746cb6f1fd0eadcfd4ef49e605cbe2659920ee"}, - {file = "multiprocess-0.70.16-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d951bed82c8f73929ac82c61f01a7b5ce8f3e5ef40f5b52553b4f547ce2b08ec"}, - {file = "multiprocess-0.70.16-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:37b55f71c07e2d741374998c043b9520b626a8dddc8b3129222ca4f1a06ef67a"}, - {file = "multiprocess-0.70.16-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba8c31889abf4511c7308a8c52bb4a30b9d590e7f58523302ba00237702ca054"}, - {file = "multiprocess-0.70.16-pp39-pypy39_pp73-macosx_10_13_x86_64.whl", hash = "sha256:0dfd078c306e08d46d7a8d06fb120313d87aa43af60d66da43ffff40b44d2f41"}, - {file = "multiprocess-0.70.16-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e7b9d0f307cd9bd50851afaac0dba2cb6c44449efff697df7c7645f7d3f2be3a"}, - {file = "multiprocess-0.70.16-py310-none-any.whl", hash = "sha256:c4a9944c67bd49f823687463660a2d6daae94c289adff97e0f9d696ba6371d02"}, - {file = "multiprocess-0.70.16-py311-none-any.whl", hash = "sha256:af4cabb0dac72abfb1e794fa7855c325fd2b55a10a44628a3c1ad3311c04127a"}, - {file = "multiprocess-0.70.16-py312-none-any.whl", hash = "sha256:fc0544c531920dde3b00c29863377f87e1632601092ea2daca74e4beb40faa2e"}, - {file = "multiprocess-0.70.16-py38-none-any.whl", hash = "sha256:a71d82033454891091a226dfc319d0cfa8019a4e888ef9ca910372a446de4435"}, - {file = "multiprocess-0.70.16-py39-none-any.whl", hash = "sha256:a0bafd3ae1b732eac64be2e72038231c1ba97724b60b09400d68f229fcc2fbf3"}, - {file = "multiprocess-0.70.16.tar.gz", hash = "sha256:161af703d4652a0e1410be6abccecde4a7ddffd19341be0a7011b94aeb171ac1"}, -] - -[package.dependencies] -dill = ">=0.3.8" - -[[package]] -name = "mypy" -version = "1.10.0" -description = "Optional static typing for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"}, - {file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"}, - {file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"}, - {file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"}, - {file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"}, - {file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"}, - {file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"}, - {file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"}, - {file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"}, - {file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"}, - {file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"}, - {file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"}, - {file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"}, - {file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"}, - {file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"}, - {file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"}, - {file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"}, - {file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"}, - {file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"}, - {file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"}, - {file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"}, - {file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"}, - {file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"}, - {file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"}, - {file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"}, - {file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"}, - {file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"}, -] - -[package.dependencies] -mypy-extensions = ">=1.0.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = ">=4.1.0" - -[package.extras] -dmypy = ["psutil (>=4.0)"] -install-types = ["pip"] -mypyc = ["setuptools (>=50)"] -reports = ["lxml"] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." -optional = false -python-versions = ">=3.5" -files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, -] - -[[package]] -name = "nose" -version = "1.3.7" -description = "nose extends unittest to make testing easier" -optional = false -python-versions = "*" -files = [ - {file = "nose-1.3.7-py2-none-any.whl", hash = "sha256:dadcddc0aefbf99eea214e0f1232b94f2fa9bd98fa8353711dacb112bfcbbb2a"}, - {file = "nose-1.3.7-py3-none-any.whl", hash = "sha256:9ff7c6cc443f8c51994b34a667bbcf45afd6d945be7477b52e97516fd17c53ac"}, - {file = "nose-1.3.7.tar.gz", hash = "sha256:f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"}, -] - -[[package]] -name = "packaging" -version = "24.0" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, -] - -[[package]] -name = "pathos" -version = "0.3.2" -description = "parallel graph management and execution in heterogeneous computing" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pathos-0.3.2-py3-none-any.whl", hash = "sha256:d669275e6eb4b3fbcd2846d7a6d1bba315fe23add0c614445ba1408d8b38bafe"}, - {file = "pathos-0.3.2.tar.gz", hash = "sha256:4f2a42bc1e10ccf0fe71961e7145fc1437018b6b21bd93b2446abc3983e49a7a"}, -] - -[package.dependencies] -dill = ">=0.3.8" -multiprocess = ">=0.70.16" -pox = ">=0.3.4" -ppft = ">=1.7.6.8" - -[[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - -[[package]] -name = "pep8-naming" -version = "0.14.1" -description = "Check PEP-8 naming conventions, plugin for flake8" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pep8-naming-0.14.1.tar.gz", hash = "sha256:1ef228ae80875557eb6c1549deafed4dabbf3261cfcafa12f773fe0db9be8a36"}, - {file = "pep8_naming-0.14.1-py3-none-any.whl", hash = "sha256:63f514fc777d715f935faf185dedd679ab99526a7f2f503abb61587877f7b1c5"}, -] - -[package.dependencies] -flake8 = ">=5.0.0" - -[[package]] -name = "platformdirs" -version = "4.2.2" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, -] - -[package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "pox" -version = "0.3.4" -description = "utilities for filesystem exploration and automated builds" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pox-0.3.4-py3-none-any.whl", hash = "sha256:651b8ae8a7b341b7bfd267f67f63106daeb9805f1ac11f323d5280d2da93fdb6"}, - {file = "pox-0.3.4.tar.gz", hash = "sha256:16e6eca84f1bec3828210b06b052adf04cf2ab20c22fd6fbef5f78320c9a6fed"}, -] - -[[package]] -name = "ppft" -version = "1.7.6.8" -description = "distributed and parallel Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "ppft-1.7.6.8-py3-none-any.whl", hash = "sha256:de2dd4b1b080923dd9627fbdea52649fd741c752fce4f3cf37e26f785df23d9b"}, - {file = "ppft-1.7.6.8.tar.gz", hash = "sha256:76a429a7d7b74c4d743f6dba8351e58d62b6432ed65df9fe204790160dab996d"}, -] - -[package.extras] -dill = ["dill (>=0.3.8)"] - -[[package]] -name = "psutil" -version = "5.9.5" -description = "Cross-platform lib for process and system monitoring in Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "psutil-5.9.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ea8518d152174e1249c4f2a1c89e3e6065941df2fa13a1ab45327716a23c2b48"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:acf2aef9391710afded549ff602b5887d7a2349831ae4c26be7c807c0a39fac4"}, - {file = "psutil-5.9.5-cp27-none-win32.whl", hash = "sha256:5b9b8cb93f507e8dbaf22af6a2fd0ccbe8244bf30b1baad6b3954e935157ae3f"}, - {file = "psutil-5.9.5-cp27-none-win_amd64.whl", hash = "sha256:8c5f7c5a052d1d567db4ddd231a9d27a74e8e4a9c3f44b1032762bd7b9fdcd42"}, - {file = "psutil-5.9.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c6f686f4225553615612f6d9bc21f1c0e305f75d7d8454f9b46e901778e7217"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a7dd9997128a0d928ed4fb2c2d57e5102bb6089027939f3b722f3a210f9a8da"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89518112647f1276b03ca97b65cc7f64ca587b1eb0278383017c2a0dcc26cbe4"}, - {file = "psutil-5.9.5-cp36-abi3-win32.whl", hash = "sha256:104a5cc0e31baa2bcf67900be36acde157756b9c44017b86b2c049f11957887d"}, - {file = "psutil-5.9.5-cp36-abi3-win_amd64.whl", hash = "sha256:b258c0c1c9d145a1d5ceffab1134441c4c5113b2417fafff7315a917a026c3c9"}, - {file = "psutil-5.9.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30"}, - {file = "psutil-5.9.5.tar.gz", hash = "sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c"}, -] - -[package.extras] -test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] - -[[package]] -name = "pybind11" -version = "2.12.0" -description = "Seamless operability between C++11 and Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pybind11-2.12.0-py3-none-any.whl", hash = "sha256:df8d60b94f9e714d81013db233393d430ebf9f3551642b82291cf1b14d1afdbd"}, - {file = "pybind11-2.12.0.tar.gz", hash = "sha256:5e3c557a84b06b969247630407fc4d985bed157b4253b13153b8e8e165e0c3dc"}, -] - -[package.extras] -global = ["pybind11-global (==2.12.0)"] - -[[package]] -name = "pycodestyle" -version = "2.11.1" -description = "Python style guide checker" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, - {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, -] - -[[package]] -name = "pyflakes" -version = "3.2.0" -description = "passive checker of Python programs" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, - {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, -] - -[[package]] -name = "pygments" -version = "2.18.0" -description = "Pygments is a syntax highlighting package written in Python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, -] - -[package.extras] -windows-terminal = ["colorama (>=0.4.6)"] - -[[package]] -name = "pyk" -version = "7.0.72" -description = "" -optional = false -python-versions = "^3.10" -files = [] -develop = false - -[package.dependencies] -cmd2 = "^2.4.2" -coloredlogs = "^15.0.1" -filelock = "^3.9.0" -graphviz = "^0.20.1" -psutil = "5.9.5" -pybind11 = "^2.10.3" -textual = "^0.27.0" -tomli = "^2.0.1" -xdg-base-dirs = "^6.0.1" - -[package.source] -type = "git" -url = "https://github.com/runtimeverification/k.git" -reference = "v7.0.72" -resolved_reference = "3554072970f442d803e94fcc48b7cced90cbd761" -subdirectory = "pyk" - -[[package]] -name = "pyperclip" -version = "1.8.2" -description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" -optional = false -python-versions = "*" -files = [ - {file = "pyperclip-1.8.2.tar.gz", hash = "sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57"}, -] - -[[package]] -name = "pyreadline3" -version = "3.4.1" -description = "A python implementation of GNU readline." -optional = false -python-versions = "*" -files = [ - {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"}, - {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"}, -] - -[[package]] -name = "pytest" -version = "7.4.4" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, - {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} - -[package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-cov" -version = "5.0.0" -description = "Pytest plugin for measuring coverage." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, - {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, -] - -[package.dependencies] -coverage = {version = ">=5.2.1", extras = ["toml"]} -pytest = ">=4.6" - -[package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "pytest-timeout" -version = "2.3.1" -description = "pytest plugin to abort hanging tests" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pytest-timeout-2.3.1.tar.gz", hash = "sha256:12397729125c6ecbdaca01035b9e5239d4db97352320af155b3f5de1ba5165d9"}, - {file = "pytest_timeout-2.3.1-py3-none-any.whl", hash = "sha256:68188cb703edfc6a18fad98dc25a3c61e9f24d644b0b70f33af545219fc7813e"}, -] - -[package.dependencies] -pytest = ">=7.0.0" - -[[package]] -name = "pytest-xdist" -version = "3.6.1" -description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest_xdist-3.6.1-py3-none-any.whl", hash = "sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7"}, - {file = "pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d"}, -] - -[package.dependencies] -execnet = ">=2.1" -pytest = ">=7.0.0" - -[package.extras] -psutil = ["psutil (>=3.0)"] -setproctitle = ["setproctitle"] -testing = ["filelock"] - -[[package]] -name = "pyupgrade" -version = "3.15.2" -description = "A tool to automatically upgrade syntax for newer versions." -optional = false -python-versions = ">=3.8.1" -files = [ - {file = "pyupgrade-3.15.2-py2.py3-none-any.whl", hash = "sha256:ce309e0ff8ecb73f56a45f12570be84bbbde9540d13697cacb261a7f595fb1f5"}, - {file = "pyupgrade-3.15.2.tar.gz", hash = "sha256:c488d6896c546d25845712ef6402657123008d56c1063174e27aabe15bd6b4e5"}, -] - -[package.dependencies] -tokenize-rt = ">=5.2.0" - -[[package]] -name = "rich" -version = "13.7.1" -description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, - {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, -] - -[package.dependencies] -markdown-it-py = ">=2.2.0" -pygments = ">=2.13.0,<3.0.0" - -[package.extras] -jupyter = ["ipywidgets (>=7.5.1,<9)"] - -[[package]] -name = "setuptools" -version = "69.5.1" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, - {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "textual" -version = "0.27.0" -description = "Modern Text User Interface framework" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "textual-0.27.0-py3-none-any.whl", hash = "sha256:dc45eaf7da330686c56d6f76f59d05fd216ce6aad90fa44ee269881efc622151"}, - {file = "textual-0.27.0.tar.gz", hash = "sha256:8bdcb09dc35a706ef939b1276ccfdec10eaaee6147b41cb7587cf33298a8dd33"}, -] - -[package.dependencies] -importlib-metadata = ">=4.11.3" -markdown-it-py = {version = ">=2.1.0,<3.0.0", extras = ["linkify", "plugins"]} -rich = ">=13.3.3" -typing-extensions = ">=4.4.0,<5.0.0" - -[package.extras] -dev = ["aiohttp (>=3.8.1)", "click (>=8.1.2)", "msgpack (>=1.0.3)"] - -[[package]] -name = "tokenize-rt" -version = "5.2.0" -description = "A wrapper around the stdlib `tokenize` which roundtrips." -optional = false -python-versions = ">=3.8" -files = [ - {file = "tokenize_rt-5.2.0-py2.py3-none-any.whl", hash = "sha256:b79d41a65cfec71285433511b50271b05da3584a1da144a0752e9c621a285289"}, - {file = "tokenize_rt-5.2.0.tar.gz", hash = "sha256:9fe80f8a5c1edad2d3ede0f37481cc0cc1538a2f442c9c2f9e4feacd2792d054"}, -] - -[[package]] -name = "tomli" -version = "2.0.1" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] - -[[package]] -name = "tomlkit" -version = "0.11.8" -description = "Style preserving TOML library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, - {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, -] - -[[package]] -name = "typing-extensions" -version = "4.11.0" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, - {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, -] - -[[package]] -name = "uc-micro-py" -version = "1.0.3" -description = "Micro subset of unicode data files for linkify-it-py projects." -optional = false -python-versions = ">=3.7" -files = [ - {file = "uc-micro-py-1.0.3.tar.gz", hash = "sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a"}, - {file = "uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5"}, -] - -[package.extras] -test = ["coverage", "pytest", "pytest-cov"] - -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - -[[package]] -name = "xdg-base-dirs" -version = "6.0.1" -description = "Variables defined by the XDG Base Directory Specification" -optional = false -python-versions = ">=3.10,<4.0" -files = [ - {file = "xdg_base_dirs-6.0.1-py3-none-any.whl", hash = "sha256:63f6ebc1721ced2e86c340856e004ef829501a30a37e17079c52cfaf0e1741b9"}, - {file = "xdg_base_dirs-6.0.1.tar.gz", hash = "sha256:b4c8f4ba72d1286018b25eea374ec6fbf4fddda3d4137edf50de95de53e195a6"}, -] - -[[package]] -name = "zipp" -version = "3.18.2" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "zipp-3.18.2-py3-none-any.whl", hash = "sha256:dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e"}, - {file = "zipp-3.18.2.tar.gz", hash = "sha256:6278d9ddbcfb1f1089a88fde84481528b07b0e10474e09dcfe53dad4069fa059"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] - -[metadata] -lock-version = "2.0" -python-versions = "^3.10" -content-hash = "0525cbb18548090f06a10b659a4a35bd19aa0af52c3ddf4ad452ffd14405ce53" diff --git a/kevm-pyk/pyproject.toml b/kevm-pyk/pyproject.toml deleted file mode 100644 index 681f2250df..0000000000 --- a/kevm-pyk/pyproject.toml +++ /dev/null @@ -1,67 +0,0 @@ -[build-system] -requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -name = "kevm-pyk" -version = "1.0.564" -description = "" -authors = [ - "Runtime Verification, Inc. ", -] - -[tool.poetry.dependencies] -python = "^3.10" -pathos = "*" -pyk = { git = "https://github.com/runtimeverification/k.git", tag="v7.0.72", subdirectory = "pyk" } -tomlkit = "^0.11.6" - -[tool.poetry.group.dev.dependencies] -autoflake = "*" -black = "*" -flake8 = "*" -flake8-bugbear = "*" -flake8-comprehensions = "*" -flake8-quotes = "*" -flake8-type-checking = "*" -inotify = "*" -isort = "*" -mypy = "*" -pep8-naming = "*" -pytest = "^7" -pytest-timeout = "*" -pytest-cov = "*" -pytest-mock = "*" -pytest-xdist = "*" -pyupgrade = "*" - -[tool.poetry.scripts] -kevm = "kevm_pyk.__main__:main" -kevm-pyk = "kevm_pyk.__main__:main" -gst-to-kore = "kevm_pyk.gst_to_kore:main" - -[tool.poetry.plugins.kdist] -evm-semantics = "kevm_pyk.kdist.plugin" - -[tool.isort] -profile = "black" -line_length = 120 -skip = [ "src/kevm_pyk/kproj" ] - -[tool.autoflake] -recursive = true -expand-star-imports = true -remove-all-unused-imports = true -ignore-init-module-imports = true -remove-duplicate-keys = true -remove-unused-variables = true -exclude = [ "src/kevm_pyk/kproj" ] - -[tool.black] -line-length = 120 -skip-string-normalization = true -exclude = "src/kevm_pyk/kproj" - -[tool.mypy] -disallow_untyped_defs = true -exclude = "src/kevm_pyk/kproj/*" diff --git a/kevm-pyk/src/kevm_pyk/__init__.py b/kevm-pyk/src/kevm_pyk/__init__.py deleted file mode 100644 index ae8b3dbc77..0000000000 --- a/kevm-pyk/src/kevm_pyk/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from typing import Final - -VERSION: Final = '1.0.564' diff --git a/kevm-pyk/src/kevm_pyk/__main__.py b/kevm-pyk/src/kevm_pyk/__main__.py deleted file mode 100644 index 3e8de4c153..0000000000 --- a/kevm-pyk/src/kevm_pyk/__main__.py +++ /dev/null @@ -1,671 +0,0 @@ -from __future__ import annotations - -import contextlib -import graphlib -import json -import logging -import os -import sys -import tempfile -import time -from collections.abc import Iterable -from dataclasses import dataclass -from functools import cached_property -from pathlib import Path -from typing import TYPE_CHECKING - -from pathos.pools import ProcessPool # type: ignore -from pyk.cli.pyk import parse_toml_args -from pyk.cterm import CTermSymbolic -from pyk.kast.outer import KApply, KRewrite, KSort, KToken -from pyk.kcfg import KCFG -from pyk.kcfg.explore import KCFGExplore -from pyk.kdist import kdist -from pyk.kore.rpc import KoreClient -from pyk.kore.tools import kore_print -from pyk.ktool.kompile import LLVMKompileType -from pyk.prelude.ml import is_bottom, is_top, mlOr -from pyk.proof import APRProof -from pyk.proof.implies import EqualityProof -from pyk.proof.show import APRProofShow -from pyk.proof.tui import APRProofViewer -from pyk.utils import FrozenDict, hash_str, single - -from . import VERSION, config -from .cli import _create_argument_parser, generate_options, get_argument_type_setter, get_option_string_destination -from .gst_to_kore import SORT_ETHEREUM_SIMULATION, gst_to_kore, kore_pgm_to_kore -from .kevm import KEVM, KEVMSemantics, kevm_node_printer -from .kompile import KompileTarget, kevm_kompile -from .utils import ( - claim_dependency_dict, - ensure_ksequence_on_k_cell, - get_apr_proof_for_spec, - legacy_explore, - print_failure_info, - run_prover, -) - -if TYPE_CHECKING: - from argparse import Namespace - from collections.abc import Callable, Iterator - from typing import Any, Final, TypeVar - - from pyk.kast.outer import KClaim - from pyk.kcfg.tui import KCFGElem - from pyk.proof.proof import Proof - - from .cli import ( - KastOptions, - KompileSpecOptions, - ProveLegacyOptions, - ProveOptions, - PruneOptions, - RunOptions, - SectionEdgeOptions, - ShowKCFGOptions, - VersionOptions, - ViewKCFGOptions, - ) - - T = TypeVar('T') - -_LOGGER: Final = logging.getLogger(__name__) -_LOG_FORMAT: Final = '%(levelname)s %(asctime)s %(name)s - %(message)s' - - -def _ignore_arg(args: dict[str, Any], arg: str, cli_option: str) -> None: - if arg in args: - if args[arg] is not None: - _LOGGER.warning(f'Ignoring command-line option: {cli_option}') - args.pop(arg) - - -def main() -> None: - sys.setrecursionlimit(15000000) - parser = _create_argument_parser() - args = parser.parse_args() - toml_args = parse_toml_args(args, get_option_string_destination, get_argument_type_setter) - logging.basicConfig(level=_loglevel(args), format=_LOG_FORMAT) - - stripped_args = toml_args | { - key: val for (key, val) in vars(args).items() if val is not None and not (isinstance(val, Iterable) and not val) - } - options = generate_options(stripped_args) - - executor_name = 'exec_' + args.command.lower().replace('-', '_') - if executor_name not in globals(): - raise AssertionError(f'Unimplemented command: {args.command}') - - execute = globals()[executor_name] - execute(options) - - -def exec_version(options: VersionOptions) -> None: - print(f'KEVM Version: {VERSION}') - - -def exec_kompile_spec(options: KompileSpecOptions) -> None: - if options.target not in [KompileTarget.HASKELL, KompileTarget.MAUDE]: - raise ValueError(f'Can only call kevm kompile-spec with --target [haskell,maude], got: {options.target.value}') - - definition_dir = options.definition_dir or Path() - - optimization = 0 - if options.o1: - optimization = 1 - if options.o2: - optimization = 2 - if options.o3: - optimization = 3 - if options.debug_build: - optimization = 0 - - kevm_kompile( - options.target, - output_dir=definition_dir, - main_file=options.main_file, - main_module=options.main_module, - syntax_module=options.syntax_module, - includes=options.includes, - emit_json=options.emit_json, - read_only=options.read_only, - ccopts=options.ccopts, - optimization=optimization, - enable_llvm_debug=options.enable_llvm_debug, - llvm_kompile_type=LLVMKompileType.C if options.llvm_library else LLVMKompileType.MAIN, - debug_build=options.debug_build, - debug=options.debug, - verbose=options.verbose, - ) - - -def exec_prove_legacy(options: ProveLegacyOptions) -> None: - definition_dir = options.definition_dir or kdist.get('evm-semantics.haskell') - - kevm = KEVM(definition_dir, use_directory=options.save_directory) - - include_dirs = [Path(include) for include in options.includes] - include_dirs += config.INCLUDE_DIRS - - final_state = kevm.prove_legacy( - spec_file=options.spec_file, - includes=include_dirs, - bug_report=options.bug_report_legacy, - spec_module=options.spec_module, - claim_labels=options.claim_labels, - exclude_claim_labels=options.exclude_claim_labels, - debug=options.debug, - debugger=options.debugger, - max_depth=options.max_depth, - max_counterexamples=options.max_counterexamples, - branching_allowed=options.branching_allowed, - haskell_backend_args=options.haskell_backend_args, - ) - final_kast = mlOr([state.kast for state in final_state]) - print(kevm.pretty_print(final_kast)) - if not is_top(final_kast): - raise SystemExit(1) - - -class ZeroProcessPool: - def map(self, f: Callable[[Any], Any], xs: list[Any]) -> list[Any]: - return [f(x) for x in xs] - - -@contextlib.contextmanager -def wrap_process_pool(workers: int) -> Iterator[ZeroProcessPool | ProcessPool]: - if workers <= 1: - yield ZeroProcessPool() - else: - with ProcessPool(ncpus=workers) as pp: - yield pp - - -class JSONEncoder(json.JSONEncoder): - def default(self, obj: Any) -> Any: - if isinstance(obj, FrozenDict): - return json.JSONEncoder.encode(self, dict(obj)) - return json.JSONEncoder.default(self, obj) - - -@dataclass(frozen=True) -class KClaimJob: - claim: KClaim - dependencies: frozenset[KClaimJob] - - @cached_property - def digest(self) -> str: - deps_digest = ''.join([dep.digest for dep in self.dependencies]) - claim_hash = hash_str(json.dumps(self.claim.to_dict(), sort_keys=True, cls=JSONEncoder)) - return hash_str(f'{claim_hash}{deps_digest}') - - def up_to_date(self, digest_file: Path | None) -> bool: - if not isinstance(digest_file, Path) or not digest_file.exists(): - return False - digest_dict = json.loads(digest_file.read_text()) - if 'claims' not in digest_dict: - digest_dict['claims'] = {} - digest_file.write_text(json.dumps(digest_dict, indent=4)) - if self.claim.label not in digest_dict['claims']: - return False - return digest_dict['claims'][self.claim.label] == self.digest - - def update_digest(self, digest_file: Path | None) -> None: - if digest_file is None: - return - digest_dict = {} - if digest_file.exists(): - digest_dict = json.loads(digest_file.read_text()) - if 'claims' not in digest_dict: - digest_dict['claims'] = {} - digest_dict['claims'][self.claim.label] = self.digest - digest_file.write_text(json.dumps(digest_dict, indent=4)) - - _LOGGER.info(f'Updated claim {self.claim.label} in digest file: {digest_file}') - - -def init_claim_jobs(spec_module_name: str, claims: list[KClaim]) -> frozenset[KClaimJob]: - labels_to_claims = {claim.label: claim for claim in claims} - labels_to_claim_jobs: dict[str, KClaimJob] = {} - - def get_or_load_claim_job(claim_label: str) -> KClaimJob: - if claim_label not in labels_to_claim_jobs: - if claim_label in labels_to_claims: - claim = labels_to_claims[claim_label] - elif f'{spec_module_name}.{claim_label}' in labels_to_claims: - claim = labels_to_claims[f'{spec_module_name}.{claim_label}'] - else: - raise ValueError(f'Claim with label {claim_label} not found.') - deps = frozenset({get_or_load_claim_job(dep_label) for dep_label in claim.dependencies}) - claim_job = KClaimJob(claim, deps) - labels_to_claim_jobs[claim_label] = claim_job - return labels_to_claim_jobs[claim_label] - - return frozenset({get_or_load_claim_job(claim.label) for claim in claims}) - - -def exec_prove(options: ProveOptions) -> None: - md_selector = 'k' - - save_directory = options.save_directory or Path(tempfile.mkdtemp()) - - digest_file = save_directory / 'digest' - - definition_dir = options.definition_dir or kdist.get('evm-semantics.haskell') - - kevm = KEVM(definition_dir, use_directory=save_directory, bug_report=options.bug_report) - - include_dirs = [Path(include) for include in options.includes] - include_dirs += config.INCLUDE_DIRS - - kore_rpc_command: tuple[str, ...] - if options.kore_rpc_command is None: - kore_rpc_command = ('kore-rpc-booster',) if options.use_booster else ('kore-rpc',) - elif isinstance(options.kore_rpc_command, str): - kore_rpc_command = tuple(options.kore_rpc_command.split()) - else: - kore_rpc_command = options.kore_rpc_command - - def is_functional(claim: KClaim) -> bool: - claim_lhs = claim.body - if type(claim_lhs) is KRewrite: - claim_lhs = claim_lhs.lhs - return not (type(claim_lhs) is KApply and claim_lhs.label.name == '') - - llvm_definition_dir = definition_dir / 'llvm-library' if options.use_booster else None - - _LOGGER.info(f'Extracting claims from file: {options.spec_file}') - all_claims = kevm.get_claims( - options.spec_file, - spec_module_name=options.spec_module, - include_dirs=include_dirs, - md_selector=md_selector, - claim_labels=options.claim_labels, - exclude_claim_labels=options.exclude_claim_labels, - ) - if all_claims is None: - raise ValueError(f'No claims found in file: {options.spec_file}') - spec_module_name = ( - options.spec_module if options.spec_module is not None else os.path.splitext(options.spec_file.name)[0].upper() - ) - all_claim_jobs = init_claim_jobs(spec_module_name, all_claims) - all_claim_jobs_by_label = {c.claim.label: c for c in all_claim_jobs} - claims_graph = claim_dependency_dict(all_claims, spec_module_name=spec_module_name) - - def _init_and_run_proof(claim_job: KClaimJob) -> tuple[bool, list[str] | None]: - claim = claim_job.claim - up_to_date = claim_job.up_to_date(digest_file) - if up_to_date: - _LOGGER.info(f'Claim is up to date: {claim.label}') - else: - _LOGGER.info(f'Claim reinitialized because it is out of date: {claim.label}') - claim_job.update_digest(digest_file) - with legacy_explore( - kevm, - kcfg_semantics=KEVMSemantics(auto_abstract_gas=options.auto_abstract_gas), - id=claim.label, - llvm_definition_dir=llvm_definition_dir, - bug_report=options.bug_report, - kore_rpc_command=kore_rpc_command, - smt_timeout=options.smt_timeout, - smt_retry_limit=options.smt_retry_limit, - trace_rewrites=options.trace_rewrites, - fallback_on=options.fallback_on, - interim_simplification=options.interim_simplification, - no_post_exec_simplify=(not options.post_exec_simplify), - port=options.port, - haskell_threads=options.max_frontier_parallel, - ) as kcfg_explore: - - def create_kcfg_explore() -> KCFGExplore: - dispatch = None - client = KoreClient( - 'localhost', - kcfg_explore.cterm_symbolic._kore_client.port, - bug_report=options.bug_report, - bug_report_id=claim.label, - dispatch=dispatch, - ) - cterm_symbolic = CTermSymbolic( - client, kevm.definition, kevm.kompiled_kore, trace_rewrites=options.trace_rewrites - ) - return KCFGExplore( - cterm_symbolic, - kcfg_semantics=KEVMSemantics(auto_abstract_gas=options.auto_abstract_gas), - id=claim.label, - ) - - proof_problem: Proof - if is_functional(claim): - if not options.reinit and up_to_date and EqualityProof.proof_exists(claim.label, save_directory): - proof_problem = EqualityProof.read_proof_data(save_directory, claim.label) - else: - proof_problem = EqualityProof.from_claim(claim, kevm.definition, proof_dir=save_directory) - else: - if not options.reinit and up_to_date and APRProof.proof_data_exists(claim.label, save_directory): - proof_problem = APRProof.read_proof_data(save_directory, claim.label) - - else: - _LOGGER.info(f'Converting claim to KCFG: {claim.label}') - kcfg, init_node_id, target_node_id = KCFG.from_claim(kevm.definition, claim) - - new_init = ensure_ksequence_on_k_cell(kcfg.node(init_node_id).cterm) - new_target = ensure_ksequence_on_k_cell(kcfg.node(target_node_id).cterm) - - _LOGGER.info(f'Computing definedness constraint for initial node: {claim.label}') - new_init = kcfg_explore.cterm_symbolic.assume_defined(new_init) - - _LOGGER.info(f'Simplifying initial and target node: {claim.label}') - new_init, _ = kcfg_explore.cterm_symbolic.simplify(new_init) - new_target, _ = kcfg_explore.cterm_symbolic.simplify(new_target) - if is_bottom(new_init.kast, weak=True): - raise ValueError('Simplifying initial node led to #Bottom, are you sure your LHS is defined?') - if is_top(new_target.kast, weak=True): - raise ValueError('Simplifying target node led to #Bottom, are you sure your RHS is defined?') - - kcfg.let_node(init_node_id, cterm=new_init) - kcfg.let_node(target_node_id, cterm=new_target) - - proof_problem = APRProof( - claim.label, - kcfg, - [], - init_node_id, - target_node_id, - {}, - proof_dir=save_directory, - subproof_ids=claims_graph[claim.label], - admitted=claim.is_trusted, - ) - - if proof_problem.admitted: - proof_problem.write_proof_data() - _LOGGER.info(f'Skipping execution of proof because it is marked as admitted: {proof_problem.id}') - return True, None - - start_time = time.time() - passed = run_prover( - proof_problem, - create_kcfg_explore=create_kcfg_explore, - max_depth=options.max_depth, - max_iterations=options.max_iterations, - cut_point_rules=KEVMSemantics.cut_point_rules( - options.break_on_jumpi, - options.break_on_calls, - options.break_on_storage, - options.break_on_basic_blocks, - ), - terminal_rules=KEVMSemantics.terminal_rules(options.break_every_step), - fail_fast=options.fail_fast, - always_check_subsumption=options.always_check_subsumption, - fast_check_subsumption=options.fast_check_subsumption, - max_frontier_parallel=options.max_frontier_parallel, - ) - end_time = time.time() - _LOGGER.info(f'Proof timing {proof_problem.id}: {end_time - start_time}s') - failure_log = None - if not passed: - failure_log = print_failure_info(proof_problem, kcfg_explore) - - return passed, failure_log - - topological_sorter = graphlib.TopologicalSorter(claims_graph) - topological_sorter.prepare() - with wrap_process_pool(workers=options.workers) as process_pool: - selected_results: list[tuple[bool, list[str] | None]] = [] - selected_claims = [] - while topological_sorter.is_active(): - ready = topological_sorter.get_ready() - _LOGGER.info(f'Discharging proof obligations: {ready}') - curr_claim_list = [all_claim_jobs_by_label[label] for label in ready] - results: list[tuple[bool, list[str] | None]] = process_pool.map(_init_and_run_proof, curr_claim_list) - for label in ready: - topological_sorter.done(label) - selected_results.extend(results) - selected_claims.extend(curr_claim_list) - - failed = 0 - for job, r in zip(selected_claims, selected_results, strict=True): - passed, failure_log = r - if passed: - print(f'PROOF PASSED: {job.claim.label}') - else: - failed += 1 - print(f'PROOF FAILED: {job.claim.label}') - if options.failure_info and failure_log is not None: - for line in failure_log: - print(line) - - if failed: - sys.exit(failed) - - -def exec_prune(options: PruneOptions) -> None: - md_selector = 'k' - - if options.save_directory is None: - raise ValueError('Must pass --save-directory to prune!') - - if options.definition_dir is None: - raise ValueError('Must pass --definition to prune!') - - kevm = KEVM(options.definition_dir, use_directory=options.save_directory) - - include_dirs = [Path(include) for include in options.includes] - include_dirs += config.INCLUDE_DIRS - - _LOGGER.info(f'Extracting claims from file: {options.spec_file}') - claim = single( - kevm.get_claims( - options.spec_file, - spec_module_name=options.spec_module, - include_dirs=include_dirs, - md_selector=md_selector, - claim_labels=options.claim_labels, - exclude_claim_labels=options.exclude_claim_labels, - ) - ) - - apr_proof = APRProof.read_proof_data(options.save_directory, claim.label) - node_ids = apr_proof.prune(options.node) - _LOGGER.info(f'Pruned nodes: {node_ids}') - apr_proof.write_proof_data() - - -def exec_section_edge(options: SectionEdgeOptions) -> None: - md_selector = 'k' - - if options.save_directory is None: - raise ValueError('Must pass --save-directory to section-edge!') - - if options.definition_dir is None: - raise ValueError('Must pass --definition to section-edge!') - - kore_rpc_command: tuple[str, ...] - if options.kore_rpc_command is None: - kore_rpc_command = ('kore-rpc-booster',) if options.use_booster else ('kore-rpc',) - elif isinstance(options.kore_rpc_command, str): - kore_rpc_command = tuple(options.kore_rpc_command.split()) - else: - kore_rpc_command = options.kore_rpc_command - - kevm = KEVM(options.definition_dir, use_directory=options.save_directory) - llvm_definition_dir = options.definition_dir / 'llvm-library' if options.use_booster else None - - include_dirs = [Path(include) for include in options.includes] - include_dirs += config.INCLUDE_DIRS - - claim = single( - kevm.get_claims( - options.spec_file, - spec_module_name=options.spec_module, - include_dirs=include_dirs, - md_selector=md_selector, - claim_labels=options.claim_labels, - exclude_claim_labels=options.exclude_claim_labels, - ) - ) - - proof = APRProof.read_proof_data(options.save_directory, claim.label) - source_id, target_id = options.edge - with legacy_explore( - kevm, - kcfg_semantics=KEVMSemantics(), - id=proof.id, - bug_report=options.bug_report, - kore_rpc_command=kore_rpc_command, - smt_timeout=options.smt_timeout, - smt_retry_limit=options.smt_retry_limit, - trace_rewrites=options.trace_rewrites, - llvm_definition_dir=llvm_definition_dir, - ) as kcfg_explore: - kcfg, _ = kcfg_explore.section_edge( - proof.kcfg, source_id=int(source_id), target_id=int(target_id), logs=proof.logs, sections=options.sections - ) - proof.write_proof_data() - - -def exec_show_kcfg(options: ShowKCFGOptions) -> None: - - if options.definition_dir is None: - raise ValueError('Must pass --definition to show-kcfg!') - - kevm = KEVM(options.definition_dir) - include_dirs = [Path(include) for include in options.includes] - include_dirs += config.INCLUDE_DIRS - proof = get_apr_proof_for_spec( - kevm, - options.spec_file, - save_directory=options.save_directory, - spec_module_name=options.spec_module, - include_dirs=include_dirs, - md_selector=options.md_selector, - claim_labels=options.claim_labels, - exclude_claim_labels=options.exclude_claim_labels, - ) - - nodes = options.nodes - - if options.pending: - nodes = list(nodes) + [node.id for node in proof.pending] - if options.failing: - nodes = list(nodes) + [node.id for node in proof.failing] - - node_printer = kevm_node_printer(kevm, proof) - proof_show = APRProofShow(kevm, node_printer=node_printer) - - res_lines = proof_show.show( - proof, - nodes=nodes, - node_deltas=options.node_deltas, - to_module=options.to_module, - minimize=options.minimize, - sort_collections=options.sort_collections, - ) - - if options.failure_info: - with legacy_explore(kevm, kcfg_semantics=KEVMSemantics(), id=proof.id) as kcfg_explore: - res_lines += print_failure_info(proof, kcfg_explore) - - print('\n'.join(res_lines)) - - -def exec_view_kcfg(options: ViewKCFGOptions) -> None: - - if options.definition_dir is None: - raise ValueError('Must pass --definition to view-kcfg!') - - kevm = KEVM(options.definition_dir) - include_dirs = [Path(include) for include in options.includes] - include_dirs += config.INCLUDE_DIRS - proof = get_apr_proof_for_spec( - kevm, - options.spec_file, - save_directory=options.save_directory, - spec_module_name=options.spec_module, - include_dirs=include_dirs, - md_selector=options.md_selector, - claim_labels=options.claim_labels, - exclude_claim_labels=options.exclude_claim_labels, - ) - - node_printer = kevm_node_printer(kevm, proof) - - def custom_view(element: KCFGElem) -> list[str]: - if type(element) is KCFG.Edge: - return list(element.rules) - if type(element) is KCFG.NDBranch: - return list(element.rules) - return [] - - proof_view = APRProofViewer(proof, kevm, node_printer=node_printer, custom_view=custom_view) - - proof_view.run() - - -def exec_run(options: RunOptions) -> None: - target = options.target or 'llvm' - - target_fqn = f'evm-semantics.{target}' - - kevm = KEVM(kdist.get(target_fqn), use_directory=options.save_directory) - - try: - json_read = json.loads(options.input_file.read_text()) - kore_pattern = gst_to_kore(json_read, options.schedule, options.mode, options.chainid, options.usegas) - except json.JSONDecodeError: - pgm_token = KToken(options.input_file.read_text(), KSort('EthereumSimulation')) - kast_pgm = kevm.parse_token(pgm_token) - kore_pgm = kevm.kast_to_kore(kast_pgm, sort=KSort('EthereumSimulation')) - kore_pattern = kore_pgm_to_kore( - kore_pgm, SORT_ETHEREUM_SIMULATION, options.schedule, options.mode, options.chainid, options.usegas - ) - - kevm.run( - kore_pattern, - depth=options.depth, - term=True, - expand_macros=options.expand_macros, - output=options.output, - check=True, - debugger=options.debugger, - ) - - -def exec_kast(options: KastOptions) -> None: - target = options.target or 'llvm' - - target_fqn = f'evm-semantics.{target}' - - kevm = KEVM(kdist.get(target_fqn), use_directory=options.save_directory) - - try: - json_read = json.loads(options.input_file.read_text()) - kore_pattern = gst_to_kore(json_read, options.schedule, options.mode, options.chainid, options.usegas) - except json.JSONDecodeError: - pgm_token = KToken(options.input_file.read_text(), KSort('EthereumSimulation')) - kast_pgm = kevm.parse_token(pgm_token) - kore_pgm = kevm.kast_to_kore(kast_pgm) - kore_pattern = kore_pgm_to_kore( - kore_pgm, SORT_ETHEREUM_SIMULATION, options.schedule, options.mode, options.chainid, options.usegas - ) - - output_text = kore_print(kore_pattern, definition_dir=kevm.definition_dir, output=options.output) - print(output_text) - - -# Helpers - - -def _loglevel(args: Namespace) -> int: - if args.debug: - return logging.DEBUG - - if args.verbose: - return logging.INFO - - return logging.WARNING - - -if __name__ == '__main__': - main() diff --git a/kevm-pyk/src/kevm_pyk/cli.py b/kevm-pyk/src/kevm_pyk/cli.py deleted file mode 100644 index b362e4af4c..0000000000 --- a/kevm-pyk/src/kevm_pyk/cli.py +++ /dev/null @@ -1,1248 +0,0 @@ -from __future__ import annotations - -import logging -from argparse import ArgumentParser -from functools import cached_property -from pathlib import Path -from typing import TYPE_CHECKING, Any - -from pyk.cli.args import BugReportOptions -from pyk.cli.args import DisplayOptions as PykDisplayOptions -from pyk.cli.args import ( - KCLIArgs, - KDefinitionOptions, - KompileOptions, - LoggingOptions, - Options, - ParallelOptions, - SaveDirOptions, - SMTOptions, - SpecOptions, -) -from pyk.cli.utils import file_path -from pyk.kore.rpc import FallbackReason -from pyk.kore.tools import PrintOutput -from pyk.ktool.krun import KRunOutput - -from .kompile import KompileTarget -from .utils import arg_pair_of - -if TYPE_CHECKING: - from collections.abc import Callable - from typing import Final, TypeVar - - from pyk.kcfg.kcfg import NodeIdLike - - T = TypeVar('T') - -_LOGGER: Final = logging.getLogger(__name__) - - -def list_of(elem_type: Callable[[str], T], delim: str = ';') -> Callable[[str], list[T]]: - def parse(s: str | list[str]) -> list[T]: - s_list = s.split(delim) if not isinstance(s, list) else s - return [elem_type(elem) for elem in s_list] - - return parse - - -def node_id_like(s: str) -> NodeIdLike: - try: - return int(s) - except ValueError: - return s - - -def generate_options(args: dict[str, Any]) -> LoggingOptions: - command = args['command'] - match command: - case 'version': - return VersionOptions(args) - case 'kompile-spec': - return KompileSpecOptions(args) - case 'prove-legacy': - return ProveLegacyOptions(args) - case 'prove': - return ProveOptions(args) - case 'prune': - return PruneOptions(args) - case 'section-edge': - return SectionEdgeOptions(args) - case 'show-kcfg': - return ShowKCFGOptions(args) - case 'view-kcfg': - return ViewKCFGOptions(args) - case 'kast': - return KastOptions(args) - case 'run': - return RunOptions(args) - case _: - raise ValueError(f'Unrecognized command: {command}') - - -def get_option_string_destination(command: str, option_string: str) -> str: - option_string_destinations = {} - match command: - case 'version': - option_string_destinations = VersionOptions.from_option_string() - case 'kompile-spec': - option_string_destinations = KompileSpecOptions.from_option_string() - case 'prove-legacy': - option_string_destinations = ProveLegacyOptions.from_option_string() - case 'prove': - option_string_destinations = ProveOptions.from_option_string() - case 'prune': - option_string_destinations = PruneOptions.from_option_string() - case 'section-edge': - option_string_destinations = SectionEdgeOptions.from_option_string() - case 'show-kcfg': - option_string_destinations = ShowKCFGOptions.from_option_string() - case 'view-kcfg': - option_string_destinations = ViewKCFGOptions.from_option_string() - case 'kast': - option_string_destinations = KastOptions.from_option_string() - case 'run': - option_string_destinations = RunOptions.from_option_string() - - return option_string_destinations.get(option_string, option_string.replace('-', '_')) - - -def get_argument_type_setter(command: str, option_string: str) -> Callable[[str], Any]: - def func(par: str) -> str: - return par - - option_types = {} - match command: - case 'version': - option_types = VersionOptions.get_argument_type() - case 'kompile-spec': - option_types = KompileSpecOptions.get_argument_type() - case 'prove-legacy': - option_types = ProveLegacyOptions.get_argument_type() - case 'prove': - option_types = ProveOptions.get_argument_type() - case 'prune': - option_types = PruneOptions.get_argument_type() - case 'section-edge': - option_types = SectionEdgeOptions.get_argument_type() - case 'show-kcfg': - option_types = ShowKCFGOptions.get_argument_type() - case 'view-kcfg': - option_types = ViewKCFGOptions.get_argument_type() - case 'kast': - option_types = KastOptions.get_argument_type() - case 'run': - option_types = RunOptions.get_argument_type() - - return option_types.get(option_string, func) - - -def _create_argument_parser() -> ArgumentParser: - kevm_cli_args = KEVMCLIArgs() - config_args = ConfigArgs() - parser = ArgumentParser(prog='kevm-pyk') - - command_parser = parser.add_subparsers(dest='command', required=True) - - command_parser.add_parser( - 'version', help='Print KEVM version and exit.', parents=[kevm_cli_args.logging_args, config_args.config_args] - ) - - kevm_kompile_spec_args = command_parser.add_parser( - 'kompile-spec', - help='Kompile KEVM specification.', - parents=[kevm_cli_args.logging_args, kevm_cli_args.k_args, kevm_cli_args.kompile_args, config_args.config_args], - ) - kevm_kompile_spec_args.add_argument('main_file', type=file_path, help='Path to file with main module.') - kevm_kompile_spec_args.add_argument('--target', type=KompileTarget, help='[haskell|maude]') - - kevm_kompile_spec_args.add_argument( - '--debug-build', dest='debug_build', default=None, help='Enable debug symbols in LLVM builds.' - ) - - prove_args = command_parser.add_parser( - 'prove', - help='Run KEVM proof.', - parents=[ - kevm_cli_args.logging_args, - kevm_cli_args.parallel_args, - kevm_cli_args.k_args, - kevm_cli_args.kprove_args, - kevm_cli_args.rpc_args, - kevm_cli_args.bug_report_args, - kevm_cli_args.smt_args, - kevm_cli_args.explore_args, - kevm_cli_args.spec_args, - config_args.config_args, - ], - ) - prove_args.add_argument( - '--reinit', - dest='reinit', - default=None, - action='store_true', - help='Reinitialize CFGs even if they already exist.', - ) - - prune_args = command_parser.add_parser( - 'prune', - help='Remove a node and its successors from the proof state.', - parents=[kevm_cli_args.logging_args, kevm_cli_args.k_args, kevm_cli_args.spec_args, config_args.config_args], - ) - prune_args.add_argument('node', type=node_id_like, help='Node to remove CFG subgraph from.') - - section_edge_args = command_parser.add_parser( - 'section-edge', - help='Break an edge into sections.', - parents=[kevm_cli_args.logging_args, kevm_cli_args.k_args, kevm_cli_args.spec_args, config_args.config_args], - ) - section_edge_args.add_argument('edge', type=arg_pair_of(str, str), help='Edge to section in CFG.') - section_edge_args.add_argument('--sections', type=int, help='Number of sections to make from edge (>= 2).') - section_edge_args.add_argument( - '--use-booster', - dest='use_booster', - default=None, - action='store_true', - help="Use the booster RPC server instead of kore-rpc. Requires calling kompile with '--target haskell-booster' flag", - ) - - prove_legacy_args = command_parser.add_parser( - 'prove-legacy', - help='Run KEVM proof using the legacy kprove binary.', - parents=[ - kevm_cli_args.logging_args, - kevm_cli_args.k_args, - kevm_cli_args.spec_args, - kevm_cli_args.kprove_legacy_args, - config_args.config_args, - ], - ) - prove_legacy_args.add_argument( - '--bug-report-legacy', default=None, action='store_true', help='Generate a legacy bug report.' - ) - - command_parser.add_parser( - 'view-kcfg', - help='Explore a given proof in the KCFG visualizer.', - parents=[kevm_cli_args.logging_args, kevm_cli_args.k_args, kevm_cli_args.spec_args, config_args.config_args], - ) - - command_parser.add_parser( - 'show-kcfg', - help='Print the CFG for a given proof.', - parents=[ - kevm_cli_args.logging_args, - kevm_cli_args.k_args, - kevm_cli_args.kcfg_show_args, - kevm_cli_args.spec_args, - kevm_cli_args.display_args, - config_args.config_args, - ], - ) - - run_args = command_parser.add_parser( - 'run', - help='Run KEVM test/simulation.', - parents=[ - kevm_cli_args.logging_args, - kevm_cli_args.target_args, - kevm_cli_args.evm_chain_args, - kevm_cli_args.k_args, - config_args.config_args, - ], - ) - run_args.add_argument('input_file', type=file_path, help='Path to input file.') - run_args.add_argument( - '--output', - type=KRunOutput, - choices=list(KRunOutput), - ) - run_args.add_argument( - '--expand-macros', - dest='expand_macros', - default=None, - action='store_true', - help='Expand macros on the input term before execution.', - ) - run_args.add_argument( - '--no-expand-macros', - dest='expand_macros', - action='store_false', - help='Do not expand macros on the input term before execution.', - ) - run_args.add_argument( - '--debugger', - dest='debugger', - action='store_true', - help='Run GDB debugger for execution.', - ) - - kast_args = command_parser.add_parser( - 'kast', - help='Run KEVM program.', - parents=[ - kevm_cli_args.logging_args, - kevm_cli_args.target_args, - kevm_cli_args.evm_chain_args, - kevm_cli_args.k_args, - config_args.config_args, - ], - ) - kast_args.add_argument('input_file', type=file_path, help='Path to input file.') - kast_args.add_argument( - '--output', - type=PrintOutput, - choices=list(PrintOutput), - ) - - return parser - - -class KOptions(KDefinitionOptions): - definition_dir: Path | None - depth: int | None - - @staticmethod - def default() -> dict[str, Any]: - return { - 'definition_dir': None, - 'depth': None, - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return KDefinitionOptions.from_option_string() | { - 'definition': 'definition_dir', - } - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return KDefinitionOptions.get_argument_type() - - -class KProveLegacyOptions(Options): - bug_report: bool - debugger: bool - max_depth: int | None - max_counterexamples: int | None - branching_allowed: int | None - haskell_backend_args: list[str] - - @staticmethod - def default() -> dict[str, Any]: - return { - 'bug_report': False, - 'debugger': False, - 'max_depth': None, - 'max_counterexamples': None, - 'branching_allowed': None, - 'haskell_backend_args': [], - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return KDefinitionOptions.from_option_string() | { - 'haskell-backend-arg': 'haskell_backend_args', - } - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return {'haskell-backend-arg': list_of(str)} - - -class RPCOptions(Options): - trace_rewrites: bool - kore_rpc_command: str | None - use_booster: bool - fallback_on: list[FallbackReason] - post_exec_simplify: bool - interim_simplification: int | None - port: int | None - maude_port: int | None - - @staticmethod - def default() -> dict[str, Any]: - return { - 'trace_rewrites': False, - 'kore_rpc_command': None, - 'use_booster': False, - 'fallback_on': [], - 'post_exec_simplify': True, - 'interim_simplification': None, - 'port': None, - 'maude_port': None, - } - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return {'fallback-on': list_of(FallbackReason, delim=',')} - - -class ExploreOptions(Options): - break_every_step: bool - break_on_jumpi: bool - break_on_calls: bool - break_on_storage: bool - break_on_basic_blocks: bool - max_depth: int - max_iterations: int | None - failure_info: bool - auto_abstract_gas: bool - counterexample_info: bool - fail_fast: bool - - @staticmethod - def default() -> dict[str, Any]: - return { - 'break_every_step': False, - 'break_on_jumpi': False, - 'break_on_calls': False, - 'break_on_storage': False, - 'break_on_basic_blocks': False, - 'max_depth': 1000, - 'max_iterations': None, - 'failure_info': True, - 'auto_abstract_gas': False, - 'counterexample_info': True, - 'fail_fast': True, - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return { - 'failure-information': 'failure_info', - 'no-failure-information': 'no_failure_info', - } - - -class KProveOptions(Options): - debug_equations: list[str] - always_check_subsumption: bool - fast_check_subsumption: bool - - @staticmethod - def default() -> dict[str, Any]: - return { - 'debug_equations': [], - 'always_check_subsumption': True, - 'fast_check_subsumption': False, - } - - -class KCFGShowOptions(Options): - nodes: list[NodeIdLike] - node_deltas: list[tuple[NodeIdLike, NodeIdLike]] - failure_info: bool - to_module: bool - pending: bool - failing: bool - counterexample_info: bool - - @staticmethod - def default() -> dict[str, Any]: - return { - 'nodes': [], - 'node_deltas': [], - 'failure_info': False, - 'to_module': False, - 'pending': False, - 'failing': False, - 'counterexample_info': False, - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return { - 'counterexample-information': 'counterexample_info', - 'no-counterexample-information': 'no_counterexample_info', - 'node': 'nodes', - 'node-delta': 'node_deltas', - } - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return { - 'node': list_of(node_id_like, delim=','), - 'node-delta': list_of(arg_pair_of(node_id_like, node_id_like)), - } - - -class TargetOptions(Options): - target: str | None - - @staticmethod - def default() -> dict[str, Any]: - return { - 'target': None, - } - - -class EVMChainOptions(Options): - schedule: str - chainid: int - mode: str - usegas: bool - - @staticmethod - def default() -> dict[str, Any]: - return { - 'schedule': 'SHANGHAI', - 'chainid': 1, - 'mode': 'NORMAL', - 'use_gas': True, - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return { - 'no-gas': 'no_usegas', - } - - -class DisplayOptions(PykDisplayOptions): - sort_collections: bool - - @staticmethod - def default() -> dict[str, Any]: - return { - 'sort_collections': False, - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return PykDisplayOptions.from_option_string() - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return PykDisplayOptions.get_argument_type() - - -class KGenOptions(Options): - requires: list[str] - imports: list[str] - - @staticmethod - def default() -> dict[str, Any]: - return { - 'requires': [], - 'imports': [], - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return { - 'require': 'requires', - 'module-import': 'imports', - } - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return { - 'require': list_of(str), - 'module-import': list_of(str), - } - - -class VersionOptions(LoggingOptions): - @staticmethod - def from_option_string() -> dict[str, str]: - return LoggingOptions.from_option_string() - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return LoggingOptions.get_argument_type() - - -class KompileSpecOptions(LoggingOptions, KOptions, KompileOptions): - main_file: Path - target: KompileTarget - debug_build: bool - - @staticmethod - def default() -> dict[str, Any]: - return { - 'target': KompileTarget.HASKELL, - 'debug_build': False, - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return LoggingOptions.from_option_string() | KOptions.from_option_string() | KompileOptions.from_option_string() - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return ( - LoggingOptions.get_argument_type() - | KOptions.get_argument_type() - | KompileOptions.get_argument_type() - | {'target': KompileTarget, 'main_file': file_path} - ) - - -class ProveLegacyOptions(LoggingOptions, KOptions, SpecOptions, KProveLegacyOptions): - bug_report_legacy: bool - - @staticmethod - def default() -> dict[str, Any]: - return { - 'bug_report_legacy': False, - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return ( - LoggingOptions.from_option_string() - | KOptions.from_option_string() - | SpecOptions.from_option_string() - | KProveLegacyOptions.from_option_string() - ) - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return ( - LoggingOptions.get_argument_type() - | KOptions.get_argument_type() - | SpecOptions.get_argument_type() - | KProveLegacyOptions.get_argument_type() - ) - - -class ProveOptions( - LoggingOptions, - ParallelOptions, - KOptions, - RPCOptions, - BugReportOptions, - SMTOptions, - ExploreOptions, - SpecOptions, - KProveOptions, -): - reinit: bool - max_frontier_parallel: int - - @staticmethod - def default() -> dict[str, Any]: - return { - 'reinit': False, - 'max_frontier_parallel': 1, - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return ( - LoggingOptions.from_option_string() - | ParallelOptions.from_option_string() - | KOptions.from_option_string() - | RPCOptions.from_option_string() - | BugReportOptions.from_option_string() - | SMTOptions.from_option_string() - | ExploreOptions.from_option_string() - | SpecOptions.from_option_string() - | KProveOptions.from_option_string() - ) - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return ( - LoggingOptions.get_argument_type() - | ParallelOptions.get_argument_type() - | KOptions.get_argument_type() - | RPCOptions.get_argument_type() - | BugReportOptions.get_argument_type() - | SMTOptions.get_argument_type() - | ExploreOptions.get_argument_type() - | SpecOptions.get_argument_type() - | KProveOptions.get_argument_type() - ) - - -class PruneOptions(LoggingOptions, KOptions, SpecOptions): - node: NodeIdLike - - @staticmethod - def from_option_string() -> dict[str, str]: - return LoggingOptions.from_option_string() | KOptions.from_option_string() | SpecOptions.from_option_string() - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return ( - LoggingOptions.get_argument_type() - | KOptions.get_argument_type() - | SpecOptions.get_argument_type() - | { - 'node': node_id_like, - } - ) - - -class SectionEdgeOptions( - LoggingOptions, - KOptions, - RPCOptions, - SMTOptions, - SpecOptions, - BugReportOptions, -): - edge: tuple[str, str] - sections: int - - @staticmethod - def default() -> dict[str, Any]: - return { - 'sections': 2, - 'use_booster': False, - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return ( - LoggingOptions.from_option_string() - | KOptions.from_option_string() - | RPCOptions.from_option_string() - | SMTOptions.from_option_string() - | SpecOptions.from_option_string() - | BugReportOptions.from_option_string() - ) - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return ( - LoggingOptions.get_argument_type() - | KOptions.get_argument_type() - | RPCOptions.get_argument_type() - | SMTOptions.get_argument_type() - | SpecOptions.get_argument_type() - | BugReportOptions.get_argument_type() - | { - 'edge': arg_pair_of(str, str), - } - ) - - -class ShowKCFGOptions( - LoggingOptions, - KCFGShowOptions, - KOptions, - SpecOptions, - DisplayOptions, -): - @staticmethod - def from_option_string() -> dict[str, str]: - return ( - LoggingOptions.from_option_string() - | KCFGShowOptions.from_option_string() - | KOptions.from_option_string() - | SpecOptions.from_option_string() - | DisplayOptions.from_option_string() - ) - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return ( - LoggingOptions.get_argument_type() - | KCFGShowOptions.get_argument_type() - | KOptions.get_argument_type() - | SpecOptions.get_argument_type() - | DisplayOptions.get_argument_type() - ) - - -class ViewKCFGOptions( - LoggingOptions, - KOptions, - SpecOptions, -): - @staticmethod - def from_option_string() -> dict[str, str]: - return LoggingOptions.from_option_string() | KOptions.from_option_string() | SpecOptions.from_option_string() - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return LoggingOptions.get_argument_type() | KOptions.get_argument_type() | SpecOptions.get_argument_type() - - -class RunOptions( - LoggingOptions, - KOptions, - EVMChainOptions, - TargetOptions, - SaveDirOptions, -): - input_file: Path - output: KRunOutput - expand_macros: bool - debugger: bool - - @staticmethod - def default() -> dict[str, Any]: - return { - 'output': KRunOutput.PRETTY, - 'expand_macros': True, - 'debugger': False, - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return ( - LoggingOptions.from_option_string() - | KOptions.from_option_string() - | EVMChainOptions.from_option_string() - | TargetOptions.from_option_string() - | SaveDirOptions.from_option_string() - ) - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return ( - LoggingOptions.get_argument_type() - | KOptions.get_argument_type() - | EVMChainOptions.get_argument_type() - | TargetOptions.get_argument_type() - | SaveDirOptions.get_argument_type() - | { - 'input_file': file_path, - 'output': KRunOutput, - } - ) - - -class KastOptions( - LoggingOptions, - TargetOptions, - EVMChainOptions, - KOptions, - SaveDirOptions, -): - input_file: Path - output: PrintOutput - - @staticmethod - def default() -> dict[str, Any]: - return { - 'output': PrintOutput.KORE, - } - - @staticmethod - def from_option_string() -> dict[str, str]: - return ( - LoggingOptions.from_option_string() - | TargetOptions.from_option_string() - | EVMChainOptions.from_option_string() - | KOptions.from_option_string() - | SaveDirOptions.from_option_string() - ) - - @staticmethod - def get_argument_type() -> dict[str, Callable]: - return ( - LoggingOptions.get_argument_type() - | KOptions.get_argument_type() - | EVMChainOptions.get_argument_type() - | TargetOptions.get_argument_type() - | SaveDirOptions.get_argument_type() - | { - 'input_file': file_path, - } - ) - - -class ConfigArgs: - @cached_property - def config_args(self) -> ArgumentParser: - args = ArgumentParser(add_help=False) - args.add_argument( - '--config-file', - dest='config_file', - type=file_path, - default=Path('./kevm-pyk.toml'), - help='Path to Pyk config file.', - ) - args.add_argument( - '--config-profile', - dest='config_profile', - default='default', - help='Config profile to be used.', - ) - return args - - -class KEVMCLIArgs(KCLIArgs): - @cached_property - def target_args(self) -> ArgumentParser: - args = ArgumentParser(add_help=False) - args.add_argument('--target', choices=['llvm', 'haskell', 'haskell-standalone', 'foundry']) - return args - - @cached_property - def k_args(self) -> ArgumentParser: - args = super().definition_args - args.add_argument('--depth', default=None, type=int, help='Maximum depth to execute to.') - return args - - @cached_property - def kprove_args(self) -> ArgumentParser: - args = ArgumentParser(add_help=False) - args.add_argument( - '--debug-equations', - type=list_of(str, delim=','), - default=[], - help='Comma-separate list of equations to debug.', - ) - args.add_argument( - '--always-check-subsumption', - dest='always_check_subsumption', - default=True, - action='store_true', - help='Check subsumption even on non-terminal nodes (default, experimental).', - ) - args.add_argument( - '--no-always-check-subsumption', - dest='always_check_subsumption', - action='store_false', - help='Do not check subsumption on non-terminal nodes (experimental).', - ) - args.add_argument( - '--fast-check-subsumption', - dest='fast_check_subsumption', - default=False, - action='store_true', - help='Use fast-check on k-cell to determine subsumption (experimental).', - ) - return args - - @cached_property - def kprove_legacy_args(self) -> ArgumentParser: - args = ArgumentParser(add_help=False) - args.add_argument( - '--bug-report', - default=False, - action='store_true', - help='Generate a haskell-backend bug report for the execution.', - ) - args.add_argument( - '--debugger', - dest='debugger', - default=False, - action='store_true', - help='Launch proof in an interactive debugger.', - ) - args.add_argument( - '--max-depth', - dest='max_depth', - default=None, - type=int, - help='The maximum number of computational steps to prove.', - ) - args.add_argument( - '--max-counterexamples', - type=int, - dest='max_counterexamples', - default=None, - help='Maximum number of counterexamples reported before a forcible stop.', - ) - args.add_argument( - '--branching-allowed', - type=int, - dest='branching_allowed', - default=None, - help='Number of branching events allowed before a forcible stop.', - ) - args.add_argument( - '--haskell-backend-arg', - dest='haskell_backend_args', - default=[], - action='append', - help='Arguments passed to the Haskell backend execution engine.', - ) - return args - - @cached_property - def evm_chain_args(self) -> ArgumentParser: - schedules = ( - 'DEFAULT', - 'FRONTIER', - 'HOMESTEAD', - 'TANGERINE_WHISTLE', - 'SPURIOUS_DRAGON', - 'BYZANTIUM', - 'CONSTANTINOPLE', - 'PETERSBURG', - 'ISTANBUL', - 'BERLIN', - 'LONDON', - 'MERGE', - 'SHANGHAI', - ) - modes = ('NORMAL', 'VMTESTS') - - args = ArgumentParser(add_help=False) - args.add_argument( - '--schedule', - choices=schedules, - default='SHANGHAI', - help=f"schedule to use for execution [{'|'.join(schedules)}].", - ) - args.add_argument('--chainid', type=int, default=1, help='chain ID to use for execution.') - args.add_argument( - '--mode', - choices=modes, - default='NORMAL', - help="execution mode to use [{'|'.join(modes)}].", - ) - args.add_argument( - '--no-gas', action='store_false', dest='usegas', default=True, help='omit gas cost computations.' - ) - return args - - @cached_property - def display_args(self) -> ArgumentParser: - args = super().display_args - args.add_argument( - '--sort-collections', - dest='sort_collections', - default=False, - action='store_true', - help='Sort collections before outputting term.', - ) - return args - - @cached_property - def rpc_args(self) -> ArgumentParser: - args = ArgumentParser(add_help=False) - args.add_argument( - '--trace-rewrites', - dest='trace_rewrites', - default=False, - action='store_true', - help='Log traces of all simplification and rewrite rule applications.', - ) - args.add_argument( - '--kore-rpc-command', - dest='kore_rpc_command', - type=str, - default=None, - help='Custom command to start RPC server.', - ) - args.add_argument( - '--use-booster', - dest='use_booster', - default=False, - action='store_true', - help='Use the booster RPC server instead of kore-rpc.', - ) - args.add_argument( - '--fallback-on', - dest='fallback_on', - type=list_of(FallbackReason, delim=','), - help='Comma-separated reasons to fallback from booster to kore, only usable with --use-booster. Options [Branching,Aborted,Stuck].', - ) - args.add_argument( - '--post-exec-simplify', - dest='post_exec_simplify', - default=True, - action='store_true', - help='Always simplify states with kore backend after booster execution, only usable with --use-booster.', - ) - args.add_argument( - '--no-post-exec-simplify', - dest='post_exec_simplify', - action='store_false', - help='Do not simplify states with kore backend after booster execution, only usable with --use-booster.', - ) - args.add_argument( - '--interim-simplification', - dest='interim_simplification', - type=int, - help='Max number of steps to execute before applying simplifier to term in booster backend, only usable with --use-booster.', - ) - args.add_argument( - '--port', - dest='port', - type=int, - default=None, - help='Use existing RPC server on named port.', - ) - args.add_argument( - '--maude-port', - dest='maude_port', - type=int, - default=None, - help='Use existing Maude RPC server on named port.', - ) - return args - - @cached_property - def explore_args(self) -> ArgumentParser: - args = ArgumentParser(add_help=False) - args.add_argument( - '--break-every-step', - dest='break_every_step', - default=False, - action='store_true', - help='Store a node for every EVM opcode step (expensive).', - ) - args.add_argument( - '--break-on-jumpi', - dest='break_on_jumpi', - default=False, - action='store_true', - help='Store a node for every EVM jump opcode.', - ) - args.add_argument( - '--break-on-calls', - dest='break_on_calls', - default=False, - action='store_true', - help='Store a node for every EVM call made.', - ) - args.add_argument( - '--no-break-on-calls', - dest='break_on_calls', - default=True, - action='store_false', - help='Do not store a node for every EVM call made (default).', - ) - args.add_argument( - '--break-on-storage', - dest='break_on_storage', - default=False, - action='store_true', - help='Store a node for every EVM SSTORE/SLOAD made.', - ) - args.add_argument( - '--break-on-basic-blocks', - dest='break_on_basic_blocks', - default=False, - action='store_true', - help='Store a node for every EVM basic block (implies --break-on-calls).', - ) - args.add_argument( - '--max-depth', - dest='max_depth', - default=1000, - type=int, - help='Maximum number of K steps before the state is saved in a new node in the CFG. Branching will cause this to happen earlier.', - ) - args.add_argument( - '--max-iterations', - dest='max_iterations', - default=None, - type=int, - help='Number of times to expand the next pending node in the CFG.', - ) - args.add_argument( - '--failure-information', - dest='failure_info', - default=True, - action='store_true', - help='Show failure summary for all failing tests (default).', - ) - args.add_argument( - '--no-failure-information', - dest='failure_info', - action='store_false', - help='Do not show failure summary for failing tests.', - ) - args.add_argument( - '--auto-abstract-gas', - dest='auto_abstract_gas', - action='store_true', - help='Automatically extract gas cell when infinite gas is enabled.', - ) - args.add_argument( - '--counterexample-information', - dest='counterexample_info', - default=True, - action='store_true', - help='Show models for failing nodes (default).', - ) - args.add_argument( - '--no-counterexample-information', - dest='counterexample_info', - action='store_false', - help='Do not show models for failing nodes.', - ) - args.add_argument( - '--fail-fast', - dest='fail_fast', - default=True, - action='store_true', - help='Stop execution on other branches if a failing node is detected (default).', - ) - args.add_argument( - '--no-fail-fast', - dest='fail_fast', - action='store_false', - help='Continue execution on other branches if a failing node is detected.', - ) - return args - - @cached_property - def k_gen_args(self) -> ArgumentParser: - args = ArgumentParser(add_help=False) - args.add_argument( - '--require', - dest='requires', - default=[], - action='append', - help='Extra K requires to include in generated output.', - ) - args.add_argument( - '--module-import', - dest='imports', - default=[], - action='append', - help='Extra modules to import into generated main module.', - ) - return args - - @cached_property - def kcfg_show_args(self) -> ArgumentParser: - args = ArgumentParser(add_help=False) - args.add_argument( - '--node', - type=node_id_like, - dest='nodes', - default=[], - action='append', - help='List of nodes to display as well.', - ) - args.add_argument( - '--node-delta', - type=arg_pair_of(node_id_like, node_id_like), - dest='node_deltas', - default=[], - action='append', - help='List of nodes to display delta for.', - ) - args.add_argument( - '--failure-information', - dest='failure_info', - default=False, - action='store_true', - help='Show failure summary for cfg.', - ) - args.add_argument( - '--no-failure-information', - dest='failure_info', - action='store_false', - help='Do not show failure summary for cfg.', - ) - args.add_argument( - '--to-module', dest='to_module', default=False, action='store_true', help='Output edges as a K module.' - ) - args.add_argument( - '--pending', dest='pending', default=False, action='store_true', help='Also display pending nodes.' - ) - args.add_argument( - '--failing', dest='failing', default=False, action='store_true', help='Also display failing nodes.' - ) - args.add_argument( - '--counterexample-information', - dest='counterexample_info', - default=False, - action='store_true', - help="Show models for failing nodes. Should be called with the '--failure-information' flag.", - ) - return args diff --git a/kevm-pyk/src/kevm_pyk/config.py b/kevm-pyk/src/kevm_pyk/config.py deleted file mode 100644 index c5881b9473..0000000000 --- a/kevm-pyk/src/kevm_pyk/config.py +++ /dev/null @@ -1,22 +0,0 @@ -from __future__ import annotations - -import os -from pathlib import Path -from typing import TYPE_CHECKING - -import kevm_pyk - -if TYPE_CHECKING: - from typing import Final - - -MODULE_DIR: Final = Path(kevm_pyk.__file__).parent -KPROJ_DIR: Final = MODULE_DIR / 'kproj' -EVM_SEMANTICS_DIR: Final = KPROJ_DIR / 'evm-semantics' -PLUGIN_DIR: Final = KPROJ_DIR / 'plugin' - - -INCLUDE_DIRS: Final = (EVM_SEMANTICS_DIR, PLUGIN_DIR) - - -NIX_LIBS: Final = os.getenv('NIX_LIBS') diff --git a/kevm-pyk/src/kevm_pyk/gst_to_kore.py b/kevm-pyk/src/kevm_pyk/gst_to_kore.py deleted file mode 100644 index fa7f92447c..0000000000 --- a/kevm-pyk/src/kevm_pyk/gst_to_kore.py +++ /dev/null @@ -1,80 +0,0 @@ -from __future__ import annotations - -import json -import logging -import sys -from argparse import ArgumentParser -from typing import TYPE_CHECKING - -from pyk.cli.utils import file_path -from pyk.kore.prelude import BOOL, INT, SORT_JSON, SORT_K_ITEM, bool_dv, inj, int_dv, json_to_kore, top_cell_initializer -from pyk.kore.syntax import App, SortApp - -from .cli import KEVMCLIArgs - -if TYPE_CHECKING: - from argparse import Namespace - from pathlib import Path - from typing import Any, Final - - from pyk.kore.syntax import Pattern - - -_LOGGER: Final = logging.getLogger(__name__) -_LOG_FORMAT: Final = '%(levelname)s %(asctime)s %(name)s - %(message)s' - - -SORT_SCHEDULE: Final = SortApp('SortSchedule') -SORT_MODE: Final = SortApp('SortMode') -SORT_ETHEREUM_SIMULATION: Final = SortApp('SortEthereumSimulation') - - -def gst_to_kore(gst_data: Any, schedule: str, mode: str, chainid: int, usegas: bool) -> App: - return kore_pgm_to_kore(json_to_kore(gst_data), SORT_JSON, schedule, mode, chainid, usegas) - - -def kore_pgm_to_kore(pgm: Pattern, pattern_sort: SortApp, schedule: str, mode: str, chainid: int, usegas: bool) -> App: - config = { - '$PGM': inj(pattern_sort, SORT_K_ITEM, pgm), - '$SCHEDULE': inj(SORT_SCHEDULE, SORT_K_ITEM, _schedule_to_kore(schedule)), - '$MODE': inj(SORT_MODE, SORT_K_ITEM, _mode_to_kore(mode)), - '$CHAINID': inj(INT, SORT_K_ITEM, int_dv(chainid)), - '$USEGAS': inj(BOOL, SORT_K_ITEM, bool_dv(usegas)), - } - return top_cell_initializer(config) - - -def _schedule_to_kore(schedule: str) -> App: - return App(f"Lbl{schedule}'Unds'EVM") - - -def _mode_to_kore(mode: str) -> App: - return App(f'Lbl{mode}') - - -def main() -> None: - sys.setrecursionlimit(15000000) - args = _parse_args() - _exec_gst_to_kore(args.input_file, args.schedule, args.mode, args.chainid, args.usegas) - - -def _exec_gst_to_kore(input_file: Path, schedule: str, mode: str, chainid: int, usegas: bool) -> None: - gst_data = json.loads(input_file.read_text()) - kore = gst_to_kore(gst_data, schedule, mode, chainid, usegas) - kore.write(sys.stdout) - sys.stdout.write('\n') - _LOGGER.info('Finished writing KORE') - - -def _parse_args() -> Namespace: - kevm_cli_args = KEVMCLIArgs() - parser = ArgumentParser( - description='Convert a GeneralStateTest to Kore for compsumption by KEVM', - parents=[kevm_cli_args.evm_chain_args], - ) - parser.add_argument('input_file', type=file_path, help='path to GST') - return parser.parse_args() - - -if __name__ == '__main__': - main() diff --git a/kevm-pyk/src/kevm_pyk/interpreter.py b/kevm-pyk/src/kevm_pyk/interpreter.py deleted file mode 100644 index e21d09efdd..0000000000 --- a/kevm-pyk/src/kevm_pyk/interpreter.py +++ /dev/null @@ -1,32 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -from pyk.kdist import kdist -from pyk.kore.parser import KoreParser -from pyk.utils import run_process - -from .gst_to_kore import gst_to_kore - -if TYPE_CHECKING: - from subprocess import CompletedProcess - from typing import Any - - from pyk.kore.syntax import Pattern - - -def interpret(gst_data: Any, schedule: str, mode: str, chainid: int, usegas: bool, *, check: bool = True) -> Pattern: - proc_res = _interpret(gst_data, schedule, mode, chainid, usegas) - - if check: - proc_res.check_returncode() - - kore = KoreParser(proc_res.stdout).pattern() - return kore - - -def _interpret(gst_data: Any, schedule: str, mode: str, chainid: int, usegas: bool) -> CompletedProcess: - interpreter = kdist.get('evm-semantics.llvm') / 'interpreter' - init_kore = gst_to_kore(gst_data, schedule, mode, chainid, usegas) - proc_res = run_process([str(interpreter), '/dev/stdin', '-1', '/dev/stdout'], input=init_kore.text, check=False) - return proc_res diff --git a/kevm-pyk/src/kevm_pyk/kdist/__init__.py b/kevm-pyk/src/kevm_pyk/kdist/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/kevm-pyk/src/kevm_pyk/kdist/plugin.py b/kevm-pyk/src/kevm_pyk/kdist/plugin.py deleted file mode 100644 index 601ac5be89..0000000000 --- a/kevm-pyk/src/kevm_pyk/kdist/plugin.py +++ /dev/null @@ -1,143 +0,0 @@ -from __future__ import annotations - -import sys -from distutils.dir_util import copy_tree -from typing import TYPE_CHECKING - -from pyk.kbuild.utils import k_version, sync_files -from pyk.kdist.api import Target -from pyk.kllvm.compiler import compile_kllvm, compile_runtime -from pyk.utils import run_process - -from .. import config -from ..kompile import KompileTarget, kevm_kompile, lib_ccopts - -if TYPE_CHECKING: - from collections.abc import Mapping - from pathlib import Path - from typing import Any, Final - - -class KEVMTarget(Target): - _kompile_args: dict[str, Any] - - def __init__(self, kompile_args: Mapping[str, Any]): - self._kompile_args = dict(kompile_args) - - def build(self, output_dir: Path, deps: dict[str, Path], args: dict[str, Any], verbose: bool) -> None: - enable_llvm_debug = bool(args.get('enable-llvm-debug', '')) - debug_build = bool(args.get('debug-build', '')) - ccopts = [ccopt for ccopt in args.get('ccopts', '').split(' ') if ccopt] - - kevm_kompile( - output_dir=output_dir, - enable_llvm_debug=enable_llvm_debug, - verbose=verbose, - ccopts=ccopts, - plugin_dir=deps['evm-semantics.plugin'], - debug_build=debug_build, - **self._kompile_args, - ) - - def deps(self) -> tuple[str, ...]: - return ('evm-semantics.plugin',) - - def source(self) -> tuple[Path, ...]: - return (config.EVM_SEMANTICS_DIR,) + tuple(config.MODULE_DIR.rglob('*.py')) - - def context(self) -> dict[str, str]: - return {'k-version': k_version().text} - - -class PluginTarget(Target): - def build(self, output_dir: Path, deps: dict[str, Any], args: dict[str, Any], verbose: bool) -> None: - sync_files( - source_dir=config.PLUGIN_DIR / 'plugin-c', - target_dir=output_dir / 'plugin-c', - file_names=[ - 'blake2.h', - 'crypto.cpp', - 'plugin_util.cpp', - 'plugin_util.h', - ], - ) - - copy_tree(str(config.PLUGIN_DIR), '.') - run_process( - ['make', 'libcryptopp', 'libff', 'blake2', '-j8'], - pipe_stdout=not verbose, - ) - - copy_tree('./build/libcryptopp', str(output_dir / 'libcryptopp')) - copy_tree('./build/libff', str(output_dir / 'libff')) - copy_tree('./build/blake2', str(output_dir / 'blake2')) - - def source(self) -> tuple[Path]: - return (config.PLUGIN_DIR,) - - -class KLLVMTarget(Target): - def build(self, output_dir: Path, deps: dict[str, Path], args: dict[str, Any], verbose: bool) -> None: - compile_kllvm(output_dir, verbose=verbose) - - def context(self) -> dict[str, str]: - return { - 'k-version': k_version().text, - 'python-path': sys.executable, - 'python-version': sys.version, - } - - -class KLLVMRuntimeTarget(Target): - def build(self, output_dir: Path, deps: dict[str, Path], args: dict[str, Any], verbose: bool) -> None: - compile_runtime( - definition_dir=deps['evm-semantics.llvm'], - target_dir=output_dir, - ccopts=lib_ccopts(deps['evm-semantics.plugin']), - verbose=verbose, - ) - - def deps(self) -> tuple[str, ...]: - return ('evm-semantics.plugin', 'evm-semantics.llvm') - - def source(self) -> tuple[Path, ...]: - return (config.EVM_SEMANTICS_DIR,) + tuple(config.MODULE_DIR.rglob('*.py')) - - def context(self) -> dict[str, str]: - return { - 'k-version': k_version().text, - 'python-path': sys.executable, - 'python-version': sys.version, - } - - -__TARGETS__: Final = { - 'llvm': KEVMTarget( - { - 'target': KompileTarget.LLVM, - 'main_file': config.EVM_SEMANTICS_DIR / 'driver.md', - 'main_module': 'ETHEREUM-SIMULATION', - 'syntax_module': 'ETHEREUM-SIMULATION', - 'optimization': 3, - }, - ), - 'haskell': KEVMTarget( - { - 'target': KompileTarget.HASKELL, - 'main_file': config.EVM_SEMANTICS_DIR / 'edsl.md', - 'main_module': 'EDSL', - 'syntax_module': 'EDSL', - }, - ), - 'haskell-standalone': KEVMTarget( - { - 'target': KompileTarget.HASKELL, - 'main_file': config.EVM_SEMANTICS_DIR / 'driver.md', - 'main_module': 'ETHEREUM-SIMULATION', - 'syntax_module': 'ETHEREUM-SIMULATION', - }, - ), - 'plugin': PluginTarget(), - 'kllvm': KLLVMTarget(), - 'kllvm-runtime': KLLVMRuntimeTarget(), -} diff --git a/kevm-pyk/src/kevm_pyk/kevm.py b/kevm-pyk/src/kevm_pyk/kevm.py deleted file mode 100644 index 2025d6417e..0000000000 --- a/kevm-pyk/src/kevm_pyk/kevm.py +++ /dev/null @@ -1,638 +0,0 @@ -from __future__ import annotations - -import logging -from typing import TYPE_CHECKING - -from pyk.cterm import CTerm -from pyk.kast import KInner -from pyk.kast.inner import ( - KApply, - KLabel, - KSequence, - KSort, - KToken, - KVariable, - bottom_up, - build_assoc, - build_cons, - top_down, -) -from pyk.kast.manip import abstract_term_safely, flatten_label -from pyk.kast.pretty import paren -from pyk.kcfg.semantics import KCFGSemantics -from pyk.kcfg.show import NodePrinter -from pyk.ktool.kprove import KProve -from pyk.ktool.krun import KRun -from pyk.prelude.bytes import BYTES, pretty_bytes -from pyk.prelude.kbool import notBool -from pyk.prelude.kint import INT, eqInt, intToken, ltInt -from pyk.prelude.ml import mlEqualsFalse, mlEqualsTrue -from pyk.prelude.string import stringToken -from pyk.proof.reachability import APRProof -from pyk.proof.show import APRProofNodePrinter - -if TYPE_CHECKING: - from collections.abc import Iterable - from pathlib import Path - from typing import Final - - from pyk.kast.inner import KAst - from pyk.kast.outer import KFlatModule - from pyk.kcfg import KCFG - from pyk.ktool.kprint import SymbolTable - from pyk.utils import BugReport - -_LOGGER: Final = logging.getLogger(__name__) - - -# KEVM class - - -class KEVMSemantics(KCFGSemantics): - auto_abstract_gas: bool - - def __init__(self, auto_abstract_gas: bool = False) -> None: - self.auto_abstract_gas = auto_abstract_gas - - @staticmethod - def is_functional(term: KInner) -> bool: - return type(term) == KApply and term.label.name == 'runLemma' - - def is_terminal(self, cterm: CTerm) -> bool: - k_cell = cterm.cell('K_CELL') - # #halt - if k_cell == KEVM.halt(): - return True - elif type(k_cell) is KSequence: - # . - if k_cell.arity == 0: - return True - # #halt - elif k_cell.arity == 1 and k_cell[0] == KEVM.halt(): - return True - # #halt ~> X:K - elif k_cell.arity == 2 and k_cell[0] == KEVM.halt() and type(k_cell[1]) is KVariable: - return True - - program_cell = cterm.cell('PROGRAM_CELL') - # Fully symbolic program is terminal unless we are executing a functional claim - if type(program_cell) is KVariable: - # runLemma ( ... ) - if KEVMSemantics.is_functional(k_cell): - return False - # runLemma ( ... ) [ ~> X:K ] - elif ( - type(k_cell) is KSequence - and (k_cell.arity == 1 or (k_cell.arity == 2 and type(k_cell[1]) is KVariable)) - and KEVMSemantics.is_functional(k_cell[0]) - ): - return False - else: - return True - - return False - - def same_loop(self, cterm1: CTerm, cterm2: CTerm) -> bool: - # In the same program, at the same calldepth, at the same program counter - for cell in ['PC_CELL', 'CALLDEPTH_CELL', 'PROGRAM_CELL']: - if cterm1.cell(cell) != cterm2.cell(cell): - return False - # duplicate from KEVM.extract_branches - jumpi_pattern = KEVM.jumpi_applied(KVariable('###PCOUNT'), KVariable('###COND')) - pc_next_pattern = KEVM.pc_applied(KEVM.jumpi()) - branch_pattern = KSequence([jumpi_pattern, pc_next_pattern, KEVM.sharp_execute(), KVariable('###CONTINUATION')]) - subst1 = branch_pattern.match(cterm1.cell('K_CELL')) - subst2 = branch_pattern.match(cterm2.cell('K_CELL')) - # Jumping to the same program counter - if subst1 is not None and subst2 is not None and subst1['###PCOUNT'] == subst2['###PCOUNT']: - # Same wordstack structure - if KEVM.wordstack_len(cterm1.cell('WORDSTACK_CELL')) == KEVM.wordstack_len(cterm2.cell('WORDSTACK_CELL')): - return True - return False - - def extract_branches(self, cterm: CTerm) -> list[KInner]: - k_cell = cterm.cell('K_CELL') - jumpi_pattern = KEVM.jumpi_applied(KVariable('###PCOUNT'), KVariable('###COND')) - pc_next_pattern = KEVM.pc_applied(KEVM.jumpi()) - branch_pattern = KSequence([jumpi_pattern, pc_next_pattern, KEVM.sharp_execute(), KVariable('###CONTINUATION')]) - if subst := branch_pattern.match(k_cell): - cond = subst['###COND'] - if cond_subst := KEVM.bool_2_word(KVariable('###BOOL_2_WORD')).match(cond): - cond = cond_subst['###BOOL_2_WORD'] - else: - cond = eqInt(cond, intToken(0)) - return [mlEqualsTrue(cond), mlEqualsTrue(notBool(cond))] - return [] - - def abstract_node(self, cterm: CTerm) -> CTerm: - if not self.auto_abstract_gas: - return cterm - - def _replace(term: KInner) -> KInner: - if type(term) is KApply and term.label.name == '': - gas_term = term.args[0] - if type(gas_term) is KApply and gas_term.label.name == 'infGas': - if type(gas_term.args[0]) is KVariable: - return term - return KApply( - '', KApply('infGas', abstract_term_safely(term, base_name='VGAS', sort=KSort('Int'))) - ) - return term - elif type(term) is KApply and term.label.name == '': - if type(term.args[0]) is KVariable: - return term - return KApply('', abstract_term_safely(term, base_name='VREFUND', sort=KSort('Int'))) - else: - return term - - return CTerm(config=bottom_up(_replace, cterm.config), constraints=cterm.constraints) - - @staticmethod - def cut_point_rules( - break_on_jumpi: bool, break_on_calls: bool, break_on_storage: bool, break_on_basic_blocks: bool - ) -> list[str]: - cut_point_rules = [] - if break_on_jumpi: - cut_point_rules.extend(['EVM.jumpi.true', 'EVM.jumpi.false']) - if break_on_basic_blocks: - cut_point_rules.append('EVM.end-basic-block') - if break_on_calls or break_on_basic_blocks: - cut_point_rules.extend( - [ - 'EVM.call', - 'EVM.callcode', - 'EVM.delegatecall', - 'EVM.staticcall', - 'EVM.create', - 'EVM.create2', - 'EVM.end', - 'EVM.return.exception', - 'EVM.return.revert', - 'EVM.return.success', - 'EVM.precompile.true', - 'EVM.precompile.false', - ] - ) - if break_on_storage: - cut_point_rules.extend(['EVM.sstore', 'EVM.sload']) - return cut_point_rules - - @staticmethod - def terminal_rules(break_every_step: bool) -> list[str]: - terminal_rules = ['EVM.halt'] - if break_every_step: - terminal_rules.append('EVM.step') - return terminal_rules - - -class KEVM(KProve, KRun): - _use_hex: bool - - def __init__( - self, - definition_dir: Path, - main_file: Path | None = None, - use_directory: Path | None = None, - kprove_command: str = 'kprove', - krun_command: str = 'krun', - extra_unparsing_modules: Iterable[KFlatModule] = (), - bug_report: BugReport | None = None, - use_hex: bool = False, - ) -> None: - # I'm going for the simplest version here, we can change later if there is an advantage. - # https://stackoverflow.com/questions/9575409/calling-parent-class-init-with-multiple-inheritance-whats-the-right-way - # Note that they say using `super` supports dependency injection, but I have never liked dependency injection anyway. - KProve.__init__( - self, - definition_dir, - use_directory=use_directory, - main_file=main_file, - command=kprove_command, - extra_unparsing_modules=extra_unparsing_modules, - bug_report=bug_report, - patch_symbol_table=KEVM._kevm_patch_symbol_table, - ) - KRun.__init__( - self, - definition_dir, - use_directory=use_directory, - command=krun_command, - extra_unparsing_modules=extra_unparsing_modules, - bug_report=bug_report, - patch_symbol_table=KEVM._kevm_patch_symbol_table, - ) - self._use_hex = use_hex - - @classmethod - def _kevm_patch_symbol_table(cls, symbol_table: SymbolTable) -> None: - symbol_table['#Bottom'] = lambda: '#Bottom' - symbol_table['_Map_'] = paren(lambda m1, m2: m1 + '\n' + m2) - symbol_table['_AccountCellMap_'] = paren(lambda a1, a2: a1 + '\n' + a2) - symbol_table['.AccountCellMap'] = lambda: '.Bag' - symbol_table['AccountCellMapItem'] = lambda k, v: v - symbol_table['_Word__EVM-TYPES_Int_Int_Int'] = paren(lambda a1, a2: '(' + a1 + ') >Word (' + a2 + ')') - symbol_table['_<=Word__EVM-TYPES_Int_Int_Int'] = paren(lambda a1, a2: '(' + a1 + ') <=Word (' + a2 + ')') - symbol_table['_>=Word__EVM-TYPES_Int_Int_Int'] = paren(lambda a1, a2: '(' + a1 + ') >=Word (' + a2 + ')') - symbol_table['_==Word__EVM-TYPES_Int_Int_Int'] = paren(lambda a1, a2: '(' + a1 + ') ==Word (' + a2 + ')') - symbol_table['_s_', - '#And', - '_andBool_', - '#Implies', - '_impliesBool_', - '_&Int_', - '_*Int_', - '_+Int_', - '_-Int_', - '_/Int_', - '_|Int_', - '_modInt_', - 'notBool_', - '#Or', - '_orBool_', - '_Set_', - 'typedArgs', - '_up/Int__EVM-TYPES_Int_Int_Int', - '_:__EVM-TYPES_WordStack_Int_WordStack', - ] - for symb in paren_symbols: - if symb in symbol_table: - symbol_table[symb] = paren(symbol_table[symb]) # noqa: B909 - - class Sorts: - KEVM_CELL: Final = KSort('KevmCell') - - def short_info(self, cterm: CTerm) -> list[str]: - k_cell = cterm.try_cell('K_CELL') - if k_cell is not None: - pretty_cell = self.pretty_print(k_cell).replace('\n', ' ') - if len(pretty_cell) > 80: - pretty_cell = pretty_cell[0:80] + ' ...' - k_str = f'k: {pretty_cell}' - ret_strs = [k_str] - for cell, name in [('PC_CELL', 'pc'), ('CALLDEPTH_CELL', 'callDepth'), ('STATUSCODE_CELL', 'statusCode')]: - if cell in cterm.cells: - ret_strs.append(f'{name}: {self.pretty_print(cterm.cell(cell))}') - else: - ret_strs = ['(empty configuration)'] - return ret_strs - - @staticmethod - def add_invariant(cterm: CTerm) -> CTerm: - def _add_account_invariant(account: KApply) -> list[KApply]: - _account_constraints = [] - acct_id, balance, nonce = account.args[0], account.args[1], account.args[5] - - if type(acct_id) is KApply and type(acct_id.args[0]) is KVariable: - _account_constraints.append(mlEqualsTrue(KEVM.range_address(acct_id.args[0]))) - _account_constraints.append( - mlEqualsFalse(KEVM.is_precompiled_account(acct_id.args[0], cterm.cell('SCHEDULE_CELL'))) - ) - if type(balance) is KApply and type(balance.args[0]) is KVariable: - _account_constraints.append(mlEqualsTrue(KEVM.range_uint(256, balance.args[0]))) - if type(nonce) is KApply and type(nonce.args[0]) is KVariable: - _account_constraints.append(mlEqualsTrue(KEVM.range_nonce(nonce.args[0]))) - return _account_constraints - - constraints = [] - word_stack = cterm.cell('WORDSTACK_CELL') - if type(word_stack) is not KVariable: - word_stack_items = flatten_label('_:__EVM-TYPES_WordStack_Int_WordStack', word_stack) - for i in word_stack_items[:-1]: - constraints.append(mlEqualsTrue(KEVM.range_uint(256, i))) - - accounts_cell = cterm.cell('ACCOUNTS_CELL') - if type(accounts_cell) is not KApply('.AccountCellMap'): - accounts = flatten_label('_AccountCellMap_', cterm.cell('ACCOUNTS_CELL')) - for wrapped_account in accounts: - if not (type(wrapped_account) is KApply and wrapped_account.label.name == 'AccountCellMapItem'): - continue - - account = wrapped_account.args[1] - if type(account) is KApply: - constraints.extend(_add_account_invariant(account)) - - constraints.append(mlEqualsTrue(KEVM.range_address(cterm.cell('ID_CELL')))) - constraints.append(mlEqualsTrue(KEVM.range_address(cterm.cell('CALLER_CELL')))) - constraints.append( - mlEqualsFalse(KEVM.is_precompiled_account(cterm.cell('CALLER_CELL'), cterm.cell('SCHEDULE_CELL'))) - ) - constraints.append(mlEqualsTrue(ltInt(KEVM.size_bytes(cterm.cell('CALLDATA_CELL')), KEVM.pow128()))) - constraints.append(mlEqualsTrue(KEVM.range_uint(256, cterm.cell('CALLVALUE_CELL')))) - - constraints.append(mlEqualsTrue(KEVM.range_address(cterm.cell('ORIGIN_CELL')))) - constraints.append( - mlEqualsFalse(KEVM.is_precompiled_account(cterm.cell('ORIGIN_CELL'), cterm.cell('SCHEDULE_CELL'))) - ) - - constraints.append(mlEqualsTrue(KEVM.range_blocknum(cterm.cell('NUMBER_CELL')))) - constraints.append(mlEqualsTrue(KEVM.range_uint(256, cterm.cell('TIMESTAMP_CELL')))) - - for c in constraints: - cterm = cterm.add_constraint(c) - return cterm - - @property - def use_hex_encoding(self) -> bool: - return self._use_hex - - def pretty_print( - self, kast: KAst, *, in_module: str | None = None, unalias: bool = True, sort_collections: bool = False - ) -> str: - if isinstance(kast, KInner) and self.use_hex_encoding: - kast = KEVM.kinner_to_hex(kast) - return super().pretty_print(kast, unalias=unalias, sort_collections=sort_collections) - - @staticmethod - def kinner_to_hex(kast: KInner) -> KInner: - """ - Converts values within a KInner object of sorts `INT` or `BYTES` to hexadecimal representation. - """ - - def to_hex(kast: KInner) -> KInner: - if type(kast) is KToken and kast.sort == INT: - return KToken(hex(int(kast.token)), INT) - if type(kast) is KToken and kast.sort == BYTES: - return KToken('0x' + pretty_bytes(kast).hex(), BYTES) - return kast - - if isinstance(kast, KToken): - return to_hex(kast) - return top_down(to_hex, kast) - - @staticmethod - def halt() -> KApply: - return KApply('#halt_EVM_KItem') - - @staticmethod - def sharp_execute() -> KApply: - return KApply('#execute_EVM_KItem') - - @staticmethod - def jumpi() -> KApply: - return KApply('JUMPI_EVM_BinStackOp') - - @staticmethod - def jump() -> KApply: - return KApply('JUMP_EVM_UnStackOp') - - @staticmethod - def jumpi_applied(pc: KInner, cond: KInner) -> KApply: - return KApply('____EVM_InternalOp_BinStackOp_Int_Int', [KEVM.jumpi(), pc, cond]) - - @staticmethod - def jump_applied(pc: KInner) -> KApply: - return KApply('___EVM_InternalOp_UnStackOp_Int', [KEVM.jump(), pc]) - - @staticmethod - def pc_applied(op: KInner) -> KApply: - return KApply('#pc[_]_EVM_InternalOp_OpCode', [op]) - - @staticmethod - def pow128() -> KApply: - return KApply('pow128_WORD_Int', []) - - @staticmethod - def pow256() -> KApply: - return KApply('pow256_WORD_Int', []) - - @staticmethod - def range_uint(width: int, i: KInner) -> KApply: - return KApply('#rangeUInt(_,_)_WORD_Bool_Int_Int', [intToken(width), i]) - - @staticmethod - def range_sint(width: int, i: KInner) -> KApply: - return KApply('#rangeSInt(_,_)_WORD_Bool_Int_Int', [intToken(width), i]) - - @staticmethod - def range_address(i: KInner) -> KApply: - return KApply('#rangeAddress(_)_WORD_Bool_Int', [i]) - - @staticmethod - def range_bool(i: KInner) -> KApply: - return KApply('#rangeBool(_)_WORD_Bool_Int', [i]) - - @staticmethod - def range_bytes(width: KInner, ba: KInner) -> KApply: - return KApply('#rangeBytes(_,_)_WORD_Bool_Int_Int', [width, ba]) - - @staticmethod - def range_nonce(i: KInner) -> KApply: - return KApply('#rangeNonce(_)_WORD_Bool_Int', [i]) - - @staticmethod - def range_blocknum(ba: KInner) -> KApply: - return KApply('#rangeBlockNum(_)_WORD_Bool_Int', [ba]) - - @staticmethod - def bool_2_word(cond: KInner) -> KApply: - return KApply('bool2Word(_)_EVM-TYPES_Int_Bool', [cond]) - - @staticmethod - def size_bytes(ba: KInner) -> KApply: - return KApply('lengthBytes(_)_BYTES-HOOKED_Int_Bytes', [ba]) - - @staticmethod - def inf_gas(g: KInner) -> KApply: - return KApply('infGas', [g]) - - @staticmethod - def compute_valid_jumpdests(p: KInner) -> KApply: - return KApply('#computeValidJumpDests(_)_EVM_Set_Bytes', [p]) - - @staticmethod - def bin_runtime(c: KInner) -> KApply: - return KApply('binRuntime', [c]) - - @staticmethod - def init_bytecode(c: KInner) -> KApply: - return KApply('initBytecode', [c]) - - @staticmethod - def is_precompiled_account(i: KInner, s: KInner) -> KApply: - return KApply('#isPrecompiledAccount(_,_)_EVM_Bool_Int_Schedule', [i, s]) - - @staticmethod - def hashed_location(compiler: str, base: KInner, offset: KInner, member_offset: int = 0) -> KApply: - location = KApply( - '#hashedLocation(_,_,_)_HASHED-LOCATIONS_Int_String_Int_IntList', [stringToken(compiler), base, offset] - ) - if member_offset > 0: - location = KApply('_+Int_', [location, intToken(member_offset)]) - return location - - @staticmethod - def loc(accessor: KInner) -> KApply: - return KApply('contract_access_loc', [accessor]) - - @staticmethod - def lookup(map: KInner, key: KInner) -> KApply: - return KApply('#lookup(_,_)_EVM-TYPES_Int_Map_Int', [map, key]) - - @staticmethod - def abi_calldata(name: str, args: list[KInner]) -> KApply: - return KApply('#abiCallData(_,_)_EVM-ABI_Bytes_String_TypedArgs', [stringToken(name), KEVM.typed_args(args)]) - - @staticmethod - def abi_selector(name: str) -> KApply: - return KApply('abi_selector', [stringToken(name)]) - - @staticmethod - def abi_address(a: KInner) -> KApply: - return KApply('#address(_)_EVM-ABI_TypedArg_Int', [a]) - - @staticmethod - def abi_bool(b: KInner) -> KApply: - return KApply('#bool(_)_EVM-ABI_TypedArg_Int', [b]) - - @staticmethod - def abi_type(type: str, value: KInner) -> KApply: - return KApply('abi_type_' + type, [value]) - - @staticmethod - def abi_tuple(values: list[KInner]) -> KApply: - return KApply('abi_type_tuple', [KEVM.typed_args(values)]) - - @staticmethod - def abi_array(elem_type: KInner, length: KInner, elems: list[KInner]) -> KApply: - return KApply('abi_type_array', [elem_type, length, KEVM.typed_args(elems)]) - - @staticmethod - def empty_typedargs() -> KApply: - return KApply('.List{"typedArgs"}') - - @staticmethod - def bytes_append(b1: KInner, b2: KInner) -> KApply: - return KApply('_+Bytes__BYTES-HOOKED_Bytes_Bytes_Bytes', [b1, b2]) - - @staticmethod - def account_cell( - id: KInner, balance: KInner, code: KInner, storage: KInner, orig_storage: KInner, nonce: KInner - ) -> KApply: - return KApply( - '', - [ - KApply('', [id]), - KApply('', [balance]), - KApply('', [code]), - KApply('', [storage]), - KApply('', [orig_storage]), - KApply('', [nonce]), - ], - ) - - @staticmethod - def wordstack_empty() -> KApply: - return KApply('.WordStack_EVM-TYPES_WordStack') - - @staticmethod - def wordstack_len(wordstack: KInner) -> int: - return len(flatten_label('_:__EVM-TYPES_WordStack_Int_WordStack', wordstack)) - - @staticmethod - def parse_bytestack(s: KInner) -> KApply: - return KApply('#parseByteStack(_)_SERIALIZATION_Bytes_String', [s]) - - @staticmethod - def bytes_empty() -> KApply: - return KApply('.Bytes_BYTES-HOOKED_Bytes') - - @staticmethod - def buf(width: int, v: KInner) -> KApply: - return KApply('#buf(_,_)_BUF-SYNTAX_Bytes_Int_Int', [intToken(width), v]) - - @staticmethod - def intlist(ints: list[KInner]) -> KApply: - res = KApply('.List{"___HASHED-LOCATIONS_IntList_Int_IntList"}_IntList') - for i in reversed(ints): - res = KApply('___HASHED-LOCATIONS_IntList_Int_IntList', [i, res]) - return res - - @staticmethod - def typed_args(args: list[KInner]) -> KInner: - res = KEVM.empty_typedargs() - return build_cons(res, 'typedArgs', args) - - @staticmethod - def accounts(accts: list[KInner]) -> KInner: - wrapped_accounts: list[KInner] = [] - for acct in accts: - if type(acct) is KApply and acct.label.name == '': - acct_id = acct.args[0] - wrapped_accounts.append(KApply('AccountCellMapItem', [acct_id, acct])) - else: - wrapped_accounts.append(acct) - return build_assoc(KApply('.AccountCellMap'), KLabel('_AccountCellMap_'), wrapped_accounts) - - def prove_legacy( - self, - spec_file: Path, - includes: Iterable[Path] = (), - bug_report: bool = False, - spec_module: str | None = None, - claim_labels: Iterable[str] | None = None, - exclude_claim_labels: Iterable[str] | None = None, - debug: bool = False, - debugger: bool = False, - max_depth: int | None = None, - max_counterexamples: int | None = None, - branching_allowed: int | None = None, - haskell_backend_args: Iterable[str] = (), - ) -> list[CTerm]: - md_selector = 'k' - args: list[str] = [] - haskell_args: list[str] = [] - if claim_labels: - args += ['--claims', ','.join(claim_labels)] - if exclude_claim_labels: - args += ['--exclude', ','.join(exclude_claim_labels)] - if debug: - args.append('--debug') - if debugger: - args.append('--debugger') - if branching_allowed: - args += ['--branching-allowed', f'{branching_allowed}'] - if max_counterexamples: - haskell_args += ['--max-counterexamples', f'{max_counterexamples}'] - if bug_report: - haskell_args += ['--bug-report', f'kevm-bug-{spec_file.name.removesuffix("-spec.k")}'] - if haskell_backend_args: - haskell_args += list(haskell_backend_args) - - final_state = self.prove( - spec_file=spec_file, - spec_module_name=spec_module, - args=args, - include_dirs=includes, - md_selector=md_selector, - haskell_args=haskell_args, - depth=max_depth, - ) - return final_state - - -class KEVMNodePrinter(NodePrinter): - kevm: KEVM - - def __init__(self, kevm: KEVM): - NodePrinter.__init__(self, kevm) - self.kevm = kevm - - def print_node(self, kcfg: KCFG, node: KCFG.Node) -> list[str]: - ret_strs = super().print_node(kcfg, node) - ret_strs += self.kevm.short_info(node.cterm) - return ret_strs - - -class KEVMAPRNodePrinter(KEVMNodePrinter, APRProofNodePrinter): - def __init__(self, kevm: KEVM, proof: APRProof): - KEVMNodePrinter.__init__(self, kevm) - APRProofNodePrinter.__init__(self, proof, kevm) - - -def kevm_node_printer(kevm: KEVM, proof: APRProof) -> NodePrinter: - if type(proof) is APRProof: - return KEVMAPRNodePrinter(kevm, proof) - raise ValueError(f'Cannot build NodePrinter for proof type: {type(proof)}') diff --git a/kevm-pyk/src/kevm_pyk/kompile.py b/kevm-pyk/src/kevm_pyk/kompile.py deleted file mode 100644 index 55968ab06a..0000000000 --- a/kevm-pyk/src/kevm_pyk/kompile.py +++ /dev/null @@ -1,274 +0,0 @@ -from __future__ import annotations - -import concurrent.futures -import logging -import sys -from enum import Enum -from pathlib import Path -from typing import TYPE_CHECKING - -from pyk.kdist import kdist -from pyk.ktool import TypeInferenceMode -from pyk.ktool.kompile import HaskellKompile, KompileArgs, LLVMKompile, LLVMKompileType, MaudeKompile -from pyk.utils import run_process - -from . import config - -if TYPE_CHECKING: - from collections.abc import Iterable - from typing import Final - - from pyk.ktool.kompile import Kompile - - -_LOGGER: Final = logging.getLogger(__name__) - - -HOOK_NAMESPACES: Final = ('JSON', 'KRYPTO') - - -class KompileTarget(Enum): - LLVM = 'llvm' - HASKELL = 'haskell' - MAUDE = 'maude' - - @property - def md_selector(self) -> str: - match self: - case self.LLVM: - return 'k & ! symbolic' - case self.HASKELL | self.MAUDE: - return 'k & ! concrete' - case _: - raise AssertionError() - - -def kevm_kompile( - target: KompileTarget, - output_dir: Path, - main_file: Path, - *, - main_module: str | None, - syntax_module: str | None, - includes: Iterable[str] = (), - emit_json: bool = True, - read_only: bool = False, - ccopts: Iterable[str] = (), - optimization: int = 0, - llvm_kompile_type: LLVMKompileType | None = None, - enable_llvm_debug: bool = False, - llvm_library: Path | None = None, - plugin_dir: Path | None = None, - debug_build: bool = False, - debug: bool = False, - verbose: bool = False, - type_inference_mode: str | TypeInferenceMode | None = None, -) -> Path: - if plugin_dir is None: - plugin_dir = kdist.get('evm-semantics.plugin') - - ccopts = list(ccopts) + lib_ccopts(plugin_dir, debug_build=debug_build) + _warning_ccopts() - return run_kompile( - target, - output_dir, - main_file, - main_module=main_module, - syntax_module=syntax_module, - includes=includes, - emit_json=emit_json, - read_only=read_only, - ccopts=ccopts, - optimization=optimization, - llvm_kompile_type=llvm_kompile_type, - enable_llvm_debug=enable_llvm_debug, - llvm_library=llvm_library, - debug_build=debug_build, - debug=debug, - verbose=verbose, - type_inference_mode=type_inference_mode, - ) - - -def run_kompile( - target: KompileTarget, - output_dir: Path, - main_file: Path, - *, - main_module: str | None, - syntax_module: str | None, - includes: Iterable[str] = (), - emit_json: bool = True, - read_only: bool = False, - ccopts: Iterable[str] = (), - optimization: int = 0, - llvm_kompile_type: LLVMKompileType | None = None, - enable_llvm_debug: bool = False, - llvm_library: Path | None = None, - debug_build: bool = False, - debug: bool = False, - verbose: bool = False, - type_inference_mode: str | TypeInferenceMode | None = None, -) -> Path: - if llvm_library is None: - llvm_library = output_dir / 'llvm-library' - - if type_inference_mode is None: - type_inference_mode = TypeInferenceMode.SIMPLESUB - - include_dirs = [Path(include) for include in includes] - include_dirs += config.INCLUDE_DIRS - - base_args = KompileArgs( - main_file=main_file, - main_module=main_module, - syntax_module=syntax_module, - include_dirs=include_dirs, - md_selector=target.md_selector, - hook_namespaces=HOOK_NAMESPACES, - emit_json=emit_json, - read_only=read_only, - ) - - kompile: Kompile - kernel = sys.platform - haskell_binary = kernel != 'darwin' - - try: - match target: - case KompileTarget.LLVM: - kompile = LLVMKompile( - base_args=base_args, - ccopts=ccopts, - opt_level=optimization, - llvm_kompile_type=llvm_kompile_type, - enable_llvm_debug=enable_llvm_debug, - ) - return kompile( - output_dir=output_dir, debug=debug, verbose=verbose, type_inference_mode=type_inference_mode - ) - - case KompileTarget.MAUDE: - kompile_maude = MaudeKompile( - base_args=base_args, - ) - kompile_haskell = HaskellKompile(base_args=base_args) - - maude_dir = output_dir / 'kompiled-maude' - - def _kompile_maude() -> None: - kompile_maude( - output_dir=maude_dir, debug=debug, verbose=verbose, type_inference_mode=type_inference_mode - ) - - def _kompile_haskell() -> None: - kompile_haskell( - output_dir=output_dir, debug=debug, verbose=verbose, type_inference_mode=type_inference_mode - ) - - with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor: - futures = [ - executor.submit(_kompile_maude), - executor.submit(_kompile_haskell), - ] - [future.result() for future in futures] - - return output_dir - - case KompileTarget.HASKELL: - base_args_llvm = KompileArgs( - main_file=main_file, - main_module=main_module, - syntax_module=syntax_module, - include_dirs=include_dirs, - md_selector=KompileTarget.LLVM.md_selector, - hook_namespaces=HOOK_NAMESPACES, - emit_json=emit_json, - read_only=read_only, - ) - kompile_llvm = LLVMKompile( - base_args=base_args_llvm, ccopts=ccopts, opt_level=optimization, llvm_kompile_type=LLVMKompileType.C - ) - kompile_haskell = HaskellKompile(base_args=base_args, haskell_binary=haskell_binary) - - def _kompile_llvm() -> None: - kompile_llvm( - output_dir=llvm_library, debug=debug, verbose=verbose, type_inference_mode=type_inference_mode - ) - - def _kompile_haskell() -> None: - kompile_haskell( - output_dir=output_dir, debug=debug, verbose=verbose, type_inference_mode=type_inference_mode - ) - - with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor: - futures = [ - executor.submit(_kompile_llvm), - executor.submit(_kompile_haskell), - ] - [future.result() for future in futures] - - return output_dir - - case _: - raise ValueError(f'Unsupported target: {target.value}') - - except RuntimeError as err: - sys.stderr.write(f'\nkompile stdout:\n{err.args[1]}\n') - sys.stderr.write(f'\nkompile stderr:\n{err.args[2]}\n') - sys.stderr.write(f'\nkompile returncode:\n{err.args[3]}\n') - sys.stderr.flush() - raise - - -def lib_ccopts(plugin_dir: Path, debug_build: bool = False) -> list[str]: - kernel = sys.platform - - ccopts = ['-std=c++17'] - - if debug_build: - ccopts += ['-g'] - - ccopts += ['-lssl', '-lcrypto', '-lsecp256k1'] - - libff_dir = plugin_dir / 'libff' - ccopts += [f'{libff_dir}/lib/libff.a', f'-I{libff_dir}/include'] - - libcryptopp_dir = plugin_dir / 'libcryptopp' - ccopts += [f'{libcryptopp_dir}/lib/libcryptopp.a', f'-I{libcryptopp_dir}/include'] - - blake2_dir = plugin_dir / 'blake2' - ccopts += [f'{blake2_dir}/lib/blake2.a'] - - plugin_include = plugin_dir / 'plugin-c' - ccopts += [ - f'{plugin_include}/plugin_util.cpp', - f'{plugin_include}/crypto.cpp', - ] - - if kernel == 'darwin': - if not config.NIX_LIBS: - brew_root = run_process(('brew', '--prefix'), pipe_stderr=True, logger=_LOGGER).stdout.strip() - ccopts += [ - f'-I{brew_root}/include', - f'-L{brew_root}/lib', - ] - - openssl_root = run_process(('brew', '--prefix', 'openssl'), pipe_stderr=True, logger=_LOGGER).stdout.strip() - ccopts += [ - f'-I{openssl_root}/include', - f'-L{openssl_root}/lib', - ] - else: - ccopts += config.NIX_LIBS.split(' ') - elif kernel == 'linux': - ccopts += ['-lprocps'] - if config.NIX_LIBS: - ccopts += config.NIX_LIBS.split(' ') - else: - raise AssertionError() - - return ccopts - - -def _warning_ccopts() -> list[str]: - return ['-Wno-deprecated-declarations'] diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/abi.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/abi.md deleted file mode 100644 index 9db573e05b..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/abi.md +++ /dev/null @@ -1,650 +0,0 @@ -ABI Encoding -============ - -```k -requires "evm.md" -requires "buf.md" - -module EVM-ABI - imports EVM - imports BUF -``` - -### ABI Call Data - -When a function is called in the EVM, its arguments are encoded in a single byte-array and put in the so-called 'call data' section. -The encoding is defined in the [Ethereum contract application binary interface (ABI) specification](https://solidity.readthedocs.io/en/develop/abi-spec.html). -The eDSL provides `#abiCallData`, a notation to specify the ABI call data in a way similar to a high-level function call notation, defined below. -It specifies the function name and the (symbolic) arguments along with their types. -For example, the following notation represents a data that encodes a call to the `transfer` function with two arguments: `TO`, the receiver account address of type `address` (an 160-bit unsigned integer), and `VALUE`, the value to transfer of type `unit256` (a 256-bit unsigned integer). - -``` - #abiCallData("transfer", #address(TO), #uint256(VALUE)) -``` - -which denotes (indeed, is translated to) the following byte array: - -``` - F1 : F2 : F3 : F4 : T1 : ... : T32 : V1 : ... : V32 -``` - -where `F1 : F2 : F3 : F4` is the (two's complement) byte-array representation of `2835717307`, the first four bytes of the hash value of the `transfer` function signature, `keccak256("transfer(address,unit256)")`, and `T1 : ... : T32` and `V1 : ... : V32` are the byte-array representations of `TO` and `VALUE` respectively. - -```k - syntax TypedArg ::= #address ( Int ) [klabel(abi_type_address), symbol] - | #uint256 ( Int ) [klabel(abi_type_uint256), symbol] - | #uint248 ( Int ) [klabel(abi_type_uint248), symbol] - | #uint240 ( Int ) [klabel(abi_type_uint240), symbol] - | #uint232 ( Int ) [klabel(abi_type_uint232), symbol] - | #uint224 ( Int ) [klabel(abi_type_uint224), symbol] - | #uint216 ( Int ) [klabel(abi_type_uint216), symbol] - | #uint208 ( Int ) [klabel(abi_type_uint208), symbol] - | #uint200 ( Int ) [klabel(abi_type_uint200), symbol] - | #uint192 ( Int ) [klabel(abi_type_uint192), symbol] - | #uint184 ( Int ) [klabel(abi_type_uint184), symbol] - | #uint176 ( Int ) [klabel(abi_type_uint176), symbol] - | #uint168 ( Int ) [klabel(abi_type_uint168), symbol] - | #uint160 ( Int ) [klabel(abi_type_uint160), symbol] - | #uint152 ( Int ) [klabel(abi_type_uint152), symbol] - | #uint144 ( Int ) [klabel(abi_type_uint144), symbol] - | #uint136 ( Int ) [klabel(abi_type_uint136), symbol] - | #uint128 ( Int ) [klabel(abi_type_uint128), symbol] - | #uint120 ( Int ) [klabel(abi_type_uint120), symbol] - | #uint112 ( Int ) [klabel(abi_type_uint112), symbol] - | #uint104 ( Int ) [klabel(abi_type_uint104), symbol] - | #uint96 ( Int ) [klabel(abi_type_uint96), symbol] - | #uint88 ( Int ) [klabel(abi_type_uint88), symbol] - | #uint80 ( Int ) [klabel(abi_type_uint80), symbol] - | #uint72 ( Int ) [klabel(abi_type_uint72), symbol] - | #uint64 ( Int ) [klabel(abi_type_uint64), symbol] - | #uint56 ( Int ) [klabel(abi_type_uint56), symbol] - | #uint48 ( Int ) [klabel(abi_type_uint48), symbol] - | #uint40 ( Int ) [klabel(abi_type_uint40), symbol] - | #uint32 ( Int ) [klabel(abi_type_uint32), symbol] - | #uint24 ( Int ) [klabel(abi_type_uint24), symbol] - | #uint16 ( Int ) [klabel(abi_type_uint16), symbol] - | #uint8 ( Int ) [klabel(abi_type_uint8), symbol] - | #int256 ( Int ) [klabel(abi_type_int256), symbol] - | #int248 ( Int ) [klabel(abi_type_int248), symbol] - | #int240 ( Int ) [klabel(abi_type_int240), symbol] - | #int232 ( Int ) [klabel(abi_type_int232), symbol] - | #int224 ( Int ) [klabel(abi_type_int224), symbol] - | #int216 ( Int ) [klabel(abi_type_int216), symbol] - | #int208 ( Int ) [klabel(abi_type_int208), symbol] - | #int200 ( Int ) [klabel(abi_type_int200), symbol] - | #int192 ( Int ) [klabel(abi_type_int192), symbol] - | #int184 ( Int ) [klabel(abi_type_int184), symbol] - | #int176 ( Int ) [klabel(abi_type_int176), symbol] - | #int168 ( Int ) [klabel(abi_type_int168), symbol] - | #int160 ( Int ) [klabel(abi_type_int160), symbol] - | #int152 ( Int ) [klabel(abi_type_int152), symbol] - | #int144 ( Int ) [klabel(abi_type_int144), symbol] - | #int136 ( Int ) [klabel(abi_type_int136), symbol] - | #int128 ( Int ) [klabel(abi_type_int128), symbol] - | #int120 ( Int ) [klabel(abi_type_int120), symbol] - | #int112 ( Int ) [klabel(abi_type_int112), symbol] - | #int104 ( Int ) [klabel(abi_type_int104), symbol] - | #int96 ( Int ) [klabel(abi_type_int96), symbol] - | #int88 ( Int ) [klabel(abi_type_int88), symbol] - | #int80 ( Int ) [klabel(abi_type_int80), symbol] - | #int72 ( Int ) [klabel(abi_type_int72), symbol] - | #int64 ( Int ) [klabel(abi_type_int64), symbol] - | #int56 ( Int ) [klabel(abi_type_int56), symbol] - | #int48 ( Int ) [klabel(abi_type_int48), symbol] - | #int40 ( Int ) [klabel(abi_type_int40), symbol] - | #int32 ( Int ) [klabel(abi_type_int32), symbol] - | #int24 ( Int ) [klabel(abi_type_int24), symbol] - | #int16 ( Int ) [klabel(abi_type_int16), symbol] - | #int8 ( Int ) [klabel(abi_type_int8), symbol] - | #bytes1 ( Int ) [klabel(abi_type_bytes1), symbol] - | #bytes2 ( Int ) [klabel(abi_type_bytes2), symbol] - | #bytes3 ( Int ) [klabel(abi_type_bytes3), symbol] - | #bytes4 ( Int ) [klabel(abi_type_bytes4), symbol] - | #bytes5 ( Int ) [klabel(abi_type_bytes5), symbol] - | #bytes6 ( Int ) [klabel(abi_type_bytes6), symbol] - | #bytes7 ( Int ) [klabel(abi_type_bytes7), symbol] - | #bytes8 ( Int ) [klabel(abi_type_bytes8), symbol] - | #bytes9 ( Int ) [klabel(abi_type_bytes9), symbol] - | #bytes10 ( Int ) [klabel(abi_type_bytes10), symbol] - | #bytes11 ( Int ) [klabel(abi_type_bytes11), symbol] - | #bytes12 ( Int ) [klabel(abi_type_bytes12), symbol] - | #bytes13 ( Int ) [klabel(abi_type_bytes13), symbol] - | #bytes14 ( Int ) [klabel(abi_type_bytes14), symbol] - | #bytes15 ( Int ) [klabel(abi_type_bytes15), symbol] - | #bytes16 ( Int ) [klabel(abi_type_bytes16), symbol] - | #bytes17 ( Int ) [klabel(abi_type_bytes17), symbol] - | #bytes18 ( Int ) [klabel(abi_type_bytes18), symbol] - | #bytes19 ( Int ) [klabel(abi_type_bytes19), symbol] - | #bytes20 ( Int ) [klabel(abi_type_bytes20), symbol] - | #bytes21 ( Int ) [klabel(abi_type_bytes21), symbol] - | #bytes22 ( Int ) [klabel(abi_type_bytes22), symbol] - | #bytes23 ( Int ) [klabel(abi_type_bytes23), symbol] - | #bytes24 ( Int ) [klabel(abi_type_bytes24), symbol] - | #bytes25 ( Int ) [klabel(abi_type_bytes25), symbol] - | #bytes26 ( Int ) [klabel(abi_type_bytes26), symbol] - | #bytes27 ( Int ) [klabel(abi_type_bytes27), symbol] - | #bytes28 ( Int ) [klabel(abi_type_bytes28), symbol] - | #bytes29 ( Int ) [klabel(abi_type_bytes29), symbol] - | #bytes30 ( Int ) [klabel(abi_type_bytes30), symbol] - | #bytes31 ( Int ) [klabel(abi_type_bytes31), symbol] - | #bytes32 ( Int ) [klabel(abi_type_bytes32), symbol] - | #bool ( Int ) [klabel(abi_type_bool), symbol] - | #bytes ( Bytes ) [klabel(abi_type_bytes), symbol] - | #string ( String ) [klabel(abi_type_string), symbol] - | #array ( TypedArg , Int , TypedArgs ) [klabel(abi_type_array), symbol] - | #tuple ( TypedArgs ) [klabel(abi_type_tuple), symbol] - // ---------------------------------------------------------------------------------------------- - - syntax TypedArgs ::= List{TypedArg, ","} [symbol(typedArgs)] - // ------------------------------------------------------------ - - syntax Bytes ::= #abiCallData ( String , TypedArgs ) [klabel(#abiCallData), function] - // ------------------------------------------------------------------------------------- - rule #abiCallData( FNAME , ARGS ) => #signatureCallData(FNAME, ARGS) +Bytes #encodeArgs(ARGS) - - syntax Bytes ::= #signatureCallData ( String, TypedArgs ) [klabel(#signatureCallData), function] - // ------------------------------------------------------------------------------------------------ - rule #signatureCallData( FNAME , ARGS ) => #parseByteStack(substrString(Keccak256(String2Bytes(#generateSignature(FNAME, ARGS))), 0, 8)) - - syntax String ::= #generateSignature ( String, TypedArgs ) [klabel(#generateSignature), function, total] - | #generateSignatureArgs ( TypedArgs ) [klabel(#generateSignatureArgs),function, total] - // -------------------------------------------------------------------------------------------------------------- - rule #generateSignature( FNAME , ARGS ) => FNAME +String "(" +String #generateSignatureArgs(ARGS) +String ")" - - rule #generateSignatureArgs(.TypedArgs) => "" - rule #generateSignatureArgs(TARGA:TypedArg, .TypedArgs) => #typeName(TARGA) - rule #generateSignatureArgs(TARGA:TypedArg, TARGB:TypedArg, TARGS) => #typeName(TARGA) +String "," +String #generateSignatureArgs(TARGB, TARGS) - - syntax String ::= #typeName ( TypedArg ) [klabel(#typeName), function, total] - // ----------------------------------------------------------------------------- - rule #typeName( #address( _ )) => "address" - - rule #typeName( #uint256( _ )) => "uint256" - rule #typeName( #uint248( _ )) => "uint248" - rule #typeName( #uint240( _ )) => "uint240" - rule #typeName( #uint232( _ )) => "uint232" - rule #typeName( #uint224( _ )) => "uint224" - rule #typeName( #uint216( _ )) => "uint216" - rule #typeName( #uint208( _ )) => "uint208" - rule #typeName( #uint200( _ )) => "uint200" - rule #typeName( #uint192( _ )) => "uint192" - rule #typeName( #uint184( _ )) => "uint184" - rule #typeName( #uint176( _ )) => "uint176" - rule #typeName( #uint168( _ )) => "uint168" - rule #typeName( #uint160( _ )) => "uint160" - rule #typeName( #uint152( _ )) => "uint152" - rule #typeName( #uint144( _ )) => "uint144" - rule #typeName( #uint136( _ )) => "uint136" - rule #typeName( #uint128( _ )) => "uint128" - rule #typeName( #uint120( _ )) => "uint120" - rule #typeName( #uint112( _ )) => "uint112" - rule #typeName( #uint104( _ )) => "uint104" - rule #typeName( #uint96( _ )) => "uint96" - rule #typeName( #uint88( _ )) => "uint88" - rule #typeName( #uint80( _ )) => "uint80" - rule #typeName( #uint72( _ )) => "uint72" - rule #typeName( #uint64( _ )) => "uint64" - rule #typeName( #uint56( _ )) => "uint56" - rule #typeName( #uint48( _ )) => "uint48" - rule #typeName( #uint40( _ )) => "uint40" - rule #typeName( #uint32( _ )) => "uint32" - rule #typeName( #uint24( _ )) => "uint24" - rule #typeName( #uint16( _ )) => "uint16" - rule #typeName( #uint8( _ )) => "uint8" - - rule #typeName( #int256( _ )) => "int256" - rule #typeName( #int248( _ )) => "int248" - rule #typeName( #int240( _ )) => "int240" - rule #typeName( #int232( _ )) => "int232" - rule #typeName( #int224( _ )) => "int224" - rule #typeName( #int216( _ )) => "int216" - rule #typeName( #int208( _ )) => "int208" - rule #typeName( #int200( _ )) => "int200" - rule #typeName( #int192( _ )) => "int192" - rule #typeName( #int184( _ )) => "int184" - rule #typeName( #int176( _ )) => "int176" - rule #typeName( #int168( _ )) => "int168" - rule #typeName( #int160( _ )) => "int160" - rule #typeName( #int152( _ )) => "int152" - rule #typeName( #int144( _ )) => "int144" - rule #typeName( #int136( _ )) => "int136" - rule #typeName( #int128( _ )) => "int128" - rule #typeName( #int120( _ )) => "int120" - rule #typeName( #int112( _ )) => "int112" - rule #typeName( #int104( _ )) => "int104" - rule #typeName( #int96( _ )) => "int96" - rule #typeName( #int88( _ )) => "int88" - rule #typeName( #int80( _ )) => "int80" - rule #typeName( #int72( _ )) => "int72" - rule #typeName( #int64( _ )) => "int64" - rule #typeName( #int56( _ )) => "int56" - rule #typeName( #int48( _ )) => "int48" - rule #typeName( #int40( _ )) => "int40" - rule #typeName( #int32( _ )) => "int32" - rule #typeName( #int24( _ )) => "int24" - rule #typeName( #int16( _ )) => "int16" - rule #typeName( #int8( _ )) => "int8" - - rule #typeName( #bytes1( _ )) => "bytes1" - rule #typeName( #bytes2( _ )) => "bytes2" - rule #typeName( #bytes3( _ )) => "bytes3" - rule #typeName( #bytes4( _ )) => "bytes4" - rule #typeName( #bytes5( _ )) => "bytes5" - rule #typeName( #bytes6( _ )) => "bytes6" - rule #typeName( #bytes7( _ )) => "bytes7" - rule #typeName( #bytes8( _ )) => "bytes8" - rule #typeName( #bytes9( _ )) => "bytes9" - rule #typeName( #bytes10( _ )) => "bytes10" - rule #typeName( #bytes11( _ )) => "bytes11" - rule #typeName( #bytes12( _ )) => "bytes12" - rule #typeName( #bytes13( _ )) => "bytes13" - rule #typeName( #bytes14( _ )) => "bytes14" - rule #typeName( #bytes15( _ )) => "bytes15" - rule #typeName( #bytes16( _ )) => "bytes16" - rule #typeName( #bytes17( _ )) => "bytes17" - rule #typeName( #bytes18( _ )) => "bytes18" - rule #typeName( #bytes19( _ )) => "bytes19" - rule #typeName( #bytes20( _ )) => "bytes20" - rule #typeName( #bytes21( _ )) => "bytes21" - rule #typeName( #bytes22( _ )) => "bytes22" - rule #typeName( #bytes23( _ )) => "bytes23" - rule #typeName( #bytes24( _ )) => "bytes24" - rule #typeName( #bytes25( _ )) => "bytes25" - rule #typeName( #bytes26( _ )) => "bytes26" - rule #typeName( #bytes27( _ )) => "bytes27" - rule #typeName( #bytes28( _ )) => "bytes28" - rule #typeName( #bytes29( _ )) => "bytes29" - rule #typeName( #bytes30( _ )) => "bytes30" - rule #typeName( #bytes31( _ )) => "bytes31" - rule #typeName( #bytes32( _ )) => "bytes32" - - rule #typeName( #bool( _ )) => "bool" - - rule #typeName( #bytes( _ )) => "bytes" - - rule #typeName( #string( _ )) => "string" - - rule #typeName( #array(T, _, _)) => #typeName(T) +String "[]" - - rule #typeName( #tuple(ARGS)) => "(" +String #generateSignatureArgs(ARGS) +String ")" - - syntax Bytes ::= #encodeArgs ( TypedArgs ) [klabel(#encodeArgs), function] - syntax Bytes ::= #encodeArgsAux ( TypedArgs , Int , Bytes , Bytes ) [klabel(#encodeArgsAux), function] - // ------------------------------------------------------------------------------------------------------ - rule #encodeArgs(ARGS) => #encodeArgsAux(ARGS, #lenOfHeads(ARGS), .Bytes, .Bytes) - - rule #encodeArgsAux(.TypedArgs, _:Int, HEADS, TAILS) => HEADS +Bytes TAILS - - rule #encodeArgsAux((ARG, ARGS), OFFSET, HEADS, TAILS) - => #encodeArgsAux(ARGS, OFFSET, HEADS +Bytes #enc(ARG), TAILS) - requires #isStaticType(ARG) - - rule #encodeArgsAux((ARG, ARGS), OFFSET, HEADS, TAILS) - => #encodeArgsAux(ARGS, OFFSET +Int #sizeOfDynamicType(ARG), HEADS +Bytes #enc(#uint256(OFFSET)), TAILS +Bytes #enc(ARG)) - requires notBool(#isStaticType(ARG)) -``` - -The `#lenOfHeads` is a recursive function used to calculate the space required for the 'head' of data structures in Solidity. -For most types, this is a fixed 32 bytes, except for static tuples, for which the length is the cumulative length of their contents. - -```k - syntax Int ::= #lenOfHeads ( TypedArgs ) [klabel(#lenOfHeads), function, total] - // ------------------------------------------------------------------------------- - rule #lenOfHeads(.TypedArgs) => 0 - rule #lenOfHeads(ARG, ARGS) => #lenOfHead(ARG) +Int #lenOfHeads(ARGS) - - syntax Int ::= #lenOfHead ( TypedArg ) [klabel(#lenOfHead), function, total] - // ---------------------------------------------------------------------------- - rule #lenOfHead( #tuple( ARGS )) => #lenOfHeads(ARGS) requires #isStaticType(#tuple(ARGS)) - rule #lenOfHead( _) => 32 [owise] -``` - -`#isStaticType` checks if a given `TypedArg` is a static type in order to determine if it has a fixed size. - -```k - syntax Bool ::= #isStaticType ( TypedArg ) [klabel(#isStaticType), function, total] - // ----------------------------------------------------------------------------------- - rule #isStaticType( #bytes( _ )) => false - rule #isStaticType( #string( _ )) => false - rule #isStaticType(#array(_, _, _)) => false - rule #isStaticType( #tuple( ARGS )) => notBool #hasDynamicType(ARGS) - rule #isStaticType( _) => true [owise] - - syntax Bool ::= #hasDynamicType(TypedArgs) [klabel(#hasDynamicType), function, total] - // ------------------------------------------------------------------------------------- - rule #hasDynamicType(.TypedArgs) => false - rule #hasDynamicType(T, TS) => #hasDynamicType(TS) requires #isStaticType(T) - rule #hasDynamicType(T, _) => true requires notBool #isStaticType(T) -``` - -`#sizeOfDynamicType` is used to calculate the size of a single dynamic `TypedArg`. - - for `#bytes(BS)` and `#string(BS)`, the size is 32 bytes for the length prefix plus the size of the actual byte sequence, rounded up to the nearest multiple of 32. - - for `#tuple(ARGS)`, the size is 32 bytes for the length prefix plus the cumulative size of its elements. - - for `#array(T, N, _)` that has elements of a static `TypedArg` `T`, the size is `32 * (1 + N)`,which accounts for 32 bytes for the length prefix and 32 bytes for each element. - - for dynamic type arrays `#array(T, N, ELEMS)`, the size is `32 * (1 + N + #sizeOfDynamicTypeList(ELEMS))`. - -```k - syntax Int ::= #sizeOfDynamicType ( TypedArg ) [klabel(#sizeOfDynamicType), function] - // ------------------------------------------------------------------------------------- - rule #sizeOfDynamicType( #bytes(BS)) => 32 +Int #ceil32(lengthBytes(BS)) - rule #sizeOfDynamicType( #string(BS)) => 32 +Int #ceil32(lengthBytes(String2Bytes(BS))) - rule #sizeOfDynamicType( #tuple(ARGS)) => 32 +Int #sizeOfDynamicTypeList(ARGS) - rule #sizeOfDynamicType(#array(T, N, _)) => 32 *Int (1 +Int N) - requires #isStaticType(T) - - rule #sizeOfDynamicType(#array(T, N, ELEMS)) => 32 *Int (1 +Int N +Int #sizeOfDynamicTypeList(ELEMS)) - requires notBool #isStaticType(T) - - syntax Int ::= #sizeOfDynamicTypeList ( TypedArgs ) [klabel(#sizeOfDynamicTypeList), function, total] - // ----------------------------------------------------------------------------------------------------- - rule #sizeOfDynamicTypeList(TARG, TARGS) => #sizeOfDynamicType(TARG) +Int #sizeOfDynamicTypeList(TARGS) - requires notBool #isStaticType(TARG) - - rule #sizeOfDynamicTypeList(TARG, TARGS) => #lenOfHead(TARG) +Int #sizeOfDynamicTypeList(TARGS) - requires #isStaticType(TARG) - - rule #sizeOfDynamicTypeList(.TypedArgs) => 0 - - syntax Bytes ::= #enc ( TypedArg ) [klabel(#enc), function] - // ----------------------------------------------------------- - // static Type - rule #enc(#address( DATA )) => #bufStrict(32, #getValue(#address( DATA ))) - - rule #enc(#uint256( DATA )) => #bufStrict(32, #getValue(#uint256( DATA ))) - rule #enc(#uint248( DATA )) => #bufStrict(32, #getValue(#uint248( DATA ))) - rule #enc(#uint240( DATA )) => #bufStrict(32, #getValue(#uint240( DATA ))) - rule #enc(#uint232( DATA )) => #bufStrict(32, #getValue(#uint232( DATA ))) - rule #enc(#uint224( DATA )) => #bufStrict(32, #getValue(#uint224( DATA ))) - rule #enc(#uint216( DATA )) => #bufStrict(32, #getValue(#uint216( DATA ))) - rule #enc(#uint208( DATA )) => #bufStrict(32, #getValue(#uint208( DATA ))) - rule #enc(#uint200( DATA )) => #bufStrict(32, #getValue(#uint200( DATA ))) - rule #enc(#uint192( DATA )) => #bufStrict(32, #getValue(#uint192( DATA ))) - rule #enc(#uint184( DATA )) => #bufStrict(32, #getValue(#uint184( DATA ))) - rule #enc(#uint176( DATA )) => #bufStrict(32, #getValue(#uint176( DATA ))) - rule #enc(#uint168( DATA )) => #bufStrict(32, #getValue(#uint168( DATA ))) - rule #enc(#uint160( DATA )) => #bufStrict(32, #getValue(#uint160( DATA ))) - rule #enc(#uint152( DATA )) => #bufStrict(32, #getValue(#uint152( DATA ))) - rule #enc(#uint144( DATA )) => #bufStrict(32, #getValue(#uint144( DATA ))) - rule #enc(#uint136( DATA )) => #bufStrict(32, #getValue(#uint136( DATA ))) - rule #enc(#uint128( DATA )) => #bufStrict(32, #getValue(#uint128( DATA ))) - rule #enc(#uint120( DATA )) => #bufStrict(32, #getValue(#uint120( DATA ))) - rule #enc(#uint112( DATA )) => #bufStrict(32, #getValue(#uint112( DATA ))) - rule #enc(#uint104( DATA )) => #bufStrict(32, #getValue(#uint104( DATA ))) - rule #enc( #uint96( DATA )) => #bufStrict(32, #getValue( #uint96( DATA ))) - rule #enc( #uint88( DATA )) => #bufStrict(32, #getValue( #uint88( DATA ))) - rule #enc( #uint80( DATA )) => #bufStrict(32, #getValue( #uint80( DATA ))) - rule #enc( #uint72( DATA )) => #bufStrict(32, #getValue( #uint72( DATA ))) - rule #enc( #uint64( DATA )) => #bufStrict(32, #getValue( #uint64( DATA ))) - rule #enc( #uint56( DATA )) => #bufStrict(32, #getValue( #uint56( DATA ))) - rule #enc( #uint48( DATA )) => #bufStrict(32, #getValue( #uint48( DATA ))) - rule #enc( #uint40( DATA )) => #bufStrict(32, #getValue( #uint40( DATA ))) - rule #enc( #uint32( DATA )) => #bufStrict(32, #getValue( #uint32( DATA ))) - rule #enc( #uint24( DATA )) => #bufStrict(32, #getValue( #uint24( DATA ))) - rule #enc( #uint16( DATA )) => #bufStrict(32, #getValue( #uint16( DATA ))) - rule #enc( #uint8( DATA )) => #bufStrict(32, #getValue( #uint8( DATA ))) - - rule #enc(#int256( DATA )) => #bufStrict(32, #getValue(#int256( DATA ))) - rule #enc(#int248( DATA )) => #bufStrict(32, #getValue(#int248( DATA ))) - rule #enc(#int240( DATA )) => #bufStrict(32, #getValue(#int240( DATA ))) - rule #enc(#int232( DATA )) => #bufStrict(32, #getValue(#int232( DATA ))) - rule #enc(#int224( DATA )) => #bufStrict(32, #getValue(#int224( DATA ))) - rule #enc(#int216( DATA )) => #bufStrict(32, #getValue(#int216( DATA ))) - rule #enc(#int208( DATA )) => #bufStrict(32, #getValue(#int208( DATA ))) - rule #enc(#int200( DATA )) => #bufStrict(32, #getValue(#int200( DATA ))) - rule #enc(#int192( DATA )) => #bufStrict(32, #getValue(#int192( DATA ))) - rule #enc(#int184( DATA )) => #bufStrict(32, #getValue(#int184( DATA ))) - rule #enc(#int176( DATA )) => #bufStrict(32, #getValue(#int176( DATA ))) - rule #enc(#int168( DATA )) => #bufStrict(32, #getValue(#int168( DATA ))) - rule #enc(#int160( DATA )) => #bufStrict(32, #getValue(#int160( DATA ))) - rule #enc(#int152( DATA )) => #bufStrict(32, #getValue(#int152( DATA ))) - rule #enc(#int144( DATA )) => #bufStrict(32, #getValue(#int144( DATA ))) - rule #enc(#int136( DATA )) => #bufStrict(32, #getValue(#int136( DATA ))) - rule #enc(#int128( DATA )) => #bufStrict(32, #getValue(#int128( DATA ))) - rule #enc(#int120( DATA )) => #bufStrict(32, #getValue(#int120( DATA ))) - rule #enc(#int112( DATA )) => #bufStrict(32, #getValue(#int112( DATA ))) - rule #enc(#int104( DATA )) => #bufStrict(32, #getValue(#int104( DATA ))) - rule #enc( #int96( DATA )) => #bufStrict(32, #getValue( #int96( DATA ))) - rule #enc( #int88( DATA )) => #bufStrict(32, #getValue( #int88( DATA ))) - rule #enc( #int80( DATA )) => #bufStrict(32, #getValue( #int80( DATA ))) - rule #enc( #int72( DATA )) => #bufStrict(32, #getValue( #int72( DATA ))) - rule #enc( #int64( DATA )) => #bufStrict(32, #getValue( #int64( DATA ))) - rule #enc( #int56( DATA )) => #bufStrict(32, #getValue( #int56( DATA ))) - rule #enc( #int48( DATA )) => #bufStrict(32, #getValue( #int48( DATA ))) - rule #enc( #int40( DATA )) => #bufStrict(32, #getValue( #int40( DATA ))) - rule #enc( #int32( DATA )) => #bufStrict(32, #getValue( #int32( DATA ))) - rule #enc( #int24( DATA )) => #bufStrict(32, #getValue( #int24( DATA ))) - rule #enc( #int16( DATA )) => #bufStrict(32, #getValue( #int16( DATA ))) - rule #enc( #int8( DATA )) => #bufStrict(32, #getValue( #int8( DATA ))) - - rule #enc( #bytes1( DATA )) => #padRightToWidth(32, #bufStrict(1, #getValue(#bytes1( DATA )))) - rule #enc( #bytes2( DATA )) => #padRightToWidth(32, #bufStrict(2, #getValue(#bytes2( DATA )))) - rule #enc( #bytes3( DATA )) => #padRightToWidth(32, #bufStrict(3, #getValue(#bytes3( DATA )))) - rule #enc( #bytes4( DATA )) => #padRightToWidth(32, #bufStrict(4, #getValue(#bytes4( DATA )))) - rule #enc( #bytes5( DATA )) => #padRightToWidth(32, #bufStrict(5, #getValue(#bytes5( DATA )))) - rule #enc( #bytes6( DATA )) => #padRightToWidth(32, #bufStrict(6, #getValue(#bytes6( DATA )))) - rule #enc( #bytes7( DATA )) => #padRightToWidth(32, #bufStrict(7, #getValue(#bytes7( DATA )))) - rule #enc( #bytes8( DATA )) => #padRightToWidth(32, #bufStrict(8, #getValue(#bytes8( DATA )))) - rule #enc( #bytes9( DATA )) => #padRightToWidth(32, #bufStrict(9, #getValue(#bytes9( DATA )))) - rule #enc( #bytes10( DATA )) => #padRightToWidth(32, #bufStrict(10, #getValue(#bytes10( DATA )))) - rule #enc( #bytes11( DATA )) => #padRightToWidth(32, #bufStrict(11, #getValue(#bytes11( DATA )))) - rule #enc( #bytes12( DATA )) => #padRightToWidth(32, #bufStrict(12, #getValue(#bytes12( DATA )))) - rule #enc( #bytes13( DATA )) => #padRightToWidth(32, #bufStrict(13, #getValue(#bytes13( DATA )))) - rule #enc( #bytes14( DATA )) => #padRightToWidth(32, #bufStrict(14, #getValue(#bytes14( DATA )))) - rule #enc( #bytes15( DATA )) => #padRightToWidth(32, #bufStrict(15, #getValue(#bytes15( DATA )))) - rule #enc( #bytes16( DATA )) => #padRightToWidth(32, #bufStrict(16, #getValue(#bytes16( DATA )))) - rule #enc( #bytes17( DATA )) => #padRightToWidth(32, #bufStrict(17, #getValue(#bytes17( DATA )))) - rule #enc( #bytes18( DATA )) => #padRightToWidth(32, #bufStrict(18, #getValue(#bytes18( DATA )))) - rule #enc( #bytes19( DATA )) => #padRightToWidth(32, #bufStrict(19, #getValue(#bytes19( DATA )))) - rule #enc( #bytes20( DATA )) => #padRightToWidth(32, #bufStrict(20, #getValue(#bytes20( DATA )))) - rule #enc( #bytes21( DATA )) => #padRightToWidth(32, #bufStrict(21, #getValue(#bytes21( DATA )))) - rule #enc( #bytes22( DATA )) => #padRightToWidth(32, #bufStrict(22, #getValue(#bytes22( DATA )))) - rule #enc( #bytes23( DATA )) => #padRightToWidth(32, #bufStrict(23, #getValue(#bytes23( DATA )))) - rule #enc( #bytes24( DATA )) => #padRightToWidth(32, #bufStrict(24, #getValue(#bytes24( DATA )))) - rule #enc( #bytes25( DATA )) => #padRightToWidth(32, #bufStrict(25, #getValue(#bytes25( DATA )))) - rule #enc( #bytes26( DATA )) => #padRightToWidth(32, #bufStrict(26, #getValue(#bytes26( DATA )))) - rule #enc( #bytes27( DATA )) => #padRightToWidth(32, #bufStrict(27, #getValue(#bytes27( DATA )))) - rule #enc( #bytes28( DATA )) => #padRightToWidth(32, #bufStrict(28, #getValue(#bytes28( DATA )))) - rule #enc( #bytes29( DATA )) => #padRightToWidth(32, #bufStrict(29, #getValue(#bytes29( DATA )))) - rule #enc( #bytes30( DATA )) => #padRightToWidth(32, #bufStrict(30, #getValue(#bytes30( DATA )))) - rule #enc( #bytes31( DATA )) => #padRightToWidth(32, #bufStrict(31, #getValue(#bytes31( DATA )))) - rule #enc( #bytes32( DATA )) => #bufStrict(32, #getValue(#bytes32( DATA ))) - - rule #enc( #bool( DATA )) => #bufStrict(32, #getValue( #bool( DATA ))) - - // dynamic Type - // length of `bytes` variables is hardcoded to be <= 1 Gb; this can be adjusted to reflect real-world on-chain constraints - rule #enc( #bytes(BS)) => #encBytes(lengthBytes(BS), BS) ensures lengthBytes(BS) <=Int 1073741824 - rule #enc( #string(STR)) => #enc(#bytes(String2Bytes(STR))) - rule #enc(#array(_, N, DATA)) => #enc(#uint256(N)) +Bytes #encodeArgs(DATA) - rule #enc( #tuple( DATA )) => #encodeArgs(DATA) - - syntax Bytes ::= #encBytes ( Int , Bytes ) [klabel(#encBytes), function] - // ------------------------------------------------------------------------ - rule #encBytes(N, BS) => #enc(#uint256(N)) +Bytes BS +Bytes #bufStrict(#ceil32(N) -Int N, 0) -``` - -```k - syntax Int ::= #getValue ( TypedArg ) [klabel(#getValue), function] - // ------------------------------------------------------------------- - rule #getValue( #bool( X )) => X requires #rangeBool(X) - - rule #getValue(#address( X )) => X requires #rangeAddress(X) - - rule #getValue( #uint8( X )) => X requires #rangeUInt(8, X) - rule #getValue( #uint16( X )) => X requires #rangeUInt(16, X) - rule #getValue( #uint24( X )) => X requires #rangeUInt(24, X) - rule #getValue( #uint32( X )) => X requires #rangeUInt(32, X) - rule #getValue( #uint40( X )) => X requires #rangeUInt(40, X) - rule #getValue( #uint48( X )) => X requires #rangeUInt(48, X) - rule #getValue( #uint56( X )) => X requires #rangeUInt(56, X) - rule #getValue( #uint64( X )) => X requires #rangeUInt(64, X) - rule #getValue( #uint72( X )) => X requires #rangeUInt(72, X) - rule #getValue( #uint80( X )) => X requires #rangeUInt(80, X) - rule #getValue( #uint88( X )) => X requires #rangeUInt(88, X) - rule #getValue( #uint96( X )) => X requires #rangeUInt(96, X) - rule #getValue(#uint104( X )) => X requires #rangeUInt(104, X) - rule #getValue(#uint112( X )) => X requires #rangeUInt(112, X) - rule #getValue(#uint120( X )) => X requires #rangeUInt(120, X) - rule #getValue(#uint128( X )) => X requires #rangeUInt(128, X) - rule #getValue(#uint136( X )) => X requires #rangeUInt(136, X) - rule #getValue(#uint144( X )) => X requires #rangeUInt(144, X) - rule #getValue(#uint152( X )) => X requires #rangeUInt(152, X) - rule #getValue(#uint160( X )) => X requires #rangeUInt(160, X) - rule #getValue(#uint168( X )) => X requires #rangeUInt(168, X) - rule #getValue(#uint176( X )) => X requires #rangeUInt(176, X) - rule #getValue(#uint184( X )) => X requires #rangeUInt(184, X) - rule #getValue(#uint192( X )) => X requires #rangeUInt(192, X) - rule #getValue(#uint200( X )) => X requires #rangeUInt(200, X) - rule #getValue(#uint208( X )) => X requires #rangeUInt(208, X) - rule #getValue(#uint216( X )) => X requires #rangeUInt(216, X) - rule #getValue(#uint224( X )) => X requires #rangeUInt(224, X) - rule #getValue(#uint232( X )) => X requires #rangeUInt(232, X) - rule #getValue(#uint240( X )) => X requires #rangeUInt(240, X) - rule #getValue(#uint248( X )) => X requires #rangeUInt(248, X) - rule #getValue(#uint256( X )) => X requires #rangeUInt(256, X) - - rule #getValue( #int8( X )) => chop(X) requires #rangeSInt(8, X) - rule #getValue( #int16( X )) => chop(X) requires #rangeSInt(16, X) - rule #getValue( #int24( X )) => chop(X) requires #rangeSInt(24, X) - rule #getValue( #int32( X )) => chop(X) requires #rangeSInt(32, X) - rule #getValue( #int40( X )) => chop(X) requires #rangeSInt(40, X) - rule #getValue( #int48( X )) => chop(X) requires #rangeSInt(48, X) - rule #getValue( #int56( X )) => chop(X) requires #rangeSInt(56, X) - rule #getValue( #int64( X )) => chop(X) requires #rangeSInt(64, X) - rule #getValue( #int72( X )) => chop(X) requires #rangeSInt(72, X) - rule #getValue( #int80( X )) => chop(X) requires #rangeSInt(80, X) - rule #getValue( #int88( X )) => chop(X) requires #rangeSInt(88, X) - rule #getValue( #int96( X )) => chop(X) requires #rangeSInt(96, X) - rule #getValue( #int104( X )) => chop(X) requires #rangeSInt(104, X) - rule #getValue( #int112( X )) => chop(X) requires #rangeSInt(112, X) - rule #getValue( #int120( X )) => chop(X) requires #rangeSInt(120, X) - rule #getValue( #int128( X )) => chop(X) requires #rangeSInt(128, X) - rule #getValue( #int136( X )) => chop(X) requires #rangeSInt(136, X) - rule #getValue( #int144( X )) => chop(X) requires #rangeSInt(144, X) - rule #getValue( #int152( X )) => chop(X) requires #rangeSInt(152, X) - rule #getValue( #int160( X )) => chop(X) requires #rangeSInt(160, X) - rule #getValue( #int168( X )) => chop(X) requires #rangeSInt(168, X) - rule #getValue( #int176( X )) => chop(X) requires #rangeSInt(176, X) - rule #getValue( #int184( X )) => chop(X) requires #rangeSInt(184, X) - rule #getValue( #int192( X )) => chop(X) requires #rangeSInt(192, X) - rule #getValue( #int200( X )) => chop(X) requires #rangeSInt(200, X) - rule #getValue( #int208( X )) => chop(X) requires #rangeSInt(208, X) - rule #getValue( #int216( X )) => chop(X) requires #rangeSInt(216, X) - rule #getValue( #int224( X )) => chop(X) requires #rangeSInt(224, X) - rule #getValue( #int232( X )) => chop(X) requires #rangeSInt(232, X) - rule #getValue( #int240( X )) => chop(X) requires #rangeSInt(240, X) - rule #getValue( #int248( X )) => chop(X) requires #rangeSInt(248, X) - rule #getValue( #int256( X )) => chop(X) requires #rangeSInt(256, X) - - rule #getValue( #bytes1( X )) => X requires #rangeUInt(8, X) - rule #getValue( #bytes2( X )) => X requires #rangeUInt(16, X) - rule #getValue( #bytes3( X )) => X requires #rangeUInt(24, X) - rule #getValue( #bytes4( X )) => X requires #rangeUInt(32, X) - rule #getValue( #bytes5( X )) => X requires #rangeUInt(40, X) - rule #getValue( #bytes6( X )) => X requires #rangeUInt(48, X) - rule #getValue( #bytes7( X )) => X requires #rangeUInt(56, X) - rule #getValue( #bytes8( X )) => X requires #rangeUInt(64, X) - rule #getValue( #bytes9( X )) => X requires #rangeUInt(72, X) - rule #getValue( #bytes10( X )) => X requires #rangeUInt(80, X) - rule #getValue( #bytes11( X )) => X requires #rangeUInt(88, X) - rule #getValue( #bytes12( X )) => X requires #rangeUInt(96, X) - rule #getValue( #bytes13( X )) => X requires #rangeUInt(104, X) - rule #getValue( #bytes14( X )) => X requires #rangeUInt(112, X) - rule #getValue( #bytes15( X )) => X requires #rangeUInt(120, X) - rule #getValue( #bytes16( X )) => X requires #rangeUInt(128, X) - rule #getValue( #bytes17( X )) => X requires #rangeUInt(136, X) - rule #getValue( #bytes18( X )) => X requires #rangeUInt(144, X) - rule #getValue( #bytes19( X )) => X requires #rangeUInt(152, X) - rule #getValue( #bytes20( X )) => X requires #rangeUInt(160, X) - rule #getValue( #bytes21( X )) => X requires #rangeUInt(168, X) - rule #getValue( #bytes22( X )) => X requires #rangeUInt(176, X) - rule #getValue( #bytes23( X )) => X requires #rangeUInt(184, X) - rule #getValue( #bytes24( X )) => X requires #rangeUInt(192, X) - rule #getValue( #bytes25( X )) => X requires #rangeUInt(200, X) - rule #getValue( #bytes26( X )) => X requires #rangeUInt(208, X) - rule #getValue( #bytes27( X )) => X requires #rangeUInt(216, X) - rule #getValue( #bytes28( X )) => X requires #rangeUInt(224, X) - rule #getValue( #bytes29( X )) => X requires #rangeUInt(232, X) - rule #getValue( #bytes30( X )) => X requires #rangeUInt(240, X) - rule #getValue( #bytes31( X )) => X requires #rangeUInt(248, X) - rule #getValue( #bytes32( X )) => X requires #rangeUInt(256, X) -``` - -### ABI Event Logs - -EVM logs are special data structures in the blockchain, being searchable by off-chain clients. -Events are high-level wrappers of the EVM logs provided in the high-level languages. -Contracts can declare and generate the events, which will be compiled down to the EVM bytecode using the EVM log instructions. -The encoding scheme of the events in the EVM logs is defined in the Ethereum contract application binary interface (ABI) specification, leveraging the ABI call data encoding scheme. - -The eDSL provides `#abiEventLog`, a notation to specify the EVM logs in the high-level events, defined below. -It specifies the contract account address, the event name, and the event arguments. -For example, the following notation represents an EVM log data that encodes the `Transfer` event generated by the `transfer` function, where `ACCT_ID` is the account address, and `CALLER_ID`, `TO_ID`, and `VALUE` are the event arguments. -Each argument is tagged with its ABI type (`#address` or `#uint256`), and the `indexed` attribute (`#indexed`) if any, according to the event declaration in the contract. - -``` - #abiEventLog(ACCT_ID, "Transfer", #indexed(#address(CALLER_ID)), #indexed(#address(TO_ID)), #uint256(VALUE)) -``` - -The above notation denotes (i.e., is translated to) the following EVM log data structure: - -``` - { ACCT_ID | |` - | 100389287136786176327247604509743168900146139575972864366142685224231313322991 - : CALLER_ID |/| - : TO_ID | | - : .WordStack | | - | #bufStrict(32, VALUE) | | - } -``` - -where `100389287136786176327247604509743168900146139575972864366142685224231313322991` is the hash value of the event signature, `keccak256("Transfer(address,address,unit256)")`. - -```k - syntax EventArg ::= TypedArg - | #indexed ( TypedArg ) [klabel(#indexed)] - // ------------------------------------------------------------ - - syntax EventArgs ::= List{EventArg, ","} [symbol(eventArgs)] - // ------------------------------------------------------------ - - syntax SubstateLogEntry ::= #abiEventLog ( Int , String , EventArgs ) [klabel(#abiEventLog), function] - // ------------------------------------------------------------------------------------------------------ - rule #abiEventLog(ACCT_ID, EVENT_NAME, EVENT_ARGS) - => { ACCT_ID | #getEventTopics(EVENT_NAME, EVENT_ARGS) | #encodeArgs(#getNonIndexedArgs(EVENT_ARGS)) } - - syntax List ::= #getEventTopics ( String , EventArgs ) [klabel(#getEventTopics), function] - // ------------------------------------------------------------------------------------------ - rule #getEventTopics(ENAME, EARGS) - => ListItem(#parseHexWord(Keccak256(String2Bytes(#generateSignature(ENAME, #getTypedArgs(EARGS)))))) - #getIndexedArgs(EARGS) - - syntax TypedArgs ::= #getTypedArgs ( EventArgs ) [klabel(#getTypedArgs), function] - // ---------------------------------------------------------------------------------- - rule #getTypedArgs(#indexed(E), ES) => E, #getTypedArgs(ES) - rule #getTypedArgs(E:TypedArg, ES) => E, #getTypedArgs(ES) - rule #getTypedArgs(.EventArgs) => .TypedArgs - - syntax List ::= #getIndexedArgs ( EventArgs ) [klabel(#getIndexedArgs), function] - // --------------------------------------------------------------------------------- - rule #getIndexedArgs(#indexed(E), ES) => ListItem(#getValue(E)) #getIndexedArgs(ES) - rule #getIndexedArgs(_:TypedArg, ES) => #getIndexedArgs(ES) - rule #getIndexedArgs(.EventArgs) => .List - - syntax TypedArgs ::= #getNonIndexedArgs ( EventArgs ) [klabel(#getNonIndexedArgs), function] - // -------------------------------------------------------------------------------------------- - rule #getNonIndexedArgs(#indexed(_), ES) => #getNonIndexedArgs(ES) - rule #getNonIndexedArgs(E:TypedArg, ES) => E, #getNonIndexedArgs(ES) - rule #getNonIndexedArgs(.EventArgs) => .TypedArgs -``` - -### Function selectors - -```k - syntax Int ::= selector ( String ) [alias, klabel(abi_selector), symbol, function, no-evaluators] - // ------------------------------------------------------------------------------------------------- -``` - -```k -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/abi/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/abi/index.html new file mode 100644 index 0000000000..1b873c4415 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/abi/index.html @@ -0,0 +1,802 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

ABI Encoding

+
requires "evm.md"
+requires "buf.md"
+
+module EVM-ABI
+    imports EVM
+    imports BUF
+
+

ABI Call Data

+

When a function is called in the EVM, its arguments are encoded in a single byte-array and put in the so-called 'call data' section. +The encoding is defined in the Ethereum contract application binary interface (ABI) specification. +The eDSL provides #abiCallData, a notation to specify the ABI call data in a way similar to a high-level function call notation, defined below. +It specifies the function name and the (symbolic) arguments along with their types. +For example, the following notation represents a data that encodes a call to the transfer function with two arguments: TO, the receiver account address of type address (an 160-bit unsigned integer), and VALUE, the value to transfer of type unit256 (a 256-bit unsigned integer).

+
  #abiCallData("transfer", #address(TO), #uint256(VALUE))
+
+

which denotes (indeed, is translated to) the following byte array:

+
  F1 : F2 : F3 : F4 : T1 : ... : T32 : V1 : ... : V32
+
+

where F1 : F2 : F3 : F4 is the (two's complement) byte-array representation of 2835717307, the first four bytes of the hash value of the transfer function signature, keccak256("transfer(address,unit256)"), and T1 : ... : T32 and V1 : ... : V32 are the byte-array representations of TO and VALUE respectively.

+
    syntax TypedArg ::= #address ( Int )                        [klabel(abi_type_address), symbol]
+                      | #uint256 ( Int )                        [klabel(abi_type_uint256), symbol]
+                      | #uint248 ( Int )                        [klabel(abi_type_uint248), symbol]
+                      | #uint240 ( Int )                        [klabel(abi_type_uint240), symbol]
+                      | #uint232 ( Int )                        [klabel(abi_type_uint232), symbol]
+                      | #uint224 ( Int )                        [klabel(abi_type_uint224), symbol]
+                      | #uint216 ( Int )                        [klabel(abi_type_uint216), symbol]
+                      | #uint208 ( Int )                        [klabel(abi_type_uint208), symbol]
+                      | #uint200 ( Int )                        [klabel(abi_type_uint200), symbol]
+                      | #uint192 ( Int )                        [klabel(abi_type_uint192), symbol]
+                      | #uint184 ( Int )                        [klabel(abi_type_uint184), symbol]
+                      | #uint176 ( Int )                        [klabel(abi_type_uint176), symbol]
+                      | #uint168 ( Int )                        [klabel(abi_type_uint168), symbol]
+                      | #uint160 ( Int )                        [klabel(abi_type_uint160), symbol]
+                      | #uint152 ( Int )                        [klabel(abi_type_uint152), symbol]
+                      | #uint144 ( Int )                        [klabel(abi_type_uint144), symbol]
+                      | #uint136 ( Int )                        [klabel(abi_type_uint136), symbol]
+                      | #uint128 ( Int )                        [klabel(abi_type_uint128), symbol]
+                      | #uint120 ( Int )                        [klabel(abi_type_uint120), symbol]
+                      | #uint112 ( Int )                        [klabel(abi_type_uint112), symbol]
+                      | #uint104 ( Int )                        [klabel(abi_type_uint104), symbol]
+                      | #uint96  ( Int )                        [klabel(abi_type_uint96),  symbol]
+                      | #uint88  ( Int )                        [klabel(abi_type_uint88),  symbol]
+                      | #uint80  ( Int )                        [klabel(abi_type_uint80),  symbol]
+                      | #uint72  ( Int )                        [klabel(abi_type_uint72),  symbol]
+                      | #uint64  ( Int )                        [klabel(abi_type_uint64),  symbol]
+                      | #uint56  ( Int )                        [klabel(abi_type_uint56),  symbol]
+                      | #uint48  ( Int )                        [klabel(abi_type_uint48),  symbol]
+                      | #uint40  ( Int )                        [klabel(abi_type_uint40),  symbol]
+                      | #uint32  ( Int )                        [klabel(abi_type_uint32),  symbol]
+                      | #uint24  ( Int )                        [klabel(abi_type_uint24),  symbol]
+                      | #uint16  ( Int )                        [klabel(abi_type_uint16),  symbol]
+                      | #uint8   ( Int )                        [klabel(abi_type_uint8),   symbol]
+                      | #int256  ( Int )                        [klabel(abi_type_int256),  symbol]
+                      | #int248  ( Int )                        [klabel(abi_type_int248),  symbol]
+                      | #int240  ( Int )                        [klabel(abi_type_int240),  symbol]
+                      | #int232  ( Int )                        [klabel(abi_type_int232),  symbol]
+                      | #int224  ( Int )                        [klabel(abi_type_int224),  symbol]
+                      | #int216  ( Int )                        [klabel(abi_type_int216),  symbol]
+                      | #int208  ( Int )                        [klabel(abi_type_int208),  symbol]
+                      | #int200  ( Int )                        [klabel(abi_type_int200),  symbol]
+                      | #int192  ( Int )                        [klabel(abi_type_int192),  symbol]
+                      | #int184  ( Int )                        [klabel(abi_type_int184),  symbol]
+                      | #int176  ( Int )                        [klabel(abi_type_int176),  symbol]
+                      | #int168  ( Int )                        [klabel(abi_type_int168),  symbol]
+                      | #int160  ( Int )                        [klabel(abi_type_int160),  symbol]
+                      | #int152  ( Int )                        [klabel(abi_type_int152),  symbol]
+                      | #int144  ( Int )                        [klabel(abi_type_int144),  symbol]
+                      | #int136  ( Int )                        [klabel(abi_type_int136),  symbol]
+                      | #int128  ( Int )                        [klabel(abi_type_int128),  symbol]
+                      | #int120  ( Int )                        [klabel(abi_type_int120),  symbol]
+                      | #int112  ( Int )                        [klabel(abi_type_int112),  symbol]
+                      | #int104  ( Int )                        [klabel(abi_type_int104),  symbol]
+                      | #int96   ( Int )                        [klabel(abi_type_int96),   symbol]
+                      | #int88   ( Int )                        [klabel(abi_type_int88),   symbol]
+                      | #int80   ( Int )                        [klabel(abi_type_int80),   symbol]
+                      | #int72   ( Int )                        [klabel(abi_type_int72),   symbol]
+                      | #int64   ( Int )                        [klabel(abi_type_int64),   symbol]
+                      | #int56   ( Int )                        [klabel(abi_type_int56),   symbol]
+                      | #int48   ( Int )                        [klabel(abi_type_int48),   symbol]
+                      | #int40   ( Int )                        [klabel(abi_type_int40),   symbol]
+                      | #int32   ( Int )                        [klabel(abi_type_int32),   symbol]
+                      | #int24   ( Int )                        [klabel(abi_type_int24),   symbol]
+                      | #int16   ( Int )                        [klabel(abi_type_int16),   symbol]
+                      | #int8    ( Int )                        [klabel(abi_type_int8),    symbol]
+                      | #bytes1  ( Int )                        [klabel(abi_type_bytes1),  symbol]
+                      | #bytes2  ( Int )                        [klabel(abi_type_bytes2),  symbol]
+                      | #bytes3  ( Int )                        [klabel(abi_type_bytes3),  symbol]
+                      | #bytes4  ( Int )                        [klabel(abi_type_bytes4),  symbol]
+                      | #bytes5  ( Int )                        [klabel(abi_type_bytes5),  symbol]
+                      | #bytes6  ( Int )                        [klabel(abi_type_bytes6),  symbol]
+                      | #bytes7  ( Int )                        [klabel(abi_type_bytes7),  symbol]
+                      | #bytes8  ( Int )                        [klabel(abi_type_bytes8),  symbol]
+                      | #bytes9  ( Int )                        [klabel(abi_type_bytes9),  symbol]
+                      | #bytes10 ( Int )                        [klabel(abi_type_bytes10), symbol]
+                      | #bytes11 ( Int )                        [klabel(abi_type_bytes11), symbol]
+                      | #bytes12 ( Int )                        [klabel(abi_type_bytes12), symbol]
+                      | #bytes13 ( Int )                        [klabel(abi_type_bytes13), symbol]
+                      | #bytes14 ( Int )                        [klabel(abi_type_bytes14), symbol]
+                      | #bytes15 ( Int )                        [klabel(abi_type_bytes15), symbol]
+                      | #bytes16 ( Int )                        [klabel(abi_type_bytes16), symbol]
+                      | #bytes17 ( Int )                        [klabel(abi_type_bytes17), symbol]
+                      | #bytes18 ( Int )                        [klabel(abi_type_bytes18), symbol]
+                      | #bytes19 ( Int )                        [klabel(abi_type_bytes19), symbol]
+                      | #bytes20 ( Int )                        [klabel(abi_type_bytes20), symbol]
+                      | #bytes21 ( Int )                        [klabel(abi_type_bytes21), symbol]
+                      | #bytes22 ( Int )                        [klabel(abi_type_bytes22), symbol]
+                      | #bytes23 ( Int )                        [klabel(abi_type_bytes23), symbol]
+                      | #bytes24 ( Int )                        [klabel(abi_type_bytes24), symbol]
+                      | #bytes25 ( Int )                        [klabel(abi_type_bytes25), symbol]
+                      | #bytes26 ( Int )                        [klabel(abi_type_bytes26), symbol]
+                      | #bytes27 ( Int )                        [klabel(abi_type_bytes27), symbol]
+                      | #bytes28 ( Int )                        [klabel(abi_type_bytes28), symbol]
+                      | #bytes29 ( Int )                        [klabel(abi_type_bytes29), symbol]
+                      | #bytes30 ( Int )                        [klabel(abi_type_bytes30), symbol]
+                      | #bytes31 ( Int )                        [klabel(abi_type_bytes31), symbol]
+                      | #bytes32 ( Int )                        [klabel(abi_type_bytes32), symbol]
+                      | #bool    ( Int )                        [klabel(abi_type_bool),    symbol]
+                      | #bytes   ( Bytes )                      [klabel(abi_type_bytes),   symbol]
+                      | #string  ( String )                     [klabel(abi_type_string),  symbol]
+                      | #array   ( TypedArg , Int , TypedArgs ) [klabel(abi_type_array),   symbol]
+                      | #tuple   ( TypedArgs )                  [klabel(abi_type_tuple),   symbol]
+ // ----------------------------------------------------------------------------------------------
+
+    syntax TypedArgs ::= List{TypedArg, ","} [symbol(typedArgs)]
+ // ------------------------------------------------------------
+
+    syntax Bytes ::= #abiCallData ( String , TypedArgs ) [klabel(#abiCallData), function]
+ // -------------------------------------------------------------------------------------
+    rule #abiCallData( FNAME , ARGS ) => #signatureCallData(FNAME, ARGS) +Bytes #encodeArgs(ARGS)
+
+    syntax Bytes ::= #signatureCallData ( String, TypedArgs ) [klabel(#signatureCallData), function]
+ // ------------------------------------------------------------------------------------------------
+    rule #signatureCallData( FNAME , ARGS ) => #parseByteStack(substrString(Keccak256(String2Bytes(#generateSignature(FNAME, ARGS))), 0, 8))
+
+    syntax String ::= #generateSignature     ( String, TypedArgs ) [klabel(#generateSignature), function, total]
+                    | #generateSignatureArgs ( TypedArgs )         [klabel(#generateSignatureArgs),function, total]
+ // --------------------------------------------------------------------------------------------------------------
+    rule #generateSignature( FNAME , ARGS ) => FNAME +String "(" +String #generateSignatureArgs(ARGS) +String ")"
+
+    rule #generateSignatureArgs(.TypedArgs)                            => ""
+    rule #generateSignatureArgs(TARGA:TypedArg, .TypedArgs)            => #typeName(TARGA)
+    rule #generateSignatureArgs(TARGA:TypedArg, TARGB:TypedArg, TARGS) => #typeName(TARGA) +String "," +String #generateSignatureArgs(TARGB, TARGS)
+
+    syntax String ::= #typeName ( TypedArg ) [klabel(#typeName), function, total]
+ // -----------------------------------------------------------------------------
+    rule #typeName(   #address( _ )) => "address"
+
+    rule #typeName(   #uint256( _ )) => "uint256"
+    rule #typeName(   #uint248( _ )) => "uint248"
+    rule #typeName(   #uint240( _ )) => "uint240"
+    rule #typeName(   #uint232( _ )) => "uint232"
+    rule #typeName(   #uint224( _ )) => "uint224"
+    rule #typeName(   #uint216( _ )) => "uint216"
+    rule #typeName(   #uint208( _ )) => "uint208"
+    rule #typeName(   #uint200( _ )) => "uint200"
+    rule #typeName(   #uint192( _ )) => "uint192"
+    rule #typeName(   #uint184( _ )) => "uint184"
+    rule #typeName(   #uint176( _ )) => "uint176"
+    rule #typeName(   #uint168( _ )) => "uint168"
+    rule #typeName(   #uint160( _ )) => "uint160"
+    rule #typeName(   #uint152( _ )) => "uint152"
+    rule #typeName(   #uint144( _ )) => "uint144"
+    rule #typeName(   #uint136( _ )) => "uint136"
+    rule #typeName(   #uint128( _ )) => "uint128"
+    rule #typeName(   #uint120( _ )) => "uint120"
+    rule #typeName(   #uint112( _ )) => "uint112"
+    rule #typeName(   #uint104( _ )) => "uint104"
+    rule #typeName(   #uint96( _ )) => "uint96"
+    rule #typeName(   #uint88( _ )) => "uint88"
+    rule #typeName(   #uint80( _ )) => "uint80"
+    rule #typeName(   #uint72( _ )) => "uint72"
+    rule #typeName(   #uint64( _ )) => "uint64"
+    rule #typeName(   #uint56( _ )) => "uint56"
+    rule #typeName(   #uint48( _ )) => "uint48"
+    rule #typeName(   #uint40( _ )) => "uint40"
+    rule #typeName(   #uint32( _ )) => "uint32"
+    rule #typeName(   #uint24( _ )) => "uint24"
+    rule #typeName(   #uint16( _ )) => "uint16"
+    rule #typeName(   #uint8( _ )) => "uint8"
+
+    rule #typeName(   #int256( _ )) => "int256"
+    rule #typeName(   #int248( _ )) => "int248"
+    rule #typeName(   #int240( _ )) => "int240"
+    rule #typeName(   #int232( _ )) => "int232"
+    rule #typeName(   #int224( _ )) => "int224"
+    rule #typeName(   #int216( _ )) => "int216"
+    rule #typeName(   #int208( _ )) => "int208"
+    rule #typeName(   #int200( _ )) => "int200"
+    rule #typeName(   #int192( _ )) => "int192"
+    rule #typeName(   #int184( _ )) => "int184"
+    rule #typeName(   #int176( _ )) => "int176"
+    rule #typeName(   #int168( _ )) => "int168"
+    rule #typeName(   #int160( _ )) => "int160"
+    rule #typeName(   #int152( _ )) => "int152"
+    rule #typeName(   #int144( _ )) => "int144"
+    rule #typeName(   #int136( _ )) => "int136"
+    rule #typeName(   #int128( _ )) => "int128"
+    rule #typeName(   #int120( _ )) => "int120"
+    rule #typeName(   #int112( _ )) => "int112"
+    rule #typeName(   #int104( _ )) => "int104"
+    rule #typeName(    #int96( _ )) => "int96"
+    rule #typeName(    #int88( _ )) => "int88"
+    rule #typeName(    #int80( _ )) => "int80"
+    rule #typeName(    #int72( _ )) => "int72"
+    rule #typeName(    #int64( _ )) => "int64"
+    rule #typeName(    #int56( _ )) => "int56"
+    rule #typeName(    #int48( _ )) => "int48"
+    rule #typeName(    #int40( _ )) => "int40"
+    rule #typeName(    #int32( _ )) => "int32"
+    rule #typeName(    #int24( _ )) => "int24"
+    rule #typeName(    #int16( _ )) => "int16"
+    rule #typeName(     #int8( _ )) => "int8"
+
+    rule #typeName(    #bytes1( _ )) => "bytes1"
+    rule #typeName(    #bytes2( _ )) => "bytes2"
+    rule #typeName(    #bytes3( _ )) => "bytes3"
+    rule #typeName(    #bytes4( _ )) => "bytes4"
+    rule #typeName(    #bytes5( _ )) => "bytes5"
+    rule #typeName(    #bytes6( _ )) => "bytes6"
+    rule #typeName(    #bytes7( _ )) => "bytes7"
+    rule #typeName(    #bytes8( _ )) => "bytes8"
+    rule #typeName(    #bytes9( _ )) => "bytes9"
+    rule #typeName(   #bytes10( _ )) => "bytes10"
+    rule #typeName(   #bytes11( _ )) => "bytes11"
+    rule #typeName(   #bytes12( _ )) => "bytes12"
+    rule #typeName(   #bytes13( _ )) => "bytes13"
+    rule #typeName(   #bytes14( _ )) => "bytes14"
+    rule #typeName(   #bytes15( _ )) => "bytes15"
+    rule #typeName(   #bytes16( _ )) => "bytes16"
+    rule #typeName(   #bytes17( _ )) => "bytes17"
+    rule #typeName(   #bytes18( _ )) => "bytes18"
+    rule #typeName(   #bytes19( _ )) => "bytes19"
+    rule #typeName(   #bytes20( _ )) => "bytes20"
+    rule #typeName(   #bytes21( _ )) => "bytes21"
+    rule #typeName(   #bytes22( _ )) => "bytes22"
+    rule #typeName(   #bytes23( _ )) => "bytes23"
+    rule #typeName(   #bytes24( _ )) => "bytes24"
+    rule #typeName(   #bytes25( _ )) => "bytes25"
+    rule #typeName(   #bytes26( _ )) => "bytes26"
+    rule #typeName(   #bytes27( _ )) => "bytes27"
+    rule #typeName(   #bytes28( _ )) => "bytes28"
+    rule #typeName(   #bytes29( _ )) => "bytes29"
+    rule #typeName(   #bytes30( _ )) => "bytes30"
+    rule #typeName(   #bytes31( _ )) => "bytes31"
+    rule #typeName(   #bytes32( _ )) => "bytes32"
+
+    rule #typeName(      #bool( _ )) => "bool"
+
+    rule #typeName(     #bytes( _ )) => "bytes"
+
+    rule #typeName(    #string( _ )) => "string"
+
+    rule #typeName( #array(T, _, _)) => #typeName(T) +String "[]"
+
+    rule #typeName(    #tuple(ARGS)) => "(" +String #generateSignatureArgs(ARGS) +String ")"
+
+    syntax Bytes ::= #encodeArgs    ( TypedArgs )                       [klabel(#encodeArgs), function]
+    syntax Bytes ::= #encodeArgsAux ( TypedArgs , Int , Bytes , Bytes ) [klabel(#encodeArgsAux), function]
+ // ------------------------------------------------------------------------------------------------------
+    rule #encodeArgs(ARGS) => #encodeArgsAux(ARGS, #lenOfHeads(ARGS), .Bytes, .Bytes)
+
+    rule #encodeArgsAux(.TypedArgs, _:Int, HEADS, TAILS) => HEADS +Bytes TAILS
+
+    rule #encodeArgsAux((ARG, ARGS), OFFSET, HEADS, TAILS)
+        => #encodeArgsAux(ARGS, OFFSET, HEADS +Bytes #enc(ARG), TAILS)
+      requires #isStaticType(ARG)
+
+    rule #encodeArgsAux((ARG, ARGS), OFFSET, HEADS, TAILS)
+        => #encodeArgsAux(ARGS, OFFSET +Int #sizeOfDynamicType(ARG), HEADS +Bytes #enc(#uint256(OFFSET)), TAILS +Bytes #enc(ARG))
+      requires notBool(#isStaticType(ARG))
+
+

The #lenOfHeads is a recursive function used to calculate the space required for the 'head' of data structures in Solidity. +For most types, this is a fixed 32 bytes, except for static tuples, for which the length is the cumulative length of their contents.

+
    syntax Int ::= #lenOfHeads ( TypedArgs ) [klabel(#lenOfHeads), function, total]
+ // -------------------------------------------------------------------------------
+    rule #lenOfHeads(.TypedArgs) => 0
+    rule #lenOfHeads(ARG, ARGS)  => #lenOfHead(ARG) +Int #lenOfHeads(ARGS)
+
+    syntax Int ::= #lenOfHead ( TypedArg ) [klabel(#lenOfHead), function, total]
+ // ----------------------------------------------------------------------------
+    rule #lenOfHead( #tuple( ARGS )) => #lenOfHeads(ARGS) requires #isStaticType(#tuple(ARGS))
+    rule #lenOfHead(              _) => 32 [owise]
+
+

#isStaticType checks if a given TypedArg is a static type in order to determine if it has a fixed size.

+
    syntax Bool ::= #isStaticType ( TypedArg ) [klabel(#isStaticType), function, total]
+ // -----------------------------------------------------------------------------------
+    rule #isStaticType(    #bytes( _ )) => false
+    rule #isStaticType(   #string( _ )) => false
+    rule #isStaticType(#array(_, _, _)) => false
+    rule #isStaticType( #tuple( ARGS )) => notBool #hasDynamicType(ARGS)
+    rule #isStaticType(              _) => true                          [owise]
+
+    syntax Bool ::= #hasDynamicType(TypedArgs) [klabel(#hasDynamicType), function, total]
+ // -------------------------------------------------------------------------------------
+    rule #hasDynamicType(.TypedArgs) => false
+    rule #hasDynamicType(T, TS) => #hasDynamicType(TS) requires #isStaticType(T)
+    rule #hasDynamicType(T,  _) => true requires notBool #isStaticType(T)
+
+

#sizeOfDynamicType is used to calculate the size of a single dynamic TypedArg.

+
    +
  • for #bytes(BS) and #string(BS), the size is 32 bytes for the length prefix plus the size of the actual byte sequence, rounded up to the nearest multiple of 32.
  • +
  • for #tuple(ARGS), the size is 32 bytes for the length prefix plus the cumulative size of its elements.
  • +
  • for #array(T, N, _) that has elements of a static TypedArg T, the size is 32 * (1 + N),which accounts for 32 bytes for the length prefix and 32 bytes for each element.
  • +
  • for dynamic type arrays #array(T, N, ELEMS), the size is 32 * (1 + N + #sizeOfDynamicTypeList(ELEMS)).
  • +
+
    syntax Int ::= #sizeOfDynamicType ( TypedArg ) [klabel(#sizeOfDynamicType), function]
+ // -------------------------------------------------------------------------------------
+    rule #sizeOfDynamicType(     #bytes(BS)) => 32 +Int #ceil32(lengthBytes(BS))
+    rule #sizeOfDynamicType(    #string(BS)) => 32 +Int #ceil32(lengthBytes(String2Bytes(BS)))
+    rule #sizeOfDynamicType(   #tuple(ARGS)) => 32 +Int #sizeOfDynamicTypeList(ARGS)
+    rule #sizeOfDynamicType(#array(T, N, _)) => 32 *Int (1 +Int N)
+      requires #isStaticType(T)
+
+    rule #sizeOfDynamicType(#array(T, N, ELEMS)) => 32 *Int (1 +Int N +Int #sizeOfDynamicTypeList(ELEMS))
+      requires notBool #isStaticType(T)
+
+    syntax Int ::= #sizeOfDynamicTypeList ( TypedArgs ) [klabel(#sizeOfDynamicTypeList), function, total]
+ // -----------------------------------------------------------------------------------------------------
+    rule #sizeOfDynamicTypeList(TARG, TARGS) => #sizeOfDynamicType(TARG) +Int #sizeOfDynamicTypeList(TARGS)
+      requires notBool #isStaticType(TARG)
+
+    rule #sizeOfDynamicTypeList(TARG, TARGS) => #lenOfHead(TARG) +Int #sizeOfDynamicTypeList(TARGS)
+      requires #isStaticType(TARG)
+
+    rule #sizeOfDynamicTypeList(.TypedArgs) => 0
+
+    syntax Bytes ::= #enc ( TypedArg ) [klabel(#enc), function]
+ // -----------------------------------------------------------
+    // static Type
+    rule #enc(#address( DATA )) => #bufStrict(32, #getValue(#address( DATA )))
+
+    rule #enc(#uint256( DATA )) => #bufStrict(32, #getValue(#uint256( DATA )))
+    rule #enc(#uint248( DATA )) => #bufStrict(32, #getValue(#uint248( DATA )))
+    rule #enc(#uint240( DATA )) => #bufStrict(32, #getValue(#uint240( DATA )))
+    rule #enc(#uint232( DATA )) => #bufStrict(32, #getValue(#uint232( DATA )))
+    rule #enc(#uint224( DATA )) => #bufStrict(32, #getValue(#uint224( DATA )))
+    rule #enc(#uint216( DATA )) => #bufStrict(32, #getValue(#uint216( DATA )))
+    rule #enc(#uint208( DATA )) => #bufStrict(32, #getValue(#uint208( DATA )))
+    rule #enc(#uint200( DATA )) => #bufStrict(32, #getValue(#uint200( DATA )))
+    rule #enc(#uint192( DATA )) => #bufStrict(32, #getValue(#uint192( DATA )))
+    rule #enc(#uint184( DATA )) => #bufStrict(32, #getValue(#uint184( DATA )))
+    rule #enc(#uint176( DATA )) => #bufStrict(32, #getValue(#uint176( DATA )))
+    rule #enc(#uint168( DATA )) => #bufStrict(32, #getValue(#uint168( DATA )))
+    rule #enc(#uint160( DATA )) => #bufStrict(32, #getValue(#uint160( DATA )))
+    rule #enc(#uint152( DATA )) => #bufStrict(32, #getValue(#uint152( DATA )))
+    rule #enc(#uint144( DATA )) => #bufStrict(32, #getValue(#uint144( DATA )))
+    rule #enc(#uint136( DATA )) => #bufStrict(32, #getValue(#uint136( DATA )))
+    rule #enc(#uint128( DATA )) => #bufStrict(32, #getValue(#uint128( DATA )))
+    rule #enc(#uint120( DATA )) => #bufStrict(32, #getValue(#uint120( DATA )))
+    rule #enc(#uint112( DATA )) => #bufStrict(32, #getValue(#uint112( DATA )))
+    rule #enc(#uint104( DATA )) => #bufStrict(32, #getValue(#uint104( DATA )))
+    rule #enc( #uint96( DATA )) => #bufStrict(32, #getValue( #uint96( DATA )))
+    rule #enc( #uint88( DATA )) => #bufStrict(32, #getValue( #uint88( DATA )))
+    rule #enc( #uint80( DATA )) => #bufStrict(32, #getValue( #uint80( DATA )))
+    rule #enc( #uint72( DATA )) => #bufStrict(32, #getValue( #uint72( DATA )))
+    rule #enc( #uint64( DATA )) => #bufStrict(32, #getValue( #uint64( DATA )))
+    rule #enc( #uint56( DATA )) => #bufStrict(32, #getValue( #uint56( DATA )))
+    rule #enc( #uint48( DATA )) => #bufStrict(32, #getValue( #uint48( DATA )))
+    rule #enc( #uint40( DATA )) => #bufStrict(32, #getValue( #uint40( DATA )))
+    rule #enc( #uint32( DATA )) => #bufStrict(32, #getValue( #uint32( DATA )))
+    rule #enc( #uint24( DATA )) => #bufStrict(32, #getValue( #uint24( DATA )))
+    rule #enc( #uint16( DATA )) => #bufStrict(32, #getValue( #uint16( DATA )))
+    rule #enc(  #uint8( DATA )) => #bufStrict(32, #getValue(  #uint8( DATA )))
+
+    rule #enc(#int256( DATA )) => #bufStrict(32, #getValue(#int256( DATA )))
+    rule #enc(#int248( DATA )) => #bufStrict(32, #getValue(#int248( DATA )))
+    rule #enc(#int240( DATA )) => #bufStrict(32, #getValue(#int240( DATA )))
+    rule #enc(#int232( DATA )) => #bufStrict(32, #getValue(#int232( DATA )))
+    rule #enc(#int224( DATA )) => #bufStrict(32, #getValue(#int224( DATA )))
+    rule #enc(#int216( DATA )) => #bufStrict(32, #getValue(#int216( DATA )))
+    rule #enc(#int208( DATA )) => #bufStrict(32, #getValue(#int208( DATA )))
+    rule #enc(#int200( DATA )) => #bufStrict(32, #getValue(#int200( DATA )))
+    rule #enc(#int192( DATA )) => #bufStrict(32, #getValue(#int192( DATA )))
+    rule #enc(#int184( DATA )) => #bufStrict(32, #getValue(#int184( DATA )))
+    rule #enc(#int176( DATA )) => #bufStrict(32, #getValue(#int176( DATA )))
+    rule #enc(#int168( DATA )) => #bufStrict(32, #getValue(#int168( DATA )))
+    rule #enc(#int160( DATA )) => #bufStrict(32, #getValue(#int160( DATA )))
+    rule #enc(#int152( DATA )) => #bufStrict(32, #getValue(#int152( DATA )))
+    rule #enc(#int144( DATA )) => #bufStrict(32, #getValue(#int144( DATA )))
+    rule #enc(#int136( DATA )) => #bufStrict(32, #getValue(#int136( DATA )))
+    rule #enc(#int128( DATA )) => #bufStrict(32, #getValue(#int128( DATA )))
+    rule #enc(#int120( DATA )) => #bufStrict(32, #getValue(#int120( DATA )))
+    rule #enc(#int112( DATA )) => #bufStrict(32, #getValue(#int112( DATA )))
+    rule #enc(#int104( DATA )) => #bufStrict(32, #getValue(#int104( DATA )))
+    rule #enc( #int96( DATA )) => #bufStrict(32, #getValue( #int96( DATA )))
+    rule #enc( #int88( DATA )) => #bufStrict(32, #getValue( #int88( DATA )))
+    rule #enc( #int80( DATA )) => #bufStrict(32, #getValue( #int80( DATA )))
+    rule #enc( #int72( DATA )) => #bufStrict(32, #getValue( #int72( DATA )))
+    rule #enc( #int64( DATA )) => #bufStrict(32, #getValue( #int64( DATA )))
+    rule #enc( #int56( DATA )) => #bufStrict(32, #getValue( #int56( DATA )))
+    rule #enc( #int48( DATA )) => #bufStrict(32, #getValue( #int48( DATA )))
+    rule #enc( #int40( DATA )) => #bufStrict(32, #getValue( #int40( DATA )))
+    rule #enc( #int32( DATA )) => #bufStrict(32, #getValue( #int32( DATA )))
+    rule #enc( #int24( DATA )) => #bufStrict(32, #getValue( #int24( DATA )))
+    rule #enc( #int16( DATA )) => #bufStrict(32, #getValue( #int16( DATA )))
+    rule #enc(  #int8( DATA )) => #bufStrict(32, #getValue(  #int8( DATA )))
+
+    rule #enc(  #bytes1( DATA )) => #padRightToWidth(32, #bufStrict(1,  #getValue(#bytes1( DATA ))))
+    rule #enc(  #bytes2( DATA )) => #padRightToWidth(32, #bufStrict(2,  #getValue(#bytes2( DATA ))))
+    rule #enc(  #bytes3( DATA )) => #padRightToWidth(32, #bufStrict(3,  #getValue(#bytes3( DATA ))))
+    rule #enc(  #bytes4( DATA )) => #padRightToWidth(32, #bufStrict(4,  #getValue(#bytes4( DATA ))))
+    rule #enc(  #bytes5( DATA )) => #padRightToWidth(32, #bufStrict(5,  #getValue(#bytes5( DATA ))))
+    rule #enc(  #bytes6( DATA )) => #padRightToWidth(32, #bufStrict(6,  #getValue(#bytes6( DATA ))))
+    rule #enc(  #bytes7( DATA )) => #padRightToWidth(32, #bufStrict(7,  #getValue(#bytes7( DATA ))))
+    rule #enc(  #bytes8( DATA )) => #padRightToWidth(32, #bufStrict(8,  #getValue(#bytes8( DATA ))))
+    rule #enc(  #bytes9( DATA )) => #padRightToWidth(32, #bufStrict(9,  #getValue(#bytes9( DATA ))))
+    rule #enc( #bytes10( DATA )) => #padRightToWidth(32, #bufStrict(10, #getValue(#bytes10( DATA ))))
+    rule #enc( #bytes11( DATA )) => #padRightToWidth(32, #bufStrict(11, #getValue(#bytes11( DATA ))))
+    rule #enc( #bytes12( DATA )) => #padRightToWidth(32, #bufStrict(12, #getValue(#bytes12( DATA ))))
+    rule #enc( #bytes13( DATA )) => #padRightToWidth(32, #bufStrict(13, #getValue(#bytes13( DATA ))))
+    rule #enc( #bytes14( DATA )) => #padRightToWidth(32, #bufStrict(14, #getValue(#bytes14( DATA ))))
+    rule #enc( #bytes15( DATA )) => #padRightToWidth(32, #bufStrict(15, #getValue(#bytes15( DATA ))))
+    rule #enc( #bytes16( DATA )) => #padRightToWidth(32, #bufStrict(16, #getValue(#bytes16( DATA ))))
+    rule #enc( #bytes17( DATA )) => #padRightToWidth(32, #bufStrict(17, #getValue(#bytes17( DATA ))))
+    rule #enc( #bytes18( DATA )) => #padRightToWidth(32, #bufStrict(18, #getValue(#bytes18( DATA ))))
+    rule #enc( #bytes19( DATA )) => #padRightToWidth(32, #bufStrict(19, #getValue(#bytes19( DATA ))))
+    rule #enc( #bytes20( DATA )) => #padRightToWidth(32, #bufStrict(20, #getValue(#bytes20( DATA ))))
+    rule #enc( #bytes21( DATA )) => #padRightToWidth(32, #bufStrict(21, #getValue(#bytes21( DATA ))))
+    rule #enc( #bytes22( DATA )) => #padRightToWidth(32, #bufStrict(22, #getValue(#bytes22( DATA ))))
+    rule #enc( #bytes23( DATA )) => #padRightToWidth(32, #bufStrict(23, #getValue(#bytes23( DATA ))))
+    rule #enc( #bytes24( DATA )) => #padRightToWidth(32, #bufStrict(24, #getValue(#bytes24( DATA ))))
+    rule #enc( #bytes25( DATA )) => #padRightToWidth(32, #bufStrict(25, #getValue(#bytes25( DATA ))))
+    rule #enc( #bytes26( DATA )) => #padRightToWidth(32, #bufStrict(26, #getValue(#bytes26( DATA ))))
+    rule #enc( #bytes27( DATA )) => #padRightToWidth(32, #bufStrict(27, #getValue(#bytes27( DATA ))))
+    rule #enc( #bytes28( DATA )) => #padRightToWidth(32, #bufStrict(28, #getValue(#bytes28( DATA ))))
+    rule #enc( #bytes29( DATA )) => #padRightToWidth(32, #bufStrict(29, #getValue(#bytes29( DATA ))))
+    rule #enc( #bytes30( DATA )) => #padRightToWidth(32, #bufStrict(30, #getValue(#bytes30( DATA ))))
+    rule #enc( #bytes31( DATA )) => #padRightToWidth(32, #bufStrict(31, #getValue(#bytes31( DATA ))))
+    rule #enc( #bytes32( DATA )) => #bufStrict(32, #getValue(#bytes32( DATA )))
+
+    rule #enc(   #bool( DATA )) => #bufStrict(32, #getValue(   #bool( DATA )))
+
+    // dynamic Type
+    // length of `bytes` variables is hardcoded to be <= 1 Gb; this can be adjusted to reflect real-world on-chain constraints
+    rule #enc(        #bytes(BS)) => #encBytes(lengthBytes(BS), BS) ensures lengthBytes(BS) <=Int 1073741824
+    rule #enc(      #string(STR)) => #enc(#bytes(String2Bytes(STR)))
+    rule #enc(#array(_, N, DATA)) => #enc(#uint256(N)) +Bytes #encodeArgs(DATA)
+    rule #enc(    #tuple( DATA )) => #encodeArgs(DATA)
+
+    syntax Bytes ::= #encBytes ( Int , Bytes ) [klabel(#encBytes), function]
+ // ------------------------------------------------------------------------
+    rule #encBytes(N, BS) => #enc(#uint256(N)) +Bytes BS +Bytes #bufStrict(#ceil32(N) -Int N, 0)
+
+
    syntax Int ::= #getValue ( TypedArg ) [klabel(#getValue), function]
+ // -------------------------------------------------------------------
+    rule #getValue(   #bool( X )) => X       requires #rangeBool(X)
+
+    rule #getValue(#address( X )) => X       requires #rangeAddress(X)
+
+    rule #getValue(  #uint8( X )) => X       requires #rangeUInt(8,   X)
+    rule #getValue( #uint16( X )) => X       requires #rangeUInt(16,  X)
+    rule #getValue( #uint24( X )) => X       requires #rangeUInt(24,  X)
+    rule #getValue( #uint32( X )) => X       requires #rangeUInt(32,  X)
+    rule #getValue( #uint40( X )) => X       requires #rangeUInt(40,  X)
+    rule #getValue( #uint48( X )) => X       requires #rangeUInt(48,  X)
+    rule #getValue( #uint56( X )) => X       requires #rangeUInt(56,  X)
+    rule #getValue( #uint64( X )) => X       requires #rangeUInt(64,  X)
+    rule #getValue( #uint72( X )) => X       requires #rangeUInt(72,  X)
+    rule #getValue( #uint80( X )) => X       requires #rangeUInt(80,  X)
+    rule #getValue( #uint88( X )) => X       requires #rangeUInt(88,  X)
+    rule #getValue( #uint96( X )) => X       requires #rangeUInt(96,  X)
+    rule #getValue(#uint104( X )) => X       requires #rangeUInt(104, X)
+    rule #getValue(#uint112( X )) => X       requires #rangeUInt(112, X)
+    rule #getValue(#uint120( X )) => X       requires #rangeUInt(120, X)
+    rule #getValue(#uint128( X )) => X       requires #rangeUInt(128, X)
+    rule #getValue(#uint136( X )) => X       requires #rangeUInt(136, X)
+    rule #getValue(#uint144( X )) => X       requires #rangeUInt(144, X)
+    rule #getValue(#uint152( X )) => X       requires #rangeUInt(152, X)
+    rule #getValue(#uint160( X )) => X       requires #rangeUInt(160, X)
+    rule #getValue(#uint168( X )) => X       requires #rangeUInt(168, X)
+    rule #getValue(#uint176( X )) => X       requires #rangeUInt(176, X)
+    rule #getValue(#uint184( X )) => X       requires #rangeUInt(184, X)
+    rule #getValue(#uint192( X )) => X       requires #rangeUInt(192, X)
+    rule #getValue(#uint200( X )) => X       requires #rangeUInt(200, X)
+    rule #getValue(#uint208( X )) => X       requires #rangeUInt(208, X)
+    rule #getValue(#uint216( X )) => X       requires #rangeUInt(216, X)
+    rule #getValue(#uint224( X )) => X       requires #rangeUInt(224, X)
+    rule #getValue(#uint232( X )) => X       requires #rangeUInt(232, X)
+    rule #getValue(#uint240( X )) => X       requires #rangeUInt(240, X)
+    rule #getValue(#uint248( X )) => X       requires #rangeUInt(248, X)
+    rule #getValue(#uint256( X )) => X       requires #rangeUInt(256, X)
+
+    rule #getValue(   #int8( X )) => chop(X) requires #rangeSInt(8,   X)
+    rule #getValue(  #int16( X )) => chop(X) requires #rangeSInt(16,  X)
+    rule #getValue(  #int24( X )) => chop(X) requires #rangeSInt(24,  X)
+    rule #getValue(  #int32( X )) => chop(X) requires #rangeSInt(32,  X)
+    rule #getValue(  #int40( X )) => chop(X) requires #rangeSInt(40,  X)
+    rule #getValue(  #int48( X )) => chop(X) requires #rangeSInt(48,  X)
+    rule #getValue(  #int56( X )) => chop(X) requires #rangeSInt(56,  X)
+    rule #getValue(  #int64( X )) => chop(X) requires #rangeSInt(64,  X)
+    rule #getValue(  #int72( X )) => chop(X) requires #rangeSInt(72,  X)
+    rule #getValue(  #int80( X )) => chop(X) requires #rangeSInt(80,  X)
+    rule #getValue(  #int88( X )) => chop(X) requires #rangeSInt(88,  X)
+    rule #getValue(  #int96( X )) => chop(X) requires #rangeSInt(96,  X)
+    rule #getValue( #int104( X )) => chop(X) requires #rangeSInt(104, X)
+    rule #getValue( #int112( X )) => chop(X) requires #rangeSInt(112, X)
+    rule #getValue( #int120( X )) => chop(X) requires #rangeSInt(120, X)
+    rule #getValue( #int128( X )) => chop(X) requires #rangeSInt(128, X)
+    rule #getValue( #int136( X )) => chop(X) requires #rangeSInt(136, X)
+    rule #getValue( #int144( X )) => chop(X) requires #rangeSInt(144, X)
+    rule #getValue( #int152( X )) => chop(X) requires #rangeSInt(152, X)
+    rule #getValue( #int160( X )) => chop(X) requires #rangeSInt(160, X)
+    rule #getValue( #int168( X )) => chop(X) requires #rangeSInt(168, X)
+    rule #getValue( #int176( X )) => chop(X) requires #rangeSInt(176, X)
+    rule #getValue( #int184( X )) => chop(X) requires #rangeSInt(184, X)
+    rule #getValue( #int192( X )) => chop(X) requires #rangeSInt(192, X)
+    rule #getValue( #int200( X )) => chop(X) requires #rangeSInt(200, X)
+    rule #getValue( #int208( X )) => chop(X) requires #rangeSInt(208, X)
+    rule #getValue( #int216( X )) => chop(X) requires #rangeSInt(216, X)
+    rule #getValue( #int224( X )) => chop(X) requires #rangeSInt(224, X)
+    rule #getValue( #int232( X )) => chop(X) requires #rangeSInt(232, X)
+    rule #getValue( #int240( X )) => chop(X) requires #rangeSInt(240, X)
+    rule #getValue( #int248( X )) => chop(X) requires #rangeSInt(248, X)
+    rule #getValue( #int256( X )) => chop(X) requires #rangeSInt(256, X)
+
+    rule #getValue( #bytes1( X )) => X       requires #rangeUInt(8,   X)
+    rule #getValue( #bytes2( X )) => X       requires #rangeUInt(16,  X)
+    rule #getValue( #bytes3( X )) => X       requires #rangeUInt(24,  X)
+    rule #getValue( #bytes4( X )) => X       requires #rangeUInt(32,  X)
+    rule #getValue( #bytes5( X )) => X       requires #rangeUInt(40,  X)
+    rule #getValue( #bytes6( X )) => X       requires #rangeUInt(48,  X)
+    rule #getValue( #bytes7( X )) => X       requires #rangeUInt(56,  X)
+    rule #getValue( #bytes8( X )) => X       requires #rangeUInt(64,  X)
+    rule #getValue( #bytes9( X )) => X       requires #rangeUInt(72,  X)
+    rule #getValue( #bytes10( X )) => X      requires #rangeUInt(80,  X)
+    rule #getValue( #bytes11( X )) => X      requires #rangeUInt(88,  X)
+    rule #getValue( #bytes12( X )) => X      requires #rangeUInt(96,  X)
+    rule #getValue( #bytes13( X )) => X      requires #rangeUInt(104, X)
+    rule #getValue( #bytes14( X )) => X      requires #rangeUInt(112, X)
+    rule #getValue( #bytes15( X )) => X      requires #rangeUInt(120, X)
+    rule #getValue( #bytes16( X )) => X      requires #rangeUInt(128, X)
+    rule #getValue( #bytes17( X )) => X      requires #rangeUInt(136, X)
+    rule #getValue( #bytes18( X )) => X      requires #rangeUInt(144, X)
+    rule #getValue( #bytes19( X )) => X      requires #rangeUInt(152, X)
+    rule #getValue( #bytes20( X )) => X      requires #rangeUInt(160, X)
+    rule #getValue( #bytes21( X )) => X      requires #rangeUInt(168, X)
+    rule #getValue( #bytes22( X )) => X      requires #rangeUInt(176, X)
+    rule #getValue( #bytes23( X )) => X      requires #rangeUInt(184, X)
+    rule #getValue( #bytes24( X )) => X      requires #rangeUInt(192, X)
+    rule #getValue( #bytes25( X )) => X      requires #rangeUInt(200, X)
+    rule #getValue( #bytes26( X )) => X      requires #rangeUInt(208, X)
+    rule #getValue( #bytes27( X )) => X      requires #rangeUInt(216, X)
+    rule #getValue( #bytes28( X )) => X      requires #rangeUInt(224, X)
+    rule #getValue( #bytes29( X )) => X      requires #rangeUInt(232, X)
+    rule #getValue( #bytes30( X )) => X      requires #rangeUInt(240, X)
+    rule #getValue( #bytes31( X )) => X      requires #rangeUInt(248, X)
+    rule #getValue( #bytes32( X )) => X      requires #rangeUInt(256, X)
+
+

ABI Event Logs

+

EVM logs are special data structures in the blockchain, being searchable by off-chain clients. +Events are high-level wrappers of the EVM logs provided in the high-level languages. +Contracts can declare and generate the events, which will be compiled down to the EVM bytecode using the EVM log instructions. +The encoding scheme of the events in the EVM logs is defined in the Ethereum contract application binary interface (ABI) specification, leveraging the ABI call data encoding scheme.

+

The eDSL provides #abiEventLog, a notation to specify the EVM logs in the high-level events, defined below. +It specifies the contract account address, the event name, and the event arguments. +For example, the following notation represents an EVM log data that encodes the Transfer event generated by the transfer function, where ACCT_ID is the account address, and CALLER_ID, TO_ID, and VALUE are the event arguments. +Each argument is tagged with its ABI type (#address or #uint256), and the indexed attribute (#indexed) if any, according to the event declaration in the contract.

+
  #abiEventLog(ACCT_ID, "Transfer", #indexed(#address(CALLER_ID)), #indexed(#address(TO_ID)), #uint256(VALUE))
+
+

The above notation denotes (i.e., is translated to) the following EVM log data structure:

+
  { ACCT_ID                                                                                                                                                                                                                                                  | |`
+  | 100389287136786176327247604509743168900146139575972864366142685224231313322991
+  : CALLER_ID                                                                                                                                                                                                                                                |/|
+  : TO_ID                                                                                                                                                                                                                                                    | |
+  : .WordStack                                                                                                                                                                                                                                               | |
+  | #bufStrict(32, VALUE)                                                                                                                                                                                                                           | |
+  }
+
+

where 100389287136786176327247604509743168900146139575972864366142685224231313322991 is the hash value of the event signature, keccak256("Transfer(address,address,unit256)").

+
    syntax EventArg ::= TypedArg
+                      | #indexed ( TypedArg ) [klabel(#indexed)]
+ // ------------------------------------------------------------
+
+    syntax EventArgs ::= List{EventArg, ","} [symbol(eventArgs)]
+ // ------------------------------------------------------------
+
+    syntax SubstateLogEntry ::= #abiEventLog ( Int , String , EventArgs ) [klabel(#abiEventLog), function]
+ // ------------------------------------------------------------------------------------------------------
+    rule #abiEventLog(ACCT_ID, EVENT_NAME, EVENT_ARGS)
+      => { ACCT_ID | #getEventTopics(EVENT_NAME, EVENT_ARGS) | #encodeArgs(#getNonIndexedArgs(EVENT_ARGS)) }
+
+    syntax List ::= #getEventTopics ( String , EventArgs ) [klabel(#getEventTopics), function]
+ // ------------------------------------------------------------------------------------------
+    rule #getEventTopics(ENAME, EARGS)
+      => ListItem(#parseHexWord(Keccak256(String2Bytes(#generateSignature(ENAME, #getTypedArgs(EARGS))))))
+         #getIndexedArgs(EARGS)
+
+    syntax TypedArgs ::= #getTypedArgs ( EventArgs ) [klabel(#getTypedArgs), function]
+ // ----------------------------------------------------------------------------------
+    rule #getTypedArgs(#indexed(E), ES) => E, #getTypedArgs(ES)
+    rule #getTypedArgs(E:TypedArg,  ES) => E, #getTypedArgs(ES)
+    rule #getTypedArgs(.EventArgs)      => .TypedArgs
+
+    syntax List ::= #getIndexedArgs ( EventArgs ) [klabel(#getIndexedArgs), function]
+ // ---------------------------------------------------------------------------------
+    rule #getIndexedArgs(#indexed(E), ES) => ListItem(#getValue(E)) #getIndexedArgs(ES)
+    rule #getIndexedArgs(_:TypedArg,  ES) =>                        #getIndexedArgs(ES)
+    rule #getIndexedArgs(.EventArgs)      => .List
+
+    syntax TypedArgs ::= #getNonIndexedArgs ( EventArgs ) [klabel(#getNonIndexedArgs), function]
+ // --------------------------------------------------------------------------------------------
+    rule #getNonIndexedArgs(#indexed(_), ES) =>    #getNonIndexedArgs(ES)
+    rule #getNonIndexedArgs(E:TypedArg,  ES) => E, #getNonIndexedArgs(ES)
+    rule #getNonIndexedArgs(.EventArgs)      => .TypedArgs
+
+

Function selectors

+
    syntax Int ::= selector ( String ) [alias, klabel(abi_selector), symbol, function, no-evaluators]
+ // -------------------------------------------------------------------------------------------------
+
+
endmodule
+
+
+
+ + +
+ + + +
+
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/asm.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/asm.md deleted file mode 100644 index 650250c8e4..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/asm.md +++ /dev/null @@ -1,203 +0,0 @@ -Ethereum Assembler -================== - -This file contains an assembler from EVM opcodes to byte strings. - -Note that due to the design of EVM, which depends on the binary representation of a smart contract, it is **not** the case that disassembling and then reassembling the same contract will yield the same sequence of bytes. -As a simple counterexample, consider the contract `0x60`. -Disassembling and then reassembling this contract will yield `0x6000`. - -As such, assembly is not considered part of the semantics of EVM, but is provided merely as a sample implementation to ease readability and make it easier to write inputs to the KEVM semantics. - -```k -module EVM-ASSEMBLY - imports EVM - - syntax OpCode ::= PUSH(Int, Int) [klabel(PUSHAsm)] - // -------------------------------------------------- -``` - -### Program Structure - -Cons-lists of opcodes form programs (using cons operator `_;_`). -Operator `#revOps` can be used to reverse a program. - -```k - syntax OpCodes ::= ".OpCodes" | OpCode ";" OpCodes - // -------------------------------------------------- - - syntax OpCodes ::= #revOps ( OpCodes ) [klabel(#revOps), function] - | #revOpsAux ( OpCodes , OpCodes ) [klabel(#revOpsAux), function] - // ---------------------------------------------------------------------------------- - rule #revOps(OPS) => #revOpsAux(OPS, .OpCodes) - - rule #revOpsAux( .OpCodes , OPS' ) => OPS' - rule #revOpsAux( OP ; OPS , OPS' ) => #revOpsAux( OPS , OP ; OPS' ) -``` - -```k - syntax Bytes ::= #asmOpCodes ( OpCodes ) [klabel(#asmOpCodes), function] - // ------------------------------------------------------------------------ -``` - -```k - syntax Bytes ::= #asmOpCodes ( OpCodes, StringBuffer ) [function, klabel(#asmOpCodesAux)] - // ----------------------------------------------------------------------------------------- - rule #asmOpCodes( OPS ) => #asmOpCodes(OPS, .StringBuffer) - - rule #asmOpCodes( PUSH(N, W) ; OCS, SB ) => #asmOpCodes(OCS, (SB +String chrChar(#asmOpCode(PUSH(N)))) +String Bytes2String(Int2Bytes(N, W, BE))) - rule #asmOpCodes( OP ; OCS, SB ) => #asmOpCodes(OCS, SB +String chrChar(#asmOpCode(OP))) [owise] - rule #asmOpCodes( .OpCodes, SB ) => String2Bytes(StringBuffer2String(SB)) -``` - -```k - syntax Int ::= #asmOpCode ( OpCode ) [klabel(#asmOpCode), function] - // ------------------------------------------------------------------- - rule #asmOpCode( STOP ) => 0 - rule #asmOpCode( ADD ) => 1 - rule #asmOpCode( MUL ) => 2 - rule #asmOpCode( SUB ) => 3 - rule #asmOpCode( DIV ) => 4 - rule #asmOpCode( SDIV ) => 5 - rule #asmOpCode( MOD ) => 6 - rule #asmOpCode( SMOD ) => 7 - rule #asmOpCode( ADDMOD ) => 8 - rule #asmOpCode( MULMOD ) => 9 - rule #asmOpCode( EXP ) => 10 - rule #asmOpCode( SIGNEXTEND ) => 11 - rule #asmOpCode( LT ) => 16 - rule #asmOpCode( GT ) => 17 - rule #asmOpCode( SLT ) => 18 - rule #asmOpCode( SGT ) => 19 - rule #asmOpCode( EQ ) => 20 - rule #asmOpCode( ISZERO ) => 21 - rule #asmOpCode( AND ) => 22 - rule #asmOpCode( EVMOR ) => 23 - rule #asmOpCode( XOR ) => 24 - rule #asmOpCode( NOT ) => 25 - rule #asmOpCode( BYTE ) => 26 - rule #asmOpCode( SHL ) => 27 - rule #asmOpCode( SHR ) => 28 - rule #asmOpCode( SAR ) => 29 - rule #asmOpCode( SHA3 ) => 32 - rule #asmOpCode( ADDRESS ) => 48 - rule #asmOpCode( BALANCE ) => 49 - rule #asmOpCode( ORIGIN ) => 50 - rule #asmOpCode( CALLER ) => 51 - rule #asmOpCode( CALLVALUE ) => 52 - rule #asmOpCode( CALLDATALOAD ) => 53 - rule #asmOpCode( CALLDATASIZE ) => 54 - rule #asmOpCode( CALLDATACOPY ) => 55 - rule #asmOpCode( CODESIZE ) => 56 - rule #asmOpCode( CODECOPY ) => 57 - rule #asmOpCode( GASPRICE ) => 58 - rule #asmOpCode( EXTCODESIZE ) => 59 - rule #asmOpCode( EXTCODECOPY ) => 60 - rule #asmOpCode( RETURNDATASIZE ) => 61 - rule #asmOpCode( RETURNDATACOPY ) => 62 - rule #asmOpCode( EXTCODEHASH ) => 63 - rule #asmOpCode( BLOCKHASH ) => 64 - rule #asmOpCode( COINBASE ) => 65 - rule #asmOpCode( TIMESTAMP ) => 66 - rule #asmOpCode( NUMBER ) => 67 - rule #asmOpCode( DIFFICULTY ) => 68 - rule #asmOpCode( PREVRANDAO ) => 68 - rule #asmOpCode( GASLIMIT ) => 69 - rule #asmOpCode( CHAINID ) => 70 - rule #asmOpCode( SELFBALANCE ) => 71 - rule #asmOpCode( POP ) => 80 - rule #asmOpCode( MLOAD ) => 81 - rule #asmOpCode( MSTORE ) => 82 - rule #asmOpCode( MSTORE8 ) => 83 - rule #asmOpCode( SLOAD ) => 84 - rule #asmOpCode( SSTORE ) => 85 - rule #asmOpCode( JUMP ) => 86 - rule #asmOpCode( JUMPI ) => 87 - rule #asmOpCode( PC ) => 88 - rule #asmOpCode( MSIZE ) => 89 - rule #asmOpCode( GAS ) => 90 - rule #asmOpCode( JUMPDEST ) => 91 - rule #asmOpCode( PUSHZERO ) => 95 - rule #asmOpCode( PUSH(1) ) => 96 - rule #asmOpCode( PUSH(2) ) => 97 - rule #asmOpCode( PUSH(3) ) => 98 - rule #asmOpCode( PUSH(4) ) => 99 - rule #asmOpCode( PUSH(5) ) => 100 - rule #asmOpCode( PUSH(6) ) => 101 - rule #asmOpCode( PUSH(7) ) => 102 - rule #asmOpCode( PUSH(8) ) => 103 - rule #asmOpCode( PUSH(9) ) => 104 - rule #asmOpCode( PUSH(10) ) => 105 - rule #asmOpCode( PUSH(11) ) => 106 - rule #asmOpCode( PUSH(12) ) => 107 - rule #asmOpCode( PUSH(13) ) => 108 - rule #asmOpCode( PUSH(14) ) => 109 - rule #asmOpCode( PUSH(15) ) => 110 - rule #asmOpCode( PUSH(16) ) => 111 - rule #asmOpCode( PUSH(17) ) => 112 - rule #asmOpCode( PUSH(18) ) => 113 - rule #asmOpCode( PUSH(19) ) => 114 - rule #asmOpCode( PUSH(20) ) => 115 - rule #asmOpCode( PUSH(21) ) => 116 - rule #asmOpCode( PUSH(22) ) => 117 - rule #asmOpCode( PUSH(23) ) => 118 - rule #asmOpCode( PUSH(24) ) => 119 - rule #asmOpCode( PUSH(25) ) => 120 - rule #asmOpCode( PUSH(26) ) => 121 - rule #asmOpCode( PUSH(27) ) => 122 - rule #asmOpCode( PUSH(28) ) => 123 - rule #asmOpCode( PUSH(29) ) => 124 - rule #asmOpCode( PUSH(30) ) => 125 - rule #asmOpCode( PUSH(31) ) => 126 - rule #asmOpCode( PUSH(32) ) => 127 - rule #asmOpCode( DUP(1) ) => 128 - rule #asmOpCode( DUP(2) ) => 129 - rule #asmOpCode( DUP(3) ) => 130 - rule #asmOpCode( DUP(4) ) => 131 - rule #asmOpCode( DUP(5) ) => 132 - rule #asmOpCode( DUP(6) ) => 133 - rule #asmOpCode( DUP(7) ) => 134 - rule #asmOpCode( DUP(8) ) => 135 - rule #asmOpCode( DUP(9) ) => 136 - rule #asmOpCode( DUP(10) ) => 137 - rule #asmOpCode( DUP(11) ) => 138 - rule #asmOpCode( DUP(12) ) => 139 - rule #asmOpCode( DUP(13) ) => 140 - rule #asmOpCode( DUP(14) ) => 141 - rule #asmOpCode( DUP(15) ) => 142 - rule #asmOpCode( DUP(16) ) => 143 - rule #asmOpCode( SWAP(1) ) => 144 - rule #asmOpCode( SWAP(2) ) => 145 - rule #asmOpCode( SWAP(3) ) => 146 - rule #asmOpCode( SWAP(4) ) => 147 - rule #asmOpCode( SWAP(5) ) => 148 - rule #asmOpCode( SWAP(6) ) => 149 - rule #asmOpCode( SWAP(7) ) => 150 - rule #asmOpCode( SWAP(8) ) => 151 - rule #asmOpCode( SWAP(9) ) => 152 - rule #asmOpCode( SWAP(10) ) => 153 - rule #asmOpCode( SWAP(11) ) => 154 - rule #asmOpCode( SWAP(12) ) => 155 - rule #asmOpCode( SWAP(13) ) => 156 - rule #asmOpCode( SWAP(14) ) => 157 - rule #asmOpCode( SWAP(15) ) => 158 - rule #asmOpCode( SWAP(16) ) => 159 - rule #asmOpCode( LOG(0) ) => 160 - rule #asmOpCode( LOG(1) ) => 161 - rule #asmOpCode( LOG(2) ) => 162 - rule #asmOpCode( LOG(3) ) => 163 - rule #asmOpCode( LOG(4) ) => 164 - rule #asmOpCode( CREATE ) => 240 - rule #asmOpCode( CALL ) => 241 - rule #asmOpCode( CALLCODE ) => 242 - rule #asmOpCode( RETURN ) => 243 - rule #asmOpCode( DELEGATECALL ) => 244 - rule #asmOpCode( CREATE2 ) => 245 - rule #asmOpCode( STATICCALL ) => 250 - rule #asmOpCode( REVERT ) => 253 - rule #asmOpCode( INVALID ) => 254 - rule #asmOpCode( SELFDESTRUCT ) => 255 - rule #asmOpCode( UNDEFINED(W) ) => W - -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/asm/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/asm/index.html new file mode 100644 index 0000000000..056828b201 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/asm/index.html @@ -0,0 +1,377 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Ethereum Assembler

+

This file contains an assembler from EVM opcodes to byte strings.

+

Note that due to the design of EVM, which depends on the binary representation of a smart contract, it is not the case that disassembling and then reassembling the same contract will yield the same sequence of bytes. +As a simple counterexample, consider the contract 0x60. +Disassembling and then reassembling this contract will yield 0x6000.

+

As such, assembly is not considered part of the semantics of EVM, but is provided merely as a sample implementation to ease readability and make it easier to write inputs to the KEVM semantics.

+
module EVM-ASSEMBLY
+    imports EVM
+
+    syntax OpCode ::= PUSH(Int, Int) [klabel(PUSHAsm)]
+ // --------------------------------------------------
+
+

Program Structure

+

Cons-lists of opcodes form programs (using cons operator _;_). +Operator #revOps can be used to reverse a program.

+
    syntax OpCodes ::= ".OpCodes" | OpCode ";" OpCodes
+ // --------------------------------------------------
+
+    syntax OpCodes ::= #revOps    ( OpCodes )           [klabel(#revOps), function]
+                     | #revOpsAux ( OpCodes , OpCodes ) [klabel(#revOpsAux), function]
+ // ----------------------------------------------------------------------------------
+    rule #revOps(OPS) => #revOpsAux(OPS, .OpCodes)
+
+    rule #revOpsAux( .OpCodes , OPS' ) => OPS'
+    rule #revOpsAux( OP ; OPS , OPS' ) => #revOpsAux( OPS , OP ; OPS' )
+
+
    syntax Bytes ::= #asmOpCodes ( OpCodes ) [klabel(#asmOpCodes), function]
+ // ------------------------------------------------------------------------
+
+
    syntax Bytes ::= #asmOpCodes ( OpCodes, StringBuffer ) [function, klabel(#asmOpCodesAux)]
+ // -----------------------------------------------------------------------------------------
+    rule #asmOpCodes( OPS ) => #asmOpCodes(OPS, .StringBuffer)
+
+    rule #asmOpCodes( PUSH(N, W) ; OCS, SB ) => #asmOpCodes(OCS, (SB +String chrChar(#asmOpCode(PUSH(N)))) +String Bytes2String(Int2Bytes(N, W, BE)))
+    rule #asmOpCodes( OP ; OCS, SB ) => #asmOpCodes(OCS, SB +String chrChar(#asmOpCode(OP))) [owise]
+    rule #asmOpCodes( .OpCodes, SB ) => String2Bytes(StringBuffer2String(SB))
+
+
    syntax Int ::= #asmOpCode ( OpCode ) [klabel(#asmOpCode), function]
+ // -------------------------------------------------------------------
+    rule #asmOpCode( STOP           ) =>   0
+    rule #asmOpCode( ADD            ) =>   1
+    rule #asmOpCode( MUL            ) =>   2
+    rule #asmOpCode( SUB            ) =>   3
+    rule #asmOpCode( DIV            ) =>   4
+    rule #asmOpCode( SDIV           ) =>   5
+    rule #asmOpCode( MOD            ) =>   6
+    rule #asmOpCode( SMOD           ) =>   7
+    rule #asmOpCode( ADDMOD         ) =>   8
+    rule #asmOpCode( MULMOD         ) =>   9
+    rule #asmOpCode( EXP            ) =>  10
+    rule #asmOpCode( SIGNEXTEND     ) =>  11
+    rule #asmOpCode( LT             ) =>  16
+    rule #asmOpCode( GT             ) =>  17
+    rule #asmOpCode( SLT            ) =>  18
+    rule #asmOpCode( SGT            ) =>  19
+    rule #asmOpCode( EQ             ) =>  20
+    rule #asmOpCode( ISZERO         ) =>  21
+    rule #asmOpCode( AND            ) =>  22
+    rule #asmOpCode( EVMOR          ) =>  23
+    rule #asmOpCode( XOR            ) =>  24
+    rule #asmOpCode( NOT            ) =>  25
+    rule #asmOpCode( BYTE           ) =>  26
+    rule #asmOpCode( SHL            ) =>  27
+    rule #asmOpCode( SHR            ) =>  28
+    rule #asmOpCode( SAR            ) =>  29
+    rule #asmOpCode( SHA3           ) =>  32
+    rule #asmOpCode( ADDRESS        ) =>  48
+    rule #asmOpCode( BALANCE        ) =>  49
+    rule #asmOpCode( ORIGIN         ) =>  50
+    rule #asmOpCode( CALLER         ) =>  51
+    rule #asmOpCode( CALLVALUE      ) =>  52
+    rule #asmOpCode( CALLDATALOAD   ) =>  53
+    rule #asmOpCode( CALLDATASIZE   ) =>  54
+    rule #asmOpCode( CALLDATACOPY   ) =>  55
+    rule #asmOpCode( CODESIZE       ) =>  56
+    rule #asmOpCode( CODECOPY       ) =>  57
+    rule #asmOpCode( GASPRICE       ) =>  58
+    rule #asmOpCode( EXTCODESIZE    ) =>  59
+    rule #asmOpCode( EXTCODECOPY    ) =>  60
+    rule #asmOpCode( RETURNDATASIZE ) =>  61
+    rule #asmOpCode( RETURNDATACOPY ) =>  62
+    rule #asmOpCode( EXTCODEHASH    ) =>  63
+    rule #asmOpCode( BLOCKHASH      ) =>  64
+    rule #asmOpCode( COINBASE       ) =>  65
+    rule #asmOpCode( TIMESTAMP      ) =>  66
+    rule #asmOpCode( NUMBER         ) =>  67
+    rule #asmOpCode( DIFFICULTY     ) =>  68
+    rule #asmOpCode( PREVRANDAO     ) =>  68
+    rule #asmOpCode( GASLIMIT       ) =>  69
+    rule #asmOpCode( CHAINID        ) =>  70
+    rule #asmOpCode( SELFBALANCE    ) =>  71
+    rule #asmOpCode( POP            ) =>  80
+    rule #asmOpCode( MLOAD          ) =>  81
+    rule #asmOpCode( MSTORE         ) =>  82
+    rule #asmOpCode( MSTORE8        ) =>  83
+    rule #asmOpCode( SLOAD          ) =>  84
+    rule #asmOpCode( SSTORE         ) =>  85
+    rule #asmOpCode( JUMP           ) =>  86
+    rule #asmOpCode( JUMPI          ) =>  87
+    rule #asmOpCode( PC             ) =>  88
+    rule #asmOpCode( MSIZE          ) =>  89
+    rule #asmOpCode( GAS            ) =>  90
+    rule #asmOpCode( JUMPDEST       ) =>  91
+    rule #asmOpCode( PUSHZERO       ) =>  95
+    rule #asmOpCode( PUSH(1)        ) =>  96
+    rule #asmOpCode( PUSH(2)        ) =>  97
+    rule #asmOpCode( PUSH(3)        ) =>  98
+    rule #asmOpCode( PUSH(4)        ) =>  99
+    rule #asmOpCode( PUSH(5)        ) => 100
+    rule #asmOpCode( PUSH(6)        ) => 101
+    rule #asmOpCode( PUSH(7)        ) => 102
+    rule #asmOpCode( PUSH(8)        ) => 103
+    rule #asmOpCode( PUSH(9)        ) => 104
+    rule #asmOpCode( PUSH(10)       ) => 105
+    rule #asmOpCode( PUSH(11)       ) => 106
+    rule #asmOpCode( PUSH(12)       ) => 107
+    rule #asmOpCode( PUSH(13)       ) => 108
+    rule #asmOpCode( PUSH(14)       ) => 109
+    rule #asmOpCode( PUSH(15)       ) => 110
+    rule #asmOpCode( PUSH(16)       ) => 111
+    rule #asmOpCode( PUSH(17)       ) => 112
+    rule #asmOpCode( PUSH(18)       ) => 113
+    rule #asmOpCode( PUSH(19)       ) => 114
+    rule #asmOpCode( PUSH(20)       ) => 115
+    rule #asmOpCode( PUSH(21)       ) => 116
+    rule #asmOpCode( PUSH(22)       ) => 117
+    rule #asmOpCode( PUSH(23)       ) => 118
+    rule #asmOpCode( PUSH(24)       ) => 119
+    rule #asmOpCode( PUSH(25)       ) => 120
+    rule #asmOpCode( PUSH(26)       ) => 121
+    rule #asmOpCode( PUSH(27)       ) => 122
+    rule #asmOpCode( PUSH(28)       ) => 123
+    rule #asmOpCode( PUSH(29)       ) => 124
+    rule #asmOpCode( PUSH(30)       ) => 125
+    rule #asmOpCode( PUSH(31)       ) => 126
+    rule #asmOpCode( PUSH(32)       ) => 127
+    rule #asmOpCode( DUP(1)         ) => 128
+    rule #asmOpCode( DUP(2)         ) => 129
+    rule #asmOpCode( DUP(3)         ) => 130
+    rule #asmOpCode( DUP(4)         ) => 131
+    rule #asmOpCode( DUP(5)         ) => 132
+    rule #asmOpCode( DUP(6)         ) => 133
+    rule #asmOpCode( DUP(7)         ) => 134
+    rule #asmOpCode( DUP(8)         ) => 135
+    rule #asmOpCode( DUP(9)         ) => 136
+    rule #asmOpCode( DUP(10)        ) => 137
+    rule #asmOpCode( DUP(11)        ) => 138
+    rule #asmOpCode( DUP(12)        ) => 139
+    rule #asmOpCode( DUP(13)        ) => 140
+    rule #asmOpCode( DUP(14)        ) => 141
+    rule #asmOpCode( DUP(15)        ) => 142
+    rule #asmOpCode( DUP(16)        ) => 143
+    rule #asmOpCode( SWAP(1)        ) => 144
+    rule #asmOpCode( SWAP(2)        ) => 145
+    rule #asmOpCode( SWAP(3)        ) => 146
+    rule #asmOpCode( SWAP(4)        ) => 147
+    rule #asmOpCode( SWAP(5)        ) => 148
+    rule #asmOpCode( SWAP(6)        ) => 149
+    rule #asmOpCode( SWAP(7)        ) => 150
+    rule #asmOpCode( SWAP(8)        ) => 151
+    rule #asmOpCode( SWAP(9)        ) => 152
+    rule #asmOpCode( SWAP(10)       ) => 153
+    rule #asmOpCode( SWAP(11)       ) => 154
+    rule #asmOpCode( SWAP(12)       ) => 155
+    rule #asmOpCode( SWAP(13)       ) => 156
+    rule #asmOpCode( SWAP(14)       ) => 157
+    rule #asmOpCode( SWAP(15)       ) => 158
+    rule #asmOpCode( SWAP(16)       ) => 159
+    rule #asmOpCode( LOG(0)         ) => 160
+    rule #asmOpCode( LOG(1)         ) => 161
+    rule #asmOpCode( LOG(2)         ) => 162
+    rule #asmOpCode( LOG(3)         ) => 163
+    rule #asmOpCode( LOG(4)         ) => 164
+    rule #asmOpCode( CREATE         ) => 240
+    rule #asmOpCode( CALL           ) => 241
+    rule #asmOpCode( CALLCODE       ) => 242
+    rule #asmOpCode( RETURN         ) => 243
+    rule #asmOpCode( DELEGATECALL   ) => 244
+    rule #asmOpCode( CREATE2        ) => 245
+    rule #asmOpCode( STATICCALL     ) => 250
+    rule #asmOpCode( REVERT         ) => 253
+    rule #asmOpCode( INVALID        ) => 254
+    rule #asmOpCode( SELFDESTRUCT   ) => 255
+    rule #asmOpCode( UNDEFINED(W)   ) =>   W
+
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/buf.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/buf.md deleted file mode 100644 index 01ac1f7509..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/buf.md +++ /dev/null @@ -1,55 +0,0 @@ -Byte-Buffer Abstraction -======================= - -```k -requires "evm.md" - -module BUF-SYNTAX - imports EVM -``` - -Both `#bufStrict(SIZE, DATA)` and `#buf(SIZE, DATA)` represents a symbolic byte array of length `SIZE` bytes, left-padded with zeroes. -Version `#bufStrict` is partial and only defined when `DATA` is in the range given by `SIZE`. -It rewrites to `#buf` when data is in range, and is expected to immediately evaluate into `#buf` in all contexts. -Version `#buf` is total and artificially defined `modulo 2 ^Int (SIZE *Int 8)`. -This division is required to facilitate symbolic reasoning in Haskell backend, because Haskell has limitations -when dealing with partial functions. - -**Usage:** All symbolic byte arrays must be originally created as `#bufStrict`. -This ensures `#buf` is never present in out of range mode. -For this, definition rule RHS should always use `#bufStrict` when array is first created, but may use `#buf` when array -is just carried on from LHS without changes. Definition rule LHS should only use `#buf`. -Claims should always use `#bufStrict` in LHS and `#buf` in RHS. - -```k - syntax Bytes ::= #bufStrict ( Int , Int ) [klabel(#bufStrict), function] - syntax Bytes ::= #buf ( Int , Int ) [klabel(#buf), function, total, smtlib(buf)] - - syntax Int ::= #ceil32 ( Int ) [klabel(#ceil32), macro] - // ------------------------------------------------------- - rule #ceil32(N) => notMaxUInt5 &Int ( N +Int maxUInt5 ) - -endmodule - -module BUF - imports BUF-SYNTAX - - syntax Int ::= #powByteLen ( Int ) [klabel(#powByteLen), function, no-evaluators] - // --------------------------------------------------------------------------------- - // rule #powByteLen(SIZE) => 2 ^Int (SIZE *Int 8) - rule 2 ^Int (SIZE *Int 8) => #powByteLen(SIZE) [symbolic(SIZE), simplification] - - rule 0 true requires 0 <=Int SIZE [simplification, preserves-definedness] - rule SIZE true requires 0 <=Int SIZE [simplification, preserves-definedness] - rule #write(WM, IDX, VAL) => WM [ IDX := #buf(1, VAL) ] [simplification] - - rule #bufStrict(SIZE, DATA) => #buf(SIZE, DATA) - requires #range(0 <= DATA < (2 ^Int (SIZE *Int 8))) - - rule #buf(SIZE, DATA) => #padToWidth(SIZE, #asByteStack(DATA %Int (2 ^Int (SIZE *Int 8)))) - requires 0 .Bytes [owise, concrete] // SIZE <= 0 - -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/buf/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/buf/index.html new file mode 100644 index 0000000000..5ddd53dc0d --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/buf/index.html @@ -0,0 +1,238 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Byte-Buffer Abstraction

+
requires "evm.md"
+
+module BUF-SYNTAX
+    imports EVM
+
+

Both #bufStrict(SIZE, DATA) and #buf(SIZE, DATA) represents a symbolic byte array of length SIZE bytes, left-padded with zeroes. +Version #bufStrict is partial and only defined when DATA is in the range given by SIZE. +It rewrites to #buf when data is in range, and is expected to immediately evaluate into #buf in all contexts. +Version #buf is total and artificially defined modulo 2 ^Int (SIZE *Int 8). +This division is required to facilitate symbolic reasoning in Haskell backend, because Haskell has limitations +when dealing with partial functions.

+

Usage: All symbolic byte arrays must be originally created as #bufStrict. +This ensures #buf is never present in out of range mode. +For this, definition rule RHS should always use #bufStrict when array is first created, but may use #buf when array +is just carried on from LHS without changes. Definition rule LHS should only use #buf. +Claims should always use #bufStrict in LHS and #buf in RHS.

+
    syntax Bytes ::= #bufStrict ( Int , Int ) [klabel(#bufStrict), function]
+    syntax Bytes ::= #buf ( Int , Int ) [klabel(#buf), function, total, smtlib(buf)]
+
+    syntax Int ::= #ceil32 ( Int ) [klabel(#ceil32), macro]
+ // -------------------------------------------------------
+    rule #ceil32(N) => notMaxUInt5 &Int ( N +Int maxUInt5 )
+
+endmodule
+
+module BUF
+    imports BUF-SYNTAX
+
+    syntax Int ::= #powByteLen ( Int ) [klabel(#powByteLen), function, no-evaluators]
+ // ---------------------------------------------------------------------------------
+ // rule #powByteLen(SIZE) => 2 ^Int (SIZE *Int 8)
+    rule 2 ^Int (SIZE *Int 8) => #powByteLen(SIZE) [symbolic(SIZE), simplification]
+
+    rule 0    <Int #powByteLen(SIZE) => true requires 0 <=Int SIZE [simplification, preserves-definedness]
+    rule SIZE <Int #powByteLen(SIZE) => true requires 0 <=Int SIZE [simplification, preserves-definedness]
+    rule #write(WM, IDX, VAL) => WM [ IDX := #buf(1, VAL) ] [simplification]
+
+    rule #bufStrict(SIZE, DATA) => #buf(SIZE, DATA)
+      requires #range(0 <= DATA < (2 ^Int (SIZE *Int 8)))
+
+    rule #buf(SIZE, DATA) => #padToWidth(SIZE, #asByteStack(DATA %Int (2 ^Int (SIZE *Int 8))))
+      requires 0 <Int SIZE
+      [concrete]
+    rule #buf(_SIZE, _) => .Bytes [owise, concrete] // SIZE <= 0
+
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/data.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/data.md deleted file mode 100644 index 53dc429191..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/data.md +++ /dev/null @@ -1,23 +0,0 @@ -EVM Words -========= - -```k -requires "evm-types.md" -requires "json-rpc.md" -requires "serialization.md" -``` - -```k -module EVM-DATA - imports EVM-TYPES - imports SERIALIZATION - imports STRING-BUFFER - imports MAP-SYMBOLIC - imports SET-SYMBOLIC - imports COLLECTIONS - imports JSON-EXT -``` - -```k -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/data/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/data/index.html new file mode 100644 index 0000000000..d35b0ef99a --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/data/index.html @@ -0,0 +1,206 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

EVM Words

+
requires "evm-types.md"
+requires "json-rpc.md"
+requires "serialization.md"
+
+
module EVM-DATA
+    imports EVM-TYPES
+    imports SERIALIZATION
+    imports STRING-BUFFER
+    imports MAP-SYMBOLIC
+    imports SET-SYMBOLIC
+    imports COLLECTIONS
+    imports JSON-EXT
+
+
endmodule
+
+
+
+ + +
+ + + +
+
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/driver.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/driver.md deleted file mode 100644 index 40adff2f82..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/driver.md +++ /dev/null @@ -1,589 +0,0 @@ -Ethereum Simulations -==================== - -Ethereum is using the EVM to drive updates over the world state. -Actual execution of the EVM is defined in [the EVM file](../evm). - -```k -requires "evm.md" -requires "optimizations.md" -requires "asm.md" -requires "state-utils.md" - -module ETHEREUM-SIMULATION - imports EVM - imports EVM-OPTIMIZATIONS - imports EVM-ASSEMBLY - imports STATE-UTILS -``` - -An Ethereum simulation is a list of Ethereum commands. -Some Ethereum commands take an Ethereum specification (eg. for an account or transaction). - -```k - syntax EthereumSimulation ::= ".EthereumSimulation" - | EthereumCommand EthereumSimulation - // ---------------------------------------------------------------- - rule .EthereumSimulation => .K ... - rule ETC .EthereumSimulation => ETC ... - rule ETC ETS:EthereumSimulation => ETC ~> ETS ... requires ETS =/=K .EthereumSimulation - - rule #halt ~> ETC ETS:EthereumSimulation => #halt ~> ETC ~> ETS ... - - syntax EthereumSimulation ::= JSON - // ---------------------------------- - rule JSONINPUT:JSON => run JSONINPUT success .EthereumSimulation -``` - -For verification purposes, it's much easier to specify a program in terms of its op-codes and not the hex-encoding that the tests use. -To do so, we'll extend sort `JSON` with some EVM specific syntax, and provide a "pretti-fication" to the nicer input form. - -```k - syntax JSON ::= Bytes | OpCodes | Map | SubstateLogEntry | Account | TxType - // --------------------------------------------------------------------------- -``` - -### Driving Execution - -- `start` places `#next` on the `` cell so that execution of the loaded state begin. -- `flush` places `#finalize` on the `` cell. - -```k - syntax EthereumCommand ::= "start" - // ---------------------------------- - rule NORMAL start => #execute ... - rule VMTESTS start => #execute ... - - syntax EthereumCommand ::= "flush" - // ---------------------------------- - rule EXECMODE EVMC_SUCCESS #halt ~> flush => #finalizeTx(EXECMODE ==K VMTESTS) ... - rule EXECMODE _:ExceptionalStatusCode #halt ~> flush => #finalizeTx(EXECMODE ==K VMTESTS) ~> #halt ... -``` - -- `startTx` computes the sender of the transaction, and places loadTx on the `k` cell. -- `loadTx(_)` loads the next transaction to be executed into the current state. -- `finishTx` is a place-holder for performing necessary cleanup after a transaction. - -```k - syntax EthereumCommand ::= "startTx" - // ------------------------------------ - rule startTx => #finalizeBlock ... - .List - - rule startTx => loadTx( #sender( #getTxData(TXID), TW, TR, TS ) ) ... - ListItem(TXID:Int) ... - - TXID - TW - TR - TS - ... - - - syntax EthereumCommand ::= loadTx ( Account ) [klabel(loadTx)] - // -------------------------------------------------------------- - rule loadTx(_) => #end EVMC_OUT_OF_GAS ... - SCHED - ListItem(TXID:Int) ... - - TXID - .Account - CODE - ... - - requires notBool #hasValidInitCode(lengthBytes(CODE), SCHED) - - rule loadTx(ACCTFROM) - => #accessAccounts ACCTFROM #newAddr(ACCTFROM, NONCE) #precompiledAccountsSet(SCHED) - ~> #loadAccessList(TA) - ~> #create ACCTFROM #newAddr(ACCTFROM, NONCE) VALUE CODE - ~> #finishTx ~> #finalizeTx(false) ~> startTx - ... - - SCHED - _ => #effectiveGasPrice(TXID) - _ => GLIMIT -Int G0(SCHED, CODE, true) - _ => ACCTFROM - _ => -1 - ListItem(TXID:Int) ... - MINER - - TXID - GLIMIT - .Account - VALUE - CODE - TA - ... - - - ACCTFROM - BAL => BAL -Int (GLIMIT *Int #effectiveGasPrice(TXID)) - NONCE - ... - - _ => #if Ghaswarmcoinbase << SCHED >> #then SetItem(MINER) #else .Set #fi - _ => SetItem(MINER) - requires #hasValidInitCode(lengthBytes(CODE), SCHED) - - rule loadTx(ACCTFROM) - => #accessAccounts ACCTFROM ACCTTO #precompiledAccountsSet(SCHED) - ~> #loadAccessList(TA) - ~> #call ACCTFROM ACCTTO ACCTTO VALUE VALUE DATA false - ~> #finishTx ~> #finalizeTx(false) ~> startTx - ... - - SCHED - _ => #effectiveGasPrice(TXID) - _ => GLIMIT -Int G0(SCHED, DATA, false) - _ => ACCTFROM - _ => -1 - ListItem(TXID:Int) ... - MINER - - TXID - GLIMIT - ACCTTO - VALUE - DATA - TA - ... - - - ACCTFROM - BAL => BAL -Int (GLIMIT *Int #effectiveGasPrice(TXID)) - NONCE => NONCE +Int 1 - ... - - _ => #if Ghaswarmcoinbase << SCHED >> #then SetItem(MINER) #else .Set #fi - _ => SetItem(MINER) - requires ACCTTO =/=K .Account - - syntax EthereumCommand ::= "#finishTx" - // -------------------------------------- - rule _:ExceptionalStatusCode #halt ~> #finishTx => #popCallStack ~> #popWorldState ... - rule EVMC_REVERT #halt ~> #finishTx => #popCallStack ~> #popWorldState ~> #refund GAVAIL ... GAVAIL - - rule EVMC_SUCCESS - #halt ~> #finishTx => #mkCodeDeposit ACCT ... - ACCT - ListItem(TXID:Int) ... - - TXID - .Account - ... - - - rule EVMC_SUCCESS - #halt ~> #finishTx => #popCallStack ~> #dropWorldState ~> #refund GAVAIL ... - GAVAIL - ListItem(TXID:Int) ... - - TXID - TT - ... - - requires TT =/=K .Account - - syntax EthereumCommand ::= #loadAccessList ( JSON ) [klabel(#loadAccessList)] - | #loadAccessListAux ( Account , List ) [klabel(#loadAccessListAux)] - // --------------------------------------------------------------------------------------------- - rule #loadAccessList ([ .JSONs ]) => .K ... - SCHED - requires Ghasaccesslist << SCHED >> - - rule #loadAccessList ([ _ ]) => .K ... - SCHED - requires notBool Ghasaccesslist << SCHED >> - - rule #loadAccessList ([[ACCT, [STRG:JSONs]], REST]) - => #loadAccessListAux (#asAccount(ACCT), #parseAccessListStorageKeys([STRG])) - ~> #loadAccessList ([REST]) - ... - - SCHED - requires Ghasaccesslist << SCHED >> - - rule #loadAccessListAux (ACCT, (ListItem(STRGK) STRGKS)) - => #accessStorage ACCT STRGK:Int - ~> #loadAccessListAux (ACCT, STRGKS) - ... - - SCHED - GLIMIT => GLIMIT -Int Gaccessliststoragekey < SCHED > - - rule #loadAccessListAux (ACCT, .List) => #accessAccounts ACCT ... - SCHED - GLIMIT => GLIMIT -Int Gaccesslistaddress < SCHED > -``` - -- `exception` only clears from the `` cell if there is an exception preceding it. -- `failure_` holds the name of a test that failed if a test does fail. -- `success` sets the `` to `0` and the `` to `SUCCESS`. - -```k - syntax Mode ::= "SUCCESS" - // ------------------------- - - syntax EthereumCommand ::= "exception" | "status" StatusCode - // ------------------------------------------------------------ - rule _:ExceptionalStatusCode - #halt ~> exception => .K ... - - rule status SC => .K ... SC - - syntax EthereumCommand ::= "failure" String | "success" - // ------------------------------------------------------- - rule success => .K ... - _ => 0 - _ => SUCCESS - - rule failure _ => .K ... - rule #halt ~> failure _ => .K ... -``` - -### Running Tests - -- `run` runs a given set of Ethereum tests (from the test-set). - -Note that `TEST` is sorted here so that key `"network"` comes before key `"pre"`. - -```k - syntax EthereumCommand ::= "run" JSON - // ------------------------------------- - rule run { .JSONs } => .K ... - rule run { TESTID : { TEST:JSONs } , TESTS } - => run ( TESTID : { qsortJSONs(TEST) } ) - ~> #if #hasPost?( { TEST } ) #then .K #else exception #fi - ~> clear - ~> run { TESTS } - ... - - - syntax Bool ::= "#hasPost?" "(" JSON ")" [function] - // --------------------------------------------------- - rule #hasPost? ({ .JSONs }) => false - rule #hasPost? ({ (KEY:String) : _ , REST }) => (KEY in #postKeys) orBool #hasPost? ({ REST }) -``` - -- `#loadKeys` are all the JSON nodes which should be considered as loads before execution. - -```k - syntax Set ::= "#loadKeys" [function] - // ------------------------------------- - rule #loadKeys => ( SetItem("env") SetItem("pre") SetItem("rlp") SetItem("network") SetItem("genesisRLP") SetItem("withdrawals") ) - - rule run TESTID : { KEY : (VAL:JSON) , REST } => load KEY : VAL ~> run TESTID : { REST } ... - requires KEY in #loadKeys - - rule run _TESTID : { "blocks" : [ { KEY : VAL , REST1 => REST1 }, .JSONs ] , ( REST2 => KEY : VAL , REST2 ) } ... - rule run TESTID : { "blocks" : [ { .JSONs }, .JSONs ] , REST } => run TESTID : { REST } ... -``` - -- `#execKeys` are all the JSON nodes which should be considered for execution (between loading and checking). - -```k - syntax Set ::= "#execKeys" [function] - // ------------------------------------- - rule #execKeys => ( SetItem("exec") SetItem("lastblockhash") ) - - rule run TESTID : { KEY : (VAL:JSON) , NEXT , REST } => run TESTID : { NEXT , KEY : VAL , REST } ... - requires KEY in #execKeys - - rule run _TESTID : { "exec" : (EXEC:JSON) } => loadCallState EXEC ~> start ~> flush ... - rule run _TESTID : { "lastblockhash" : (_:String) } => #startBlock ~> startTx ... - - rule load "exec" : J => loadCallState J ... - - rule loadCallState { "caller" : (ACCTFROM:Int), REST => REST } ... _ => ACCTFROM - rule loadCallState { "origin" : (ORIG:Int), REST => REST } ... _ => ORIG - rule loadCallState { "address" : (ACCTTO:Int), REST => REST } ... _ => ACCTTO - - rule loadCallState { "code" : (CODE:OpCodes), REST } => #loadProgram #asmOpCodes(CODE) ~> loadCallState { REST } ... - - rule loadCallState { "usegas" : (USEGAS:Bool), REST => REST } ... _ => USEGAS - - rule loadCallState { KEY : ((VAL:String) => #parseWord(VAL)), _ } ... - requires KEY in (SetItem("gas") SetItem("gasPrice") SetItem("value")) - - rule loadCallState { KEY : ((VAL:String) => #parseHexWord(VAL)), _ } ... - requires KEY in (SetItem("address") SetItem("caller") SetItem("origin")) - - rule loadCallState { "code" : ((CODE:String) => #parseByteStack(CODE)), _ } ... -``` - -- `#postKeys` are a subset of `#checkKeys` which correspond to post-state account checks. -- `#checkKeys` are all the JSON nodes which should be considered as checks after execution. - -```k - syntax Set ::= "#postKeys" [function] | "#allPostKeys" [function] | "#checkKeys" [function] - // ------------------------------------------------------------------------------------------- - rule #postKeys => ( SetItem("post") SetItem("postState") SetItem("postStateHash") ) - rule #allPostKeys => ( #postKeys SetItem("expect") SetItem("export") SetItem("expet") ) - rule #checkKeys => ( #allPostKeys SetItem("logs") SetItem("out") SetItem("gas") - SetItem("blockHeader") SetItem("transactions") SetItem("uncleHeaders") SetItem("genesisBlockHeader") - ) - - rule run TESTID : { KEY : (VAL:JSON) , REST } => run TESTID : { REST } ~> check TESTID : { "post" : VAL } ... requires KEY in #allPostKeys - rule run TESTID : { KEY : (VAL:JSON) , REST } => run TESTID : { REST } ~> check TESTID : { KEY : VAL } ... requires KEY in #checkKeys andBool notBool KEY in #allPostKeys -``` - -- `#discardKeys` are all the JSON nodes in the tests which should just be ignored. - -```k - syntax Set ::= "#discardKeys" [function] - // ---------------------------------------- - rule #discardKeys => ( SetItem("//") SetItem("_info") SetItem("callcreates") SetItem("sealEngine") SetItem("transactionSequence") SetItem("chainname") ) - - rule run TESTID : { KEY : _ , REST } => run TESTID : { REST } ... requires KEY in #discardKeys -``` - -- `driver.md` specific handling of state-utils commands - -```k - rule load "account" : { ACCTID : ACCT } => loadAccount ACCTID ACCT ... - - rule loadAccount _ { "balance" : ((VAL:String) => #parseWord(VAL)), _ } ... - rule loadAccount _ { "nonce" : ((VAL:String) => #parseWord(VAL)), _ } ... - rule loadAccount _ { "code" : ((CODE:String) => #parseByteStack(CODE)), _ } ... - rule loadAccount _ { "storage" : ({ STORAGE:JSONs } => #parseMap({ STORAGE })), _ } ... - - rule loadTransaction _ { "type" : (TT:Bytes => #asWord(TT)), _ } ... - rule loadTransaction _ { "chainID" : (TC:Bytes => #asWord(TC)), _ } ... - rule loadTransaction _ { "gasLimit" : (TG:Bytes => #asWord(TG)), _ } ... - rule loadTransaction _ { "gasPrice" : (TP:Bytes => #asWord(TP)), _ } ... - rule loadTransaction _ { "nonce" : (TN:Bytes => #asWord(TN)), _ } ... - rule loadTransaction _ { "v" : (TW:Bytes => #asWord(TW)), _ } ... - rule loadTransaction _ { "value" : (TV:Bytes => #asWord(TV)), _ } ... - rule loadTransaction _ { "to" : (TT:Bytes => #asAccount(TT)), _ } ... - rule loadTransaction _ { "r" : (TR:Bytes => #padToWidth(32, TR)), _ } ... requires lengthBytes(TR) loadTransaction _ { "s" : (TS:Bytes => #padToWidth(32, TS)), _ } ... requires lengthBytes(TS) loadTransaction _ { "maxPriorityFeePerGas" : (V:Bytes => #asWord(V)), _ } ... - rule loadTransaction _ { "maxFeePerGas" : (V:Bytes => #asWord(V)), _ } ... -``` - -### Checking State - -- `check_` checks if an account/transaction appears in the world-state as stated. - -```k - syntax EthereumCommand ::= "check" JSON - // --------------------------------------- - rule #halt ~> check J:JSON => check J ~> #halt ... - - rule check DATA : { .JSONs } => .K ... requires DATA =/=String "transactions" - rule check DATA : [ .JSONs ] => .K ... requires DATA =/=String "ommerHeaders" - - rule check DATA : { (KEY:String) : VALUE , REST } => check DATA : { KEY : VALUE } ~> check DATA : { REST } ... - requires REST =/=K .JSONs andBool notBool DATA in (SetItem("callcreates") SetItem("transactions")) - - rule check DATA : [ { TEST } , REST ] => check DATA : { TEST } ~> check DATA : [ REST ] ... - requires DATA =/=String "transactions" - - rule check (KEY:String) : { JS:JSONs => qsortJSONs(JS) } ... - requires KEY in (SetItem("callcreates")) andBool notBool sortedJSONs(JS) - - rule check TESTID : { "post" : (POST:String) } => check "blockHeader" : { "stateRoot" : #parseWord(POST) } ~> failure TESTID ... - rule check TESTID : { "post" : { POST } } => check "account" : { POST } ~> failure TESTID ... - - rule check "account" : { ACCTID:Int : { KEY : VALUE , REST } } => check "account" : { ACCTID : { KEY : VALUE } } ~> check "account" : { ACCTID : { REST } } ... - requires REST =/=K .JSONs - - rule check "account" : { ((ACCTID:String) => #parseAddr(ACCTID)) : _ACCT } ... - rule check "account" : { (_ACCT:Int) : { "balance" : ((VAL:String) => #parseWord(VAL)) } } ... - rule check "account" : { (_ACCT:Int) : { "nonce" : ((VAL:String) => #parseWord(VAL)) } } ... - rule check "account" : { (_ACCT:Int) : { "code" : ((CODE:String) => #parseByteStack(CODE)) } } ... - rule check "account" : { (_ACCT:Int) : { "storage" : ({ STORAGE:JSONs } => #parseMap({ STORAGE })) } } ... - - rule EXECMODE - check "account" : { ACCT : { "balance" : (BAL:Int) } } => .K ... - - ACCT - BAL - ... - - requires EXECMODE =/=K VMTESTS - - rule VMTESTS - check "account" : { _ACCT : { "balance" : (_:Int) } } => .K ... - - rule check "account" : { ACCT : { "nonce" : (NONCE:Int) } } => .K ... - - ACCT - NONCE - ... - - - rule check "account" : { ACCT : { "storage" : (STORAGE:Map) } } => .K ... - - ACCT - ACCTSTORAGE - ... - - requires #removeZeros(ACCTSTORAGE) ==K STORAGE - - rule check "account" : { ACCT : { "code" : (CODE:Bytes) } } => .K ... - - ACCT - CODE - ... - -``` - -- `#removeZeros` removes any entries in a map with zero values. - -```k - syntax Map ::= #removeZeros ( Map ) [klabel(#removeZeros), function] - | #removeZeros ( List , Map ) [klabel(#removeZerosAux), function] - // ------------------------------------------------------------------------------ - rule #removeZeros( M ) => #removeZeros(Set2List(keys(M)), M) - rule #removeZeros( .List, .Map ) => .Map - rule #removeZeros( ListItem(KEY) L, KEY |-> 0 REST ) => #removeZeros(L, REST) - rule #removeZeros( ListItem(KEY) L, KEY |-> VALUE REST ) => KEY |-> VALUE #removeZeros(L, REST) requires VALUE =/=K 0 -``` - -Here we check the other post-conditions associated with an EVM test. - -```k - rule check TESTID : { "out" : OUT } => check "out" : OUT ~> failure TESTID ... - // --------------------------------------------------------------------------------------- - rule check "out" : ((OUT:String) => #parseByteStack(OUT)) ... - rule check "out" : OUT => .K ... OUT - - rule check TESTID : { "logs" : LOGS } => check "logs" : LOGS ~> failure TESTID ... - // ------------------------------------------------------------------------------------------- - rule check "logs" : HASH:String => .K ... SL requires #parseHexBytes(Keccak256(#rlpEncodeLogs(SL))) ==K #parseByteStack(HASH) - - rule check TESTID : { "gas" : GLEFT } => check "gas" : GLEFT ~> failure TESTID ... - // ------------------------------------------------------------------------------------------- - rule check "gas" : ((GLEFT:String) => #parseWord(GLEFT)) ... - rule check "gas" : GLEFT => .K ... GLEFT - - rule check TESTID : { "blockHeader" : BLOCKHEADER } => check "blockHeader" : BLOCKHEADER ~> failure TESTID - // ---------------------------------------------------------------------------------------------------------- - rule check "blockHeader" : { KEY : VALUE , REST } => check "blockHeader" : { KEY : VALUE } ~> check "blockHeader" : { REST } ... - requires REST =/=K .JSONs - - rule check "blockHeader" : { _KEY : (VALUE:String => #parseByteStack(VALUE)) } ... - - rule check "blockHeader" : { KEY : (VALUE:Bytes => #asWord(VALUE)) } ... - requires KEY in ( SetItem("coinbase") SetItem("difficulty") SetItem("gasLimit") SetItem("gasUsed") - SetItem("mixHash") SetItem("nonce") SetItem("number") SetItem("parentHash") - SetItem("receiptTrie") SetItem("stateRoot") SetItem("timestamp") - SetItem("transactionsTrie") SetItem("uncleHash") SetItem("baseFeePerGas") SetItem("withdrawalsRoot") - ) - - rule check "blockHeader" : { "bloom" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "coinbase" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "difficulty" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "extraData" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "gasLimit" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "gasUsed" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "mixHash" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "nonce" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "number" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "parentHash" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "receiptTrie" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "stateRoot" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "timestamp" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "transactionsTrie" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "uncleHash" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "baseFeePerGas" : VALUE } => .K ... VALUE - rule check "blockHeader" : { "withdrawalsRoot" : VALUE } => .K ... VALUE - - rule check "blockHeader" : { "hash": HASH:Bytes } => .K ... - HP - HO - HC - HR - HT - HE - HB - HD - HI - HL - HG - HS - HX - HM - HN - HF - WR - requires #blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN) ==Int #asWord(HASH) - orBool #blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF) ==Int #asWord(HASH) - orBool #blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WR) ==Int #asWord(HASH) - - rule check TESTID : { "genesisBlockHeader" : BLOCKHEADER } => check "genesisBlockHeader" : BLOCKHEADER ~> failure TESTID - // ------------------------------------------------------------------------------------------------------------------------ - rule check "genesisBlockHeader" : { KEY : VALUE , REST } => check "genesisBlockHeader" : { KEY : VALUE } ~> check "genesisBlockHeader" : { REST } ... - requires REST =/=K .JSONs - - rule check "genesisBlockHeader" : { KEY : _ } => .K ... requires KEY =/=String "hash" - - rule check "genesisBlockHeader" : { "hash": (HASH:String => #asWord(#parseByteStack(HASH))) } ... - rule check "genesisBlockHeader" : { "hash": HASH } => .K ... - ... ListItem(HASH) ListItem(_) - - rule check TESTID : { "transactions" : TRANSACTIONS } => check "transactions" : TRANSACTIONS ~> failure TESTID ... - // --------------------------------------------------------------------------------------------------------------------------- - rule check "transactions" : [ .JSONs ] => .K ... .List - rule check "transactions" : { .JSONs } => .K ... ListItem(_) => .List ... - - rule check "transactions" : [ TRANSACTION , REST ] => check "transactions" : TRANSACTION ~> check "transactions" : [ REST ] ... - rule check "transactions" : { KEY : VALUE , REST } => check "transactions" : (KEY : VALUE) ~> check "transactions" : { REST } ... - - rule check "transactions" : ("sender" : (VALUE:Bytes => #asAccount(VALUE))) ... - rule check "transactions" : (_KEY : (VALUE:String => #parseByteStack(VALUE))) ... - rule check "transactions" : ("to" : (VALUE:Bytes => #asAccount(VALUE))) ... - rule check "transactions" : ( KEY : (VALUE:Bytes => #padToWidth(32, VALUE))) ... requires KEY in (SetItem("r") SetItem("s")) andBool lengthBytes(VALUE) check "transactions" : ( KEY : (VALUE:Bytes => #asWord(VALUE))) ... requires KEY in (SetItem("gasLimit") SetItem("gasPrice") SetItem("nonce") SetItem("v") SetItem("value") SetItem("chainId") SetItem("type") SetItem("maxFeePerGas") SetItem("maxPriorityFeePerGas")) - rule check "transactions" : ("type" : (VALUE:Int => #asmTxPrefix(VALUE))) ... - - rule check "transactions" : "accessList" : [ ACCESSLIST , REST ] => check "transactions" : "accessList" : ACCESSLIST ~> check "transactions" : "accessList" : [ REST ] ... - rule check "transactions" : "accessList" : { "address" : V1 , "storageKeys": V2 , .JSONs } => check "transactions" : "accessList" : "address" : #parseHexWord(V1) : "storageKeys" : V2 ... - rule check "transactions" : "accessList" : "address" : ADDR : "storageKeys" : [ KEY , REST ] => check "transactions" : "accessList" : "address" : ADDR : "storageKeys" : #parseHexWord(KEY) ~> check "transactions" : "accessList" : "address" : ADDR : "storageKeys" : [ REST ] ... - - rule check "transactions" : "accessList" : "address" : _ : "storageKeys" : [ .JSONs ] => .K ... - rule check "transactions" : "accessList" : [ .JSONs ] => .K ... - - rule check "transactions" : "accessList" : "address" : ADDR : "storageKeys" : KEY => .K ... ListItem(TXID) ... TXID TA ... requires isInAccessList(ADDR, KEY, TA) - rule check "transactions" : ("data" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("gasLimit" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("gasPrice" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("nonce" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("r" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("s" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("to" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("v" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("value" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("chainId" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("type" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("maxFeePerGas" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("maxPriorityFeePerGas" : VALUE) => .K ... ListItem(TXID) ... TXID VALUE ... - rule check "transactions" : ("sender" : VALUE) => .K ... ListItem(TXID) ... TXID TW TR TS ... requires #sender( #getTxData(TXID), TW, TR, TS ) ==K VALUE - - syntax Bool ::= isInAccessListStorage ( Int , JSON ) [klabel(isInAccessListStorage), function] - | isInAccessList ( Account , Int , JSON ) [klabel(isInAccessList), function] - // ------------------------------------------------------------------------------------------------- - rule isInAccessList(_ , _ , [.JSONs ]) => false - rule isInAccessList(ADDR, KEY, [[ACCT, [STRG:JSONs]], REST]) => #if ADDR ==K #asAccount(ACCT) - #then isInAccessListStorage (KEY, [STRG]) orBool isInAccessList(ADDR, KEY, [REST]) - #else isInAccessList(ADDR, KEY, [REST]) #fi - - rule isInAccessListStorage(_ , [.JSONs ]) => false - rule isInAccessListStorage(KEY, [SKEY, REST]) => #if KEY ==Int #asWord(SKEY) - #then true - #else isInAccessListStorage(KEY, [REST]) #fi -``` - -TODO: case with nonzero ommers. - -```k - rule check TESTID : { "uncleHeaders" : OMMERS } => check "ommerHeaders" : OMMERS ~> failure TESTID ... - // --------------------------------------------------------------------------------------------------------------- - rule check "ommerHeaders" : [ .JSONs ] => .K ... [ .JSONs ] -``` - -```k -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/driver/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/driver/index.html new file mode 100644 index 0000000000..f93df1ed09 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/driver/index.html @@ -0,0 +1,746 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Ethereum Simulations

+

Ethereum is using the EVM to drive updates over the world state. +Actual execution of the EVM is defined in the EVM file.

+
requires "evm.md"
+requires "optimizations.md"
+requires "asm.md"
+requires "state-utils.md"
+
+module ETHEREUM-SIMULATION
+    imports EVM
+    imports EVM-OPTIMIZATIONS
+    imports EVM-ASSEMBLY
+    imports STATE-UTILS
+
+

An Ethereum simulation is a list of Ethereum commands. +Some Ethereum commands take an Ethereum specification (eg. for an account or transaction).

+
    syntax EthereumSimulation ::= ".EthereumSimulation"
+                                | EthereumCommand EthereumSimulation
+ // ----------------------------------------------------------------
+    rule <k> .EthereumSimulation                        => .K         ... </k>
+    rule <k> ETC                 .EthereumSimulation    => ETC        ... </k>
+    rule <k> ETC                 ETS:EthereumSimulation => ETC ~> ETS ... </k> requires ETS =/=K .EthereumSimulation
+
+    rule <k> #halt ~> ETC ETS:EthereumSimulation => #halt ~> ETC ~> ETS ... </k>
+
+    syntax EthereumSimulation ::= JSON
+ // ----------------------------------
+    rule <k> JSONINPUT:JSON => run JSONINPUT success .EthereumSimulation </k>
+
+

For verification purposes, it's much easier to specify a program in terms of its op-codes and not the hex-encoding that the tests use. +To do so, we'll extend sort JSON with some EVM specific syntax, and provide a "pretti-fication" to the nicer input form.

+
    syntax JSON ::= Bytes | OpCodes | Map | SubstateLogEntry | Account | TxType
+ // ---------------------------------------------------------------------------
+
+

Driving Execution

+
    +
  • start places #next on the <k> cell so that execution of the loaded state begin.
  • +
  • flush places #finalize on the <k> cell.
  • +
+
    syntax EthereumCommand ::= "start"
+ // ----------------------------------
+    rule <mode> NORMAL  </mode> <k> start => #execute ... </k>
+    rule <mode> VMTESTS </mode> <k> start => #execute ... </k>
+
+    syntax EthereumCommand ::= "flush"
+ // ----------------------------------
+    rule <mode> EXECMODE </mode> <statusCode> EVMC_SUCCESS            </statusCode> <k> #halt ~> flush => #finalizeTx(EXECMODE ==K VMTESTS)          ... </k>
+    rule <mode> EXECMODE </mode> <statusCode> _:ExceptionalStatusCode </statusCode> <k> #halt ~> flush => #finalizeTx(EXECMODE ==K VMTESTS) ~> #halt ... </k>
+
+
    +
  • startTx computes the sender of the transaction, and places loadTx on the k cell.
  • +
  • loadTx(_) loads the next transaction to be executed into the current state.
  • +
  • finishTx is a place-holder for performing necessary cleanup after a transaction.
  • +
+
    syntax EthereumCommand ::= "startTx"
+ // ------------------------------------
+    rule <k> startTx => #finalizeBlock ... </k>
+         <txPending> .List </txPending>
+
+    rule <k> startTx => loadTx( #sender( #getTxData(TXID), TW, TR, TS ) ) ... </k>
+         <txPending> ListItem(TXID:Int) ... </txPending>
+         <message>
+           <msgID>      TXID </msgID>
+           <sigV>       TW   </sigV>
+           <sigR>       TR   </sigR>
+           <sigS>       TS   </sigS>
+           ...
+         </message>
+
+    syntax EthereumCommand ::= loadTx ( Account ) [klabel(loadTx)]
+ // --------------------------------------------------------------
+    rule <k> loadTx(_) => #end EVMC_OUT_OF_GAS ... </k>
+         <schedule> SCHED </schedule>
+         <txPending> ListItem(TXID:Int) ... </txPending>
+         <message>
+           <msgID>      TXID     </msgID>
+           <to>         .Account </to>
+           <data>       CODE     </data>
+           ...
+         </message>
+       requires notBool #hasValidInitCode(lengthBytes(CODE), SCHED)
+
+    rule <k> loadTx(ACCTFROM)
+          => #accessAccounts ACCTFROM #newAddr(ACCTFROM, NONCE) #precompiledAccountsSet(SCHED)
+          ~> #loadAccessList(TA)
+          ~> #create ACCTFROM #newAddr(ACCTFROM, NONCE) VALUE CODE
+          ~> #finishTx ~> #finalizeTx(false) ~> startTx
+         ...
+         </k>
+         <schedule> SCHED </schedule>
+         <gasPrice> _ => #effectiveGasPrice(TXID) </gasPrice>
+         <callGas> _ => GLIMIT -Int G0(SCHED, CODE, true) </callGas>
+         <origin> _ => ACCTFROM </origin>
+         <callDepth> _ => -1 </callDepth>
+         <txPending> ListItem(TXID:Int) ... </txPending>
+         <coinbase> MINER </coinbase>
+         <message>
+           <msgID>      TXID     </msgID>
+           <txGasLimit> GLIMIT   </txGasLimit>
+           <to>         .Account </to>
+           <value>      VALUE    </value>
+           <data>       CODE     </data>
+           <txAccess>   TA       </txAccess>
+           ...
+         </message>
+         <account>
+           <acctID> ACCTFROM </acctID>
+           <balance> BAL => BAL -Int (GLIMIT *Int #effectiveGasPrice(TXID)) </balance>
+           <nonce> NONCE </nonce>
+           ...
+         </account>
+         <accessedAccounts> _ => #if Ghaswarmcoinbase << SCHED >> #then SetItem(MINER) #else .Set #fi </accessedAccounts>
+         <touchedAccounts> _ => SetItem(MINER) </touchedAccounts>
+      requires #hasValidInitCode(lengthBytes(CODE), SCHED)
+
+    rule <k> loadTx(ACCTFROM)
+          => #accessAccounts ACCTFROM ACCTTO #precompiledAccountsSet(SCHED)
+          ~> #loadAccessList(TA)
+          ~> #call ACCTFROM ACCTTO ACCTTO VALUE VALUE DATA false
+          ~> #finishTx ~> #finalizeTx(false) ~> startTx
+         ...
+         </k>
+         <schedule> SCHED </schedule>
+         <gasPrice> _ => #effectiveGasPrice(TXID) </gasPrice>
+         <callGas> _ => GLIMIT -Int G0(SCHED, DATA, false) </callGas>
+         <origin> _ => ACCTFROM </origin>
+         <callDepth> _ => -1 </callDepth>
+         <txPending> ListItem(TXID:Int) ... </txPending>
+         <coinbase> MINER </coinbase>
+         <message>
+           <msgID>      TXID   </msgID>
+           <txGasLimit> GLIMIT </txGasLimit>
+           <to>         ACCTTO </to>
+           <value>      VALUE  </value>
+           <data>       DATA   </data>
+           <txAccess>   TA     </txAccess>
+           ...
+         </message>
+         <account>
+           <acctID> ACCTFROM </acctID>
+           <balance> BAL => BAL -Int (GLIMIT *Int #effectiveGasPrice(TXID)) </balance>
+           <nonce> NONCE => NONCE +Int 1 </nonce>
+           ...
+         </account>
+         <accessedAccounts> _ => #if Ghaswarmcoinbase << SCHED >> #then SetItem(MINER) #else .Set #fi </accessedAccounts>
+         <touchedAccounts> _ => SetItem(MINER) </touchedAccounts>
+      requires ACCTTO =/=K .Account
+
+    syntax EthereumCommand ::= "#finishTx"
+ // --------------------------------------
+    rule <statusCode> _:ExceptionalStatusCode </statusCode> <k> #halt ~> #finishTx => #popCallStack ~> #popWorldState                   ... </k>
+    rule <statusCode> EVMC_REVERT             </statusCode> <k> #halt ~> #finishTx => #popCallStack ~> #popWorldState ~> #refund GAVAIL ... </k> <gas> GAVAIL </gas>
+
+    rule <statusCode> EVMC_SUCCESS </statusCode>
+         <k> #halt ~> #finishTx => #mkCodeDeposit ACCT ... </k>
+         <id> ACCT </id>
+         <txPending> ListItem(TXID:Int) ... </txPending>
+         <message>
+           <msgID> TXID     </msgID>
+           <to>    .Account </to>
+           ...
+         </message>
+
+    rule <statusCode> EVMC_SUCCESS </statusCode>
+         <k> #halt ~> #finishTx => #popCallStack ~> #dropWorldState ~> #refund GAVAIL ... </k>
+         <gas> GAVAIL </gas>
+         <txPending> ListItem(TXID:Int) ... </txPending>
+         <message>
+           <msgID> TXID </msgID>
+           <to>    TT   </to>
+           ...
+         </message>
+      requires TT =/=K .Account
+
+    syntax EthereumCommand ::= #loadAccessList ( JSON )              [klabel(#loadAccessList)]
+                             | #loadAccessListAux ( Account , List ) [klabel(#loadAccessListAux)]
+ // ---------------------------------------------------------------------------------------------
+    rule <k> #loadAccessList ([ .JSONs ]) => .K ... </k>
+         <schedule> SCHED </schedule>
+      requires Ghasaccesslist << SCHED >>
+
+    rule <k> #loadAccessList ([ _ ]) => .K ... </k>
+         <schedule> SCHED </schedule>
+      requires notBool Ghasaccesslist << SCHED >>
+
+    rule <k> #loadAccessList ([[ACCT, [STRG:JSONs]], REST])
+          => #loadAccessListAux (#asAccount(ACCT), #parseAccessListStorageKeys([STRG]))
+          ~> #loadAccessList ([REST])
+         ...
+         </k>
+         <schedule> SCHED </schedule>
+      requires Ghasaccesslist << SCHED >>
+
+    rule <k> #loadAccessListAux (ACCT, (ListItem(STRGK) STRGKS))
+          => #accessStorage ACCT STRGK:Int
+          ~> #loadAccessListAux (ACCT, STRGKS)
+         ...
+         </k>
+         <schedule> SCHED </schedule>
+         <callGas> GLIMIT => GLIMIT -Int Gaccessliststoragekey < SCHED > </callGas>
+
+    rule <k> #loadAccessListAux (ACCT, .List) => #accessAccounts ACCT ... </k>
+         <schedule> SCHED </schedule>
+         <callGas> GLIMIT => GLIMIT -Int Gaccesslistaddress < SCHED > </callGas>
+
+
    +
  • exception only clears from the <k> cell if there is an exception preceding it.
  • +
  • failure_ holds the name of a test that failed if a test does fail.
  • +
  • success sets the <exit-code> to 0 and the <mode> to SUCCESS.
  • +
+
    syntax Mode ::= "SUCCESS"
+ // -------------------------
+
+    syntax EthereumCommand ::= "exception" | "status" StatusCode
+ // ------------------------------------------------------------
+    rule <statusCode> _:ExceptionalStatusCode </statusCode>
+         <k> #halt ~> exception => .K ... </k>
+
+    rule <k> status SC => .K ... </k> <statusCode> SC </statusCode>
+
+    syntax EthereumCommand ::= "failure" String | "success"
+ // -------------------------------------------------------
+    rule <k> success => .K ... </k>
+         <exit-code> _ => 0 </exit-code>
+         <mode> _ => SUCCESS </mode>
+
+    rule <k>          failure _ => .K ... </k>
+    rule <k> #halt ~> failure _ => .K ... </k>
+
+

Running Tests

+
    +
  • run runs a given set of Ethereum tests (from the test-set).
  • +
+

Note that TEST is sorted here so that key "network" comes before key "pre".

+
    syntax EthereumCommand ::= "run" JSON
+ // -------------------------------------
+    rule <k> run { .JSONs } => .K ... </k>
+    rule <k> run { TESTID : { TEST:JSONs } , TESTS }
+          => run ( TESTID : { qsortJSONs(TEST) } )
+          ~> #if #hasPost?( { TEST } ) #then .K #else exception #fi
+          ~> clear
+          ~> run { TESTS }
+         ...
+         </k>
+
+    syntax Bool ::= "#hasPost?" "(" JSON ")" [function]
+ // ---------------------------------------------------
+    rule #hasPost? ({ .JSONs }) => false
+    rule #hasPost? ({ (KEY:String) : _ , REST }) => (KEY in #postKeys) orBool #hasPost? ({ REST })
+
+
    +
  • #loadKeys are all the JSON nodes which should be considered as loads before execution.
  • +
+
    syntax Set ::= "#loadKeys" [function]
+ // -------------------------------------
+    rule #loadKeys => ( SetItem("env") SetItem("pre") SetItem("rlp") SetItem("network") SetItem("genesisRLP") SetItem("withdrawals") )
+
+    rule <k> run  TESTID : { KEY : (VAL:JSON) , REST } => load KEY : VAL ~> run TESTID : { REST } ... </k>
+      requires KEY in #loadKeys
+
+    rule <k> run _TESTID : { "blocks" : [ { KEY : VAL , REST1 => REST1 }, .JSONs ] , ( REST2 => KEY : VAL , REST2 ) } ... </k>
+    rule <k> run  TESTID : { "blocks" : [ { .JSONs }, .JSONs ] , REST } => run TESTID : { REST }                      ... </k>
+
+
    +
  • #execKeys are all the JSON nodes which should be considered for execution (between loading and checking).
  • +
+
    syntax Set ::= "#execKeys" [function]
+ // -------------------------------------
+    rule #execKeys => ( SetItem("exec") SetItem("lastblockhash") )
+
+    rule <k> run  TESTID : { KEY : (VAL:JSON) , NEXT , REST } => run TESTID : { NEXT , KEY : VAL , REST } ... </k>
+      requires KEY in #execKeys
+
+    rule <k> run _TESTID : { "exec" : (EXEC:JSON) } => loadCallState EXEC ~> start ~> flush ... </k>
+    rule <k> run _TESTID : { "lastblockhash" : (_:String) } => #startBlock ~> startTx    ... </k>
+
+    rule <k> load "exec" : J => loadCallState J ... </k>
+
+    rule <k> loadCallState { "caller" : (ACCTFROM:Int), REST => REST } ... </k> <caller> _ => ACCTFROM </caller>
+    rule <k> loadCallState { "origin" : (ORIG:Int), REST => REST }     ... </k> <origin> _ => ORIG     </origin>
+    rule <k> loadCallState { "address" : (ACCTTO:Int), REST => REST }  ... </k> <id>     _ => ACCTTO   </id>
+
+    rule <k> loadCallState { "code" : (CODE:OpCodes), REST } => #loadProgram #asmOpCodes(CODE) ~> loadCallState { REST } ... </k>
+
+    rule <k> loadCallState { "usegas" : (USEGAS:Bool), REST => REST }  ... </k> <useGas> _ => USEGAS </useGas>
+
+    rule <k> loadCallState { KEY : ((VAL:String) => #parseWord(VAL)), _ } ... </k>
+      requires KEY in (SetItem("gas") SetItem("gasPrice") SetItem("value"))
+
+    rule <k> loadCallState { KEY : ((VAL:String) => #parseHexWord(VAL)), _ } ... </k>
+      requires KEY in (SetItem("address") SetItem("caller") SetItem("origin"))
+
+    rule <k> loadCallState { "code" : ((CODE:String) => #parseByteStack(CODE)), _ } ... </k>
+
+
    +
  • #postKeys are a subset of #checkKeys which correspond to post-state account checks.
  • +
  • #checkKeys are all the JSON nodes which should be considered as checks after execution.
  • +
+
    syntax Set ::= "#postKeys" [function] | "#allPostKeys" [function] | "#checkKeys" [function]
+ // -------------------------------------------------------------------------------------------
+    rule #postKeys    => ( SetItem("post") SetItem("postState") SetItem("postStateHash") )
+    rule #allPostKeys => ( #postKeys SetItem("expect") SetItem("export") SetItem("expet") )
+    rule #checkKeys   => ( #allPostKeys SetItem("logs") SetItem("out") SetItem("gas")
+                           SetItem("blockHeader") SetItem("transactions") SetItem("uncleHeaders") SetItem("genesisBlockHeader")
+                         )
+
+    rule <k> run TESTID : { KEY : (VAL:JSON) , REST } => run TESTID : { REST } ~> check TESTID : { "post" : VAL } ... </k> requires KEY in #allPostKeys
+    rule <k> run TESTID : { KEY : (VAL:JSON) , REST } => run TESTID : { REST } ~> check TESTID : { KEY    : VAL } ... </k> requires KEY in #checkKeys andBool notBool KEY in #allPostKeys
+
+
    +
  • #discardKeys are all the JSON nodes in the tests which should just be ignored.
  • +
+
    syntax Set ::= "#discardKeys" [function]
+ // ----------------------------------------
+    rule #discardKeys => ( SetItem("//") SetItem("_info") SetItem("callcreates") SetItem("sealEngine") SetItem("transactionSequence") SetItem("chainname") )
+
+    rule <k> run TESTID : { KEY : _ , REST } => run TESTID : { REST } ... </k> requires KEY in #discardKeys
+
+
    +
  • driver.md specific handling of state-utils commands
  • +
+
    rule <k> load "account" : { ACCTID : ACCT } => loadAccount ACCTID ACCT ... </k>
+
+    rule <k> loadAccount _ { "balance" : ((VAL:String)      => #parseWord(VAL)),        _ } ... </k>
+    rule <k> loadAccount _ { "nonce"   : ((VAL:String)      => #parseWord(VAL)),        _ } ... </k>
+    rule <k> loadAccount _ { "code"    : ((CODE:String)     => #parseByteStack(CODE)),  _ } ... </k>
+    rule <k> loadAccount _ { "storage" : ({ STORAGE:JSONs } => #parseMap({ STORAGE })), _ } ... </k>
+
+    rule <k> loadTransaction _ { "type"                 : (TT:Bytes => #asWord(TT)), _         } ... </k>
+    rule <k> loadTransaction _ { "chainID"              : (TC:Bytes => #asWord(TC)), _         } ... </k>
+    rule <k> loadTransaction _ { "gasLimit"             : (TG:Bytes => #asWord(TG)), _         } ... </k>
+    rule <k> loadTransaction _ { "gasPrice"             : (TP:Bytes => #asWord(TP)), _         } ... </k>
+    rule <k> loadTransaction _ { "nonce"                : (TN:Bytes => #asWord(TN)), _         } ... </k>
+    rule <k> loadTransaction _ { "v"                    : (TW:Bytes => #asWord(TW)), _         } ... </k>
+    rule <k> loadTransaction _ { "value"                : (TV:Bytes => #asWord(TV)), _         } ... </k>
+    rule <k> loadTransaction _ { "to"                   : (TT:Bytes => #asAccount(TT)), _      } ... </k>
+    rule <k> loadTransaction _ { "r"                    : (TR:Bytes => #padToWidth(32, TR)), _ } ... </k> requires lengthBytes(TR) <Int 32
+    rule <k> loadTransaction _ { "s"                    : (TS:Bytes => #padToWidth(32, TS)), _ } ... </k> requires lengthBytes(TS) <Int 32
+    rule <k> loadTransaction _ { "maxPriorityFeePerGas" : (V:Bytes  => #asWord(V)), _          } ... </k>
+    rule <k> loadTransaction _ { "maxFeePerGas"         : (V:Bytes  => #asWord(V)), _          } ... </k>
+
+

Checking State

+
    +
  • check_ checks if an account/transaction appears in the world-state as stated.
  • +
+
    syntax EthereumCommand ::= "check" JSON
+ // ---------------------------------------
+    rule <k> #halt ~> check J:JSON => check J ~> #halt ... </k>
+
+    rule <k> check DATA : { .JSONs } => .K ... </k> requires DATA =/=String "transactions"
+    rule <k> check DATA : [ .JSONs ] => .K ... </k> requires DATA =/=String "ommerHeaders"
+
+    rule <k> check DATA : { (KEY:String) : VALUE , REST } => check DATA : { KEY : VALUE } ~> check DATA : { REST } ... </k>
+      requires REST =/=K .JSONs andBool notBool DATA in (SetItem("callcreates") SetItem("transactions"))
+
+    rule <k> check DATA : [ { TEST } , REST ] => check DATA : { TEST } ~> check DATA : [ REST ] ... </k>
+      requires DATA =/=String "transactions"
+
+    rule <k> check (KEY:String) : { JS:JSONs => qsortJSONs(JS) } ... </k>
+      requires KEY in (SetItem("callcreates")) andBool notBool sortedJSONs(JS)
+
+    rule <k> check TESTID : { "post" : (POST:String) } => check "blockHeader" : {  "stateRoot" : #parseWord(POST) } ~> failure TESTID ... </k>
+    rule <k> check TESTID : { "post" : { POST } } => check "account" : { POST } ~> failure TESTID ... </k>
+
+    rule <k> check "account" : { ACCTID:Int : { KEY : VALUE , REST } } => check "account" : { ACCTID : { KEY : VALUE } } ~> check "account" : { ACCTID : { REST } } ... </k>
+      requires REST =/=K .JSONs
+
+    rule <k> check "account" : { ((ACCTID:String) => #parseAddr(ACCTID)) : _ACCT }                             ... </k>
+    rule <k> check "account" : { (_ACCT:Int) : { "balance" : ((VAL:String)      => #parseWord(VAL)) } }        ... </k>
+    rule <k> check "account" : { (_ACCT:Int) : { "nonce"   : ((VAL:String)      => #parseWord(VAL)) } }        ... </k>
+    rule <k> check "account" : { (_ACCT:Int) : { "code"    : ((CODE:String)     => #parseByteStack(CODE)) } }  ... </k>
+    rule <k> check "account" : { (_ACCT:Int) : { "storage" : ({ STORAGE:JSONs } => #parseMap({ STORAGE })) } } ... </k>
+
+    rule <mode> EXECMODE </mode>
+         <k> check "account" : { ACCT : { "balance" : (BAL:Int) } } => .K ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <balance> BAL </balance>
+           ...
+         </account>
+      requires EXECMODE =/=K VMTESTS
+
+    rule <mode> VMTESTS </mode>
+         <k> check "account" : { _ACCT : { "balance" : (_:Int) } } => .K ... </k>
+
+    rule <k> check "account" : {  ACCT : { "nonce" : (NONCE:Int) } } => .K ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <nonce> NONCE </nonce>
+           ...
+         </account>
+
+    rule <k> check "account" : { ACCT : { "storage" : (STORAGE:Map) } } => .K ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <storage> ACCTSTORAGE </storage>
+           ...
+         </account>
+      requires #removeZeros(ACCTSTORAGE) ==K STORAGE
+
+    rule <k> check "account" : { ACCT : { "code" : (CODE:Bytes) } } => .K ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <code> CODE </code>
+           ...
+         </account>
+
+
    +
  • #removeZeros removes any entries in a map with zero values.
  • +
+
    syntax Map ::= #removeZeros ( Map )        [klabel(#removeZeros), function]
+                 | #removeZeros ( List , Map ) [klabel(#removeZerosAux), function]
+ // ------------------------------------------------------------------------------
+    rule #removeZeros( M )                                   => #removeZeros(Set2List(keys(M)), M)
+    rule #removeZeros( .List, .Map )                         => .Map
+    rule #removeZeros( ListItem(KEY) L, KEY |-> 0 REST )     => #removeZeros(L, REST)
+    rule #removeZeros( ListItem(KEY) L, KEY |-> VALUE REST ) => KEY |-> VALUE #removeZeros(L, REST) requires VALUE =/=K 0
+
+

Here we check the other post-conditions associated with an EVM test.

+
    rule <k> check TESTID : { "out" : OUT } => check "out" : OUT ~> failure TESTID ... </k>
+ // ---------------------------------------------------------------------------------------
+    rule <k> check "out" : ((OUT:String) => #parseByteStack(OUT)) ... </k>
+    rule <k> check "out" : OUT => .K ... </k> <output> OUT </output>
+
+    rule <k> check TESTID : { "logs" : LOGS } => check "logs" : LOGS ~> failure TESTID ... </k>
+ // -------------------------------------------------------------------------------------------
+    rule <k> check "logs" : HASH:String => .K ... </k> <log> SL </log> requires #parseHexBytes(Keccak256(#rlpEncodeLogs(SL))) ==K #parseByteStack(HASH)
+
+    rule <k> check TESTID : { "gas" : GLEFT } => check "gas" : GLEFT ~> failure TESTID ... </k>
+ // -------------------------------------------------------------------------------------------
+    rule <k> check "gas" : ((GLEFT:String) => #parseWord(GLEFT)) ... </k>
+    rule <k> check "gas" : GLEFT => .K ... </k> <gas> GLEFT </gas>
+
+    rule check TESTID : { "blockHeader" : BLOCKHEADER } => check "blockHeader" : BLOCKHEADER ~> failure TESTID
+ // ----------------------------------------------------------------------------------------------------------
+    rule <k> check "blockHeader" : { KEY : VALUE , REST } => check "blockHeader" : { KEY : VALUE } ~> check "blockHeader" : { REST } ... </k>
+      requires REST =/=K .JSONs
+
+    rule <k> check "blockHeader" : { _KEY : (VALUE:String => #parseByteStack(VALUE)) } ... </k>
+
+    rule <k> check "blockHeader" : {  KEY : (VALUE:Bytes => #asWord(VALUE)) } ... </k>
+      requires KEY in ( SetItem("coinbase") SetItem("difficulty") SetItem("gasLimit") SetItem("gasUsed")
+                        SetItem("mixHash") SetItem("nonce") SetItem("number") SetItem("parentHash")
+                        SetItem("receiptTrie") SetItem("stateRoot") SetItem("timestamp")
+                        SetItem("transactionsTrie") SetItem("uncleHash") SetItem("baseFeePerGas") SetItem("withdrawalsRoot")
+                      )
+
+    rule <k> check "blockHeader" : { "bloom"            : VALUE } => .K ... </k> <logsBloom>        VALUE </logsBloom>
+    rule <k> check "blockHeader" : { "coinbase"         : VALUE } => .K ... </k> <coinbase>         VALUE </coinbase>
+    rule <k> check "blockHeader" : { "difficulty"       : VALUE } => .K ... </k> <difficulty>       VALUE </difficulty>
+    rule <k> check "blockHeader" : { "extraData"        : VALUE } => .K ... </k> <extraData>        VALUE </extraData>
+    rule <k> check "blockHeader" : { "gasLimit"         : VALUE } => .K ... </k> <gasLimit>         VALUE </gasLimit>
+    rule <k> check "blockHeader" : { "gasUsed"          : VALUE } => .K ... </k> <gasUsed>          VALUE </gasUsed>
+    rule <k> check "blockHeader" : { "mixHash"          : VALUE } => .K ... </k> <mixHash>          VALUE </mixHash>
+    rule <k> check "blockHeader" : { "nonce"            : VALUE } => .K ... </k> <blockNonce>       VALUE </blockNonce>
+    rule <k> check "blockHeader" : { "number"           : VALUE } => .K ... </k> <number>           VALUE </number>
+    rule <k> check "blockHeader" : { "parentHash"       : VALUE } => .K ... </k> <previousHash>     VALUE </previousHash>
+    rule <k> check "blockHeader" : { "receiptTrie"      : VALUE } => .K ... </k> <receiptsRoot>     VALUE </receiptsRoot>
+    rule <k> check "blockHeader" : { "stateRoot"        : VALUE } => .K ... </k> <stateRoot>        VALUE </stateRoot>
+    rule <k> check "blockHeader" : { "timestamp"        : VALUE } => .K ... </k> <timestamp>        VALUE </timestamp>
+    rule <k> check "blockHeader" : { "transactionsTrie" : VALUE } => .K ... </k> <transactionsRoot> VALUE </transactionsRoot>
+    rule <k> check "blockHeader" : { "uncleHash"        : VALUE } => .K ... </k> <ommersHash>       VALUE </ommersHash>
+    rule <k> check "blockHeader" : { "baseFeePerGas"    : VALUE } => .K ... </k> <baseFee>          VALUE </baseFee>
+    rule <k> check "blockHeader" : { "withdrawalsRoot"  : VALUE } => .K ... </k> <withdrawalsRoot>  VALUE </withdrawalsRoot>
+
+    rule <k> check "blockHeader" : { "hash": HASH:Bytes } => .K ...</k>
+         <previousHash>     HP </previousHash>
+         <ommersHash>       HO </ommersHash>
+         <coinbase>         HC </coinbase>
+         <stateRoot>        HR </stateRoot>
+         <transactionsRoot> HT </transactionsRoot>
+         <receiptsRoot>     HE </receiptsRoot>
+         <logsBloom>        HB </logsBloom>
+         <difficulty>       HD </difficulty>
+         <number>           HI </number>
+         <gasLimit>         HL </gasLimit>
+         <gasUsed>          HG </gasUsed>
+         <timestamp>        HS </timestamp>
+         <extraData>        HX </extraData>
+         <mixHash>          HM </mixHash>
+         <blockNonce>       HN </blockNonce>
+         <baseFee>          HF </baseFee>
+         <withdrawalsRoot>  WR </withdrawalsRoot>
+      requires #blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN)         ==Int #asWord(HASH)
+        orBool #blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF)     ==Int #asWord(HASH)
+        orBool #blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WR) ==Int #asWord(HASH)
+
+    rule check TESTID : { "genesisBlockHeader" : BLOCKHEADER } => check "genesisBlockHeader" : BLOCKHEADER ~> failure TESTID
+ // ------------------------------------------------------------------------------------------------------------------------
+    rule <k> check "genesisBlockHeader" : { KEY : VALUE , REST } => check "genesisBlockHeader" : { KEY : VALUE } ~> check "genesisBlockHeader" : { REST } ... </k>
+      requires REST =/=K .JSONs
+
+    rule <k> check "genesisBlockHeader" : { KEY : _ } => .K ... </k> requires KEY =/=String "hash"
+
+    rule <k> check "genesisBlockHeader" : { "hash": (HASH:String => #asWord(#parseByteStack(HASH))) } ... </k>
+    rule <k> check "genesisBlockHeader" : { "hash": HASH } => .K ... </k>
+         <blockhashes> ... ListItem(HASH) ListItem(_) </blockhashes>
+
+    rule <k> check TESTID : { "transactions" : TRANSACTIONS } => check "transactions" : TRANSACTIONS ~> failure TESTID ... </k>
+ // ---------------------------------------------------------------------------------------------------------------------------
+    rule <k> check "transactions" : [ .JSONs ] => .K ... </k> <txOrder> .List                    </txOrder>
+    rule <k> check "transactions" : { .JSONs } => .K ... </k> <txOrder> ListItem(_) => .List ... </txOrder>
+
+    rule <k> check "transactions" : [ TRANSACTION , REST ] => check "transactions" : TRANSACTION   ~> check "transactions" : [ REST ] ... </k>
+    rule <k> check "transactions" : { KEY : VALUE , REST } => check "transactions" : (KEY : VALUE) ~> check "transactions" : { REST } ... </k>
+
+    rule <k> check "transactions" : ("sender" : (VALUE:Bytes  => #asAccount(VALUE)))      ... </k>
+    rule <k> check "transactions" : (_KEY     : (VALUE:String => #parseByteStack(VALUE))) ... </k>
+    rule <k> check "transactions" : ("to"     : (VALUE:Bytes  => #asAccount(VALUE)))      ... </k>
+    rule <k> check "transactions" : ( KEY     : (VALUE:Bytes  => #padToWidth(32, VALUE))) ... </k> requires KEY in (SetItem("r") SetItem("s")) andBool lengthBytes(VALUE) <Int 32
+    rule <k> check "transactions" : ( KEY     : (VALUE:Bytes  => #asWord(VALUE)))         ... </k> requires KEY in (SetItem("gasLimit") SetItem("gasPrice") SetItem("nonce") SetItem("v") SetItem("value") SetItem("chainId") SetItem("type") SetItem("maxFeePerGas") SetItem("maxPriorityFeePerGas"))
+    rule <k> check "transactions" : ("type"   : (VALUE:Int    => #asmTxPrefix(VALUE)))    ... </k>
+
+    rule <k> check "transactions" : "accessList" : [ ACCESSLIST , REST ] => check "transactions" : "accessList" : ACCESSLIST  ~> check "transactions" : "accessList" : [ REST ] ... </k>
+    rule <k> check "transactions" : "accessList" : { "address" : V1 , "storageKeys": V2 , .JSONs } => check "transactions" : "accessList" : "address" : #parseHexWord(V1) : "storageKeys" : V2  ... </k>
+    rule <k> check "transactions" : "accessList" : "address" : ADDR : "storageKeys" : [ KEY , REST ] => check "transactions" : "accessList" : "address" : ADDR : "storageKeys" : #parseHexWord(KEY) ~> check "transactions" : "accessList" : "address" : ADDR : "storageKeys" : [ REST ] ... </k>
+
+    rule <k> check "transactions" : "accessList" : "address" : _    : "storageKeys" : [ .JSONs ] => .K ... </k>
+    rule <k> check "transactions" : "accessList" : [ .JSONs ] => .K ... </k>
+
+    rule <k> check "transactions" : "accessList" : "address" : ADDR : "storageKeys" : KEY        => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <txAccess> TA </txAccess> ... </message> requires isInAccessList(ADDR, KEY, TA)
+    rule <k> check "transactions" : ("data"                 : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <data>          VALUE </data>           ... </message>
+    rule <k> check "transactions" : ("gasLimit"             : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <txGasLimit>    VALUE </txGasLimit>     ... </message>
+    rule <k> check "transactions" : ("gasPrice"             : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <txGasPrice>    VALUE </txGasPrice>     ... </message>
+    rule <k> check "transactions" : ("nonce"                : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <txNonce>       VALUE </txNonce>        ... </message>
+    rule <k> check "transactions" : ("r"                    : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <sigR>          VALUE </sigR>           ... </message>
+    rule <k> check "transactions" : ("s"                    : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <sigS>          VALUE </sigS>           ... </message>
+    rule <k> check "transactions" : ("to"                   : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <to>            VALUE </to>             ... </message>
+    rule <k> check "transactions" : ("v"                    : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <sigV>          VALUE </sigV>           ... </message>
+    rule <k> check "transactions" : ("value"                : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <value>         VALUE </value>          ... </message>
+    rule <k> check "transactions" : ("chainId"              : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <txChainID>     VALUE </txChainID>      ... </message>
+    rule <k> check "transactions" : ("type"                 : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <txType>        VALUE </txType>         ... </message>
+    rule <k> check "transactions" : ("maxFeePerGas"         : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <txMaxFee>      VALUE </txMaxFee>       ... </message>
+    rule <k> check "transactions" : ("maxPriorityFeePerGas" : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <txPriorityFee> VALUE </txPriorityFee>  ... </message>
+    rule <k> check "transactions" : ("sender"               : VALUE) => .K ... </k> <txOrder> ListItem(TXID) ... </txOrder> <message> <msgID> TXID </msgID> <sigV> TW </sigV> <sigR> TR </sigR> <sigS> TS </sigS> ... </message> requires #sender( #getTxData(TXID), TW, TR, TS ) ==K VALUE
+
+    syntax Bool ::= isInAccessListStorage ( Int , JSON )    [klabel(isInAccessListStorage), function]
+                  | isInAccessList ( Account , Int , JSON ) [klabel(isInAccessList), function]
+ // -------------------------------------------------------------------------------------------------
+    rule isInAccessList(_   , _  , [.JSONs                     ]) => false
+    rule isInAccessList(ADDR, KEY, [[ACCT, [STRG:JSONs]],  REST]) => #if   ADDR ==K #asAccount(ACCT)
+                                                                     #then isInAccessListStorage (KEY, [STRG]) orBool isInAccessList(ADDR, KEY, [REST])
+                                                                     #else isInAccessList(ADDR, KEY, [REST]) #fi
+
+    rule isInAccessListStorage(_  , [.JSONs    ]) => false
+    rule isInAccessListStorage(KEY, [SKEY, REST]) => #if   KEY ==Int #asWord(SKEY)
+                                                     #then true
+                                                     #else isInAccessListStorage(KEY, [REST]) #fi
+
+

TODO: case with nonzero ommers.

+
    rule <k> check TESTID : { "uncleHeaders" : OMMERS } => check "ommerHeaders" : OMMERS ~> failure TESTID ... </k>
+ // ---------------------------------------------------------------------------------------------------------------
+    rule <k> check "ommerHeaders" : [ .JSONs ] => .K ... </k> <ommerBlockHeaders> [ .JSONs ] </ommerBlockHeaders>
+
+
endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/edsl.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/edsl.md deleted file mode 100644 index 676d5f70d2..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/edsl.md +++ /dev/null @@ -1,35 +0,0 @@ -eDSL High-Level Notations -========================= - -The eDSL high-level notations make the EVM specifications more succinct and closer to their high-level specifications. -The succinctness increases the readability, and the closeness helps "eye-ball validation" of the specification refinement. -The high-level notations are defined by translation to the corresponding EVM terms, and thus can be freely used with other EVM terms. -The notations are inspired by the production compilers of the smart contract languages like Solidity and Vyper, and their definition is derived by formalizing the corresponding translation made by the compilers. - -```k -requires "buf.md" -requires "hashed-locations.md" -requires "abi.md" -requires "gas.md" -requires "optimizations.md" - -module EDSL - imports BUF - imports HASHED-LOCATIONS - imports SOLIDITY-FIELDS - imports EVM-ABI - imports EVM-OPTIMIZATIONS - imports INFINITE-GAS - imports BIN-RUNTIME -endmodule - -module BIN-RUNTIME - imports EVM-ABI - - syntax Contract - syntax Bytes ::= #binRuntime ( Contract ) [alias, klabel(binRuntime), symbol, function, no-evaluators] - | #initBytecode ( Contract ) [alias, klabel(initBytecode), symbol, function, no-evaluators] - // ------------------------------------------------------------------------------------------------------ - -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/edsl/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/edsl/index.html new file mode 100644 index 0000000000..6ff6e96768 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/edsl/index.html @@ -0,0 +1,221 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

eDSL High-Level Notations

+

The eDSL high-level notations make the EVM specifications more succinct and closer to their high-level specifications. +The succinctness increases the readability, and the closeness helps "eye-ball validation" of the specification refinement. +The high-level notations are defined by translation to the corresponding EVM terms, and thus can be freely used with other EVM terms. +The notations are inspired by the production compilers of the smart contract languages like Solidity and Vyper, and their definition is derived by formalizing the corresponding translation made by the compilers.

+
requires "buf.md"
+requires "hashed-locations.md"
+requires "abi.md"
+requires "gas.md"
+requires "optimizations.md"
+
+module EDSL
+    imports BUF
+    imports HASHED-LOCATIONS
+    imports SOLIDITY-FIELDS
+    imports EVM-ABI
+    imports EVM-OPTIMIZATIONS
+    imports INFINITE-GAS
+    imports BIN-RUNTIME
+endmodule
+
+module BIN-RUNTIME
+    imports EVM-ABI
+
+    syntax Contract
+    syntax Bytes ::= #binRuntime ( Contract )   [alias, klabel(binRuntime),   symbol, function, no-evaluators] 
+                   | #initBytecode ( Contract ) [alias, klabel(initBytecode), symbol, function, no-evaluators]
+ // ------------------------------------------------------------------------------------------------------
+
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-imp-specs.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-imp-specs.md deleted file mode 100644 index ae87d784f5..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-imp-specs.md +++ /dev/null @@ -1,144 +0,0 @@ -Scripting language for imperative specifications (SOLAR-style) -============================================================== - -```k -requires "evm.md" - -module EVM-IMP-SPECS - imports ID - imports EVM - - configuration - - - .Map - -``` - -Core specification language ---------------------------- - -```k - syntax EthereumCommand ::= "#assert" Exp [strict] - | "#assertFailure" Exp - rule #assert R:Bool => . ... - requires R - - rule #assert R:Bool => #assertFailure R ... - requires notBool R - - syntax EthereumCommand ::= "#assume" Exp [strict] - - //Adapted from driver.md `failure` - syntax EthereumCommand ::= "#takeHalt" String - // --------------------------------------------- - rule #takeHalt _ => . ... - rule #halt ~> #takeHalt _ => . ... - - //Shortcut for #mkCall and required setup - syntax EthereumCommand ::= "#mkCallShortcut" Id Int Int Bytes Id - rule #mkCallShortcut V_CONF_BACKUP CALLER_ID ACCT_ID ARGS V_SAVEOUT_ID - => #restoreEthereum V_CONF_BACKUP - ~> #mkCall CALLER_ID ACCT_ID ACCT_ID PARSEDCODE 0 ARGS false - ~> #takeHalt "failure" - ~> #saveOutput V_SAVEOUT_ID - ... - - ACCT_ID - PARSEDCODE - - //Dummy command at the beginning of to ensure execution doesn't start with a spec rule - syntax EthereumCommand ::= "#dummy" - rule #dummy => . ... -``` - -Configuration access commands ------------------------------ - -```k - syntax EthereumCommand ::= "#saveEthereum" Id - rule #saveEthereum X => . ... - ETH - VARS => VARS[X <- ETH] - - syntax EthereumCommand ::= "#restoreEthereum" Id - rule #restoreEthereum X => . ... - ( _ => ETH ) - ... X |-> ETH ... - - syntax EthereumCommand ::= "#saveOutput" Id - rule #saveOutput X => . ... - OUT - VARS => VARS[X <- OUT] - - syntax EthereumCommand ::= "#saveStorage" Int Id - rule #saveStorage ACCT_ID X => . ... - ACCT_ID - S - VARS => VARS[X <- S] - - syntax EthereumCommand ::= "#saveLog" Id - rule #saveLog X => . ... - L - VARS => VARS[X <- L] - - syntax EthereumCommand ::= "#saveRefund" Id - rule #saveRefund X => . ... - R - VARS => VARS[X <- R] -``` - -Specification expression language ---------------------------------- - -```k - syntax KResult ::= Bytes | StatusCode | List | Map - - syntax Exp ::= Exp "==S" Exp [seqstrict] - | Exp "=/=S" Exp [seqstrict] - | Exp "+List" Exp [seqstrict] - | KResult - - rule R1:KResult ==S R2:KResult => R1 ==K R2 ... - rule R1:KResult =/=S R2:KResult => R1 =/=K R2 ... - rule L1:List +List L2:List => L1 L2 ... - - // Boolean expressions - syntax Exp ::= Exp "&&S" Exp [seqstrict, left] - > Exp "||S" Exp [seqstrict, left] - - rule R1:Bool &&S R2:Bool => R1 andBool R2 ... - rule R1:Bool ||S R2:Bool => R1 orBool R2 ... - - // Configuration access and other helpers - syntax Exp ::= "#getStatusCode" - | "#getOutput" - | "#getLog" - | "#getRefund" - | #getStorage ( Int ) - | #var( Id ) - | #sizeBytesExp ( Exp ) [strict] - - rule #getStatusCode => SC ... - SC - - rule #getOutput => OUT ... - OUT - - rule #getLog => L ... - L - - rule #getRefund => R ... - R - - rule #getStorage(ACCT_ID) => S ... - ACCT_ID - S - - rule #var(X) => VARS[X] ... - VARS - - rule #sizeBytesExp(WS:Bytes) => lengthBytes(WS) ... - -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-imp-specs/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-imp-specs/index.html new file mode 100644 index 0000000000..0a8e211eed --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-imp-specs/index.html @@ -0,0 +1,341 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Scripting language for imperative specifications (SOLAR-style)

+
requires "evm.md"
+
+module EVM-IMP-SPECS
+    imports ID
+    imports EVM
+
+    configuration
+      <kevm-specs>
+        <kevm/>
+        <commandVars> .Map </commandVars>
+      </kevm-specs>
+
+

Core specification language

+
    syntax EthereumCommand ::= "#assert" Exp [strict]
+                             | "#assertFailure" Exp
+    rule <k> #assert R:Bool => . ... </k>
+      requires R
+
+    rule <k> #assert R:Bool => #assertFailure R ... </k>
+      requires notBool R
+
+    syntax EthereumCommand ::= "#assume" Exp [strict]
+
+    //Adapted from driver.md `failure`
+    syntax EthereumCommand ::= "#takeHalt" String
+ // ---------------------------------------------
+    rule <k>          #takeHalt _ => . ... </k>
+    rule <k> #halt ~> #takeHalt _ => . ... </k>
+
+    //Shortcut for #mkCall and required setup
+    syntax EthereumCommand ::= "#mkCallShortcut" Id Int Int Bytes Id
+    rule <k> #mkCallShortcut V_CONF_BACKUP CALLER_ID ACCT_ID ARGS V_SAVEOUT_ID
+          => #restoreEthereum V_CONF_BACKUP
+          ~> #mkCall CALLER_ID ACCT_ID ACCT_ID PARSEDCODE 0 ARGS false
+          ~> #takeHalt "failure"
+          ~> #saveOutput V_SAVEOUT_ID
+         ...
+         </k>
+        <acctID> ACCT_ID </acctID>
+        <code> PARSEDCODE </code>
+
+    //Dummy command at the beginning of <k> to ensure execution doesn't start with a spec rule 
+    syntax EthereumCommand ::= "#dummy"
+    rule <k> #dummy => . ... </k>
+
+

Configuration access commands

+
    syntax EthereumCommand ::= "#saveEthereum" Id
+    rule <k> #saveEthereum X => . ... </k>
+         <ethereum> ETH </ethereum>
+         <commandVars> VARS => VARS[X <- ETH] </commandVars>
+
+    syntax EthereumCommand ::= "#restoreEthereum" Id
+    rule <k> #restoreEthereum X => . ... </k>
+         (<ethereum> _ </ethereum> => <ethereum> ETH </ethereum>)
+         <commandVars>... X |-> ETH ...</commandVars>
+
+    syntax EthereumCommand ::= "#saveOutput" Id
+    rule <k> #saveOutput X => . ... </k>
+         <output> OUT </output>
+         <commandVars> VARS => VARS[X <- OUT] </commandVars>
+
+    syntax EthereumCommand ::= "#saveStorage" Int Id
+    rule <k> #saveStorage ACCT_ID X => . ... </k>
+         <acctID> ACCT_ID </acctID>
+         <storage> S </storage>
+         <commandVars> VARS => VARS[X <- S] </commandVars>
+
+    syntax EthereumCommand ::= "#saveLog" Id
+    rule <k> #saveLog X => . ... </k>
+         <log> L </log>
+         <commandVars> VARS => VARS[X <- L] </commandVars>
+
+    syntax EthereumCommand ::= "#saveRefund" Id
+    rule <k> #saveRefund X => . ... </k>
+         <refund> R </refund>
+         <commandVars> VARS => VARS[X <- R] </commandVars>
+
+

Specification expression language

+
    syntax KResult ::= Bytes | StatusCode | List | Map
+
+    syntax Exp ::= Exp "==S"  Exp  [seqstrict]
+                 | Exp "=/=S" Exp  [seqstrict]
+                 | Exp "+List" Exp [seqstrict]
+                 | KResult
+
+    rule <k> R1:KResult ==S  R2:KResult => R1 ==K  R2 ...</k>
+    rule <k> R1:KResult =/=S R2:KResult => R1 =/=K R2 ...</k>
+    rule <k> L1:List +List L2:List      => L1 L2      ...</k>
+
+    // Boolean expressions
+    syntax Exp ::= Exp "&&S" Exp [seqstrict, left]
+                 > Exp "||S" Exp [seqstrict, left]
+
+    rule <k> R1:Bool &&S R2:Bool => R1 andBool R2 ... </k>
+    rule <k> R1:Bool ||S R2:Bool => R1 orBool R2  ... </k>
+
+    // Configuration access and other helpers
+    syntax Exp ::= "#getStatusCode"
+                 | "#getOutput"
+                 | "#getLog"
+                 | "#getRefund"
+                 | #getStorage ( Int )
+                 | #var( Id )
+                 | #sizeBytesExp ( Exp ) [strict]
+
+    rule <k> #getStatusCode => SC ... </k>
+         <statusCode> SC </statusCode>
+
+    rule <k> #getOutput => OUT ... </k>
+         <output> OUT </output>
+
+    rule <k> #getLog => L ... </k>
+         <log> L </log>
+
+    rule <k> #getRefund => R ... </k>
+         <refund> R </refund>
+
+    rule <k> #getStorage(ACCT_ID) => S ... </k>
+         <acctID> ACCT_ID </acctID>
+         <storage> S </storage>
+
+    rule <k> #var(X) => VARS[X] ... </k>
+         <commandVars> VARS </commandVars>
+
+    rule <k> #sizeBytesExp(WS:Bytes) => lengthBytes(WS) ... </k>
+
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-types.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-types.md deleted file mode 100644 index 8255fe104f..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-types.md +++ /dev/null @@ -1,469 +0,0 @@ -Data-Structures over `Word` -=========================== - -EVM uses bounded 256 bit integer words, and sometimes also bytes (8 bit words). -Here we provide the arithmetic of these words, as well as some data-structures over them. -Both are implemented using K's `Int`. - -```k -requires "word.md" - -module EVM-TYPES - imports STRING - imports COLLECTIONS - imports K-EQUAL - imports JSON - imports WORD -``` - -Utilities ---------- - -### Boolean Conversions - -Primitives provide the basic conversion from K's sorts `Int` and `Bool` to EVM's words. - -- `bool2Word` interprets a `Bool` as a `Int`. -- `word2Bool` interprets a `Int` as a `Bool`. - -```k - syntax Int ::= bool2Word ( Bool ) [klabel(bool2Word), function, total, smtlib(bool2Word)] - // ----------------------------------------------------------------------------------------- - rule bool2Word( true ) => 1 - rule bool2Word( false ) => 0 - - syntax Bool ::= word2Bool ( Int ) [klabel(word2Bool), function, total] - // ---------------------------------------------------------------------- - rule word2Bool( W ) => false requires W ==Int 0 - rule word2Bool( W ) => true requires W =/=Int 0 -``` - -- `sgn` gives the twos-complement interperetation of the sign of a word. -- `abs` gives the twos-complement interperetation of the magnitude of a word. - -```k - syntax Int ::= sgn ( Int ) [klabel(sgn), function, total] - | abs ( Int ) [klabel(abs), function, total] - // --------------------------------------------------------- - rule sgn(I) => -1 requires pow255 <=Int I andBool I 1 requires 0 <=Int I andBool I 0 requires I 0 -Word I requires sgn(I) ==Int -1 - rule abs(I) => I requires sgn(I) ==Int 1 - rule abs(I) => 0 requires sgn(I) ==Int 0 -``` - -Word Operations ---------------- - -### Low-Level - -- `up/Int` performs integer division but rounds up instead of down. - -NOTE: Here, we choose to add `I2 -Int 1` to the numerator before doing the division to mimic the C++ implementation. -You could alternatively calculate `I1 modInt I2`, then add one to the normal integer division afterward depending on the result. - -```k - syntax Int ::= Int "up/Int" Int [function, total, smtlib(upDivInt)] - // ------------------------------------------------------------------- - rule _I1 up/Int 0 => 0 [concrete] - rule _I1 up/Int I2 => 0 requires I2 <=Int 0 [concrete] - rule I1 up/Int 1 => I1 [concrete] - rule I1 up/Int I2 => (I1 +Int (I2 -Int 1)) /Int I2 requires 1 log2Int(N) /Int 8 -``` - -The corresponding `Word` operations automatically perform the correct modulus for EVM words. -Warning: operands are assumed to be within the range of a 256 bit EVM word. Unbound integers may not return the correct result. - -```k - syntax Int ::= Int "+Word" Int [function, total] - | Int "*Word" Int [function, total] - | Int "-Word" Int [function, total] - | Int "/Word" Int [function, total] - | Int "%Word" Int [function, total] - // ------------------------------------------------ - rule W0 +Word W1 => chop( W0 +Int W1 ) - rule W0 -Word W1 => chop( W0 -Int W1 ) - rule W0 *Word W1 => chop( W0 *Int W1 ) - rule _ /Word W1 => 0 requires W1 ==Int 0 - rule W0 /Word W1 => W0 /Int W1 requires W1 =/=Int 0 - rule _ %Word W1 => 0 requires W1 ==Int 0 - rule W0 %Word W1 => W0 modInt W1 requires W1 =/=Int 0 -``` - -Care is needed for `^Word` to avoid big exponentiation. -The helper `powmod` is a totalization of the operator `_^%Int__` (which comes with K). -`_^%Int__` is not defined when the modulus (third argument) is zero, but `powmod` is. - -```k - syntax Int ::= Int "^Word" Int [function, total] - | powmod(Int, Int, Int) [klabel(powmod), function, total] - // ---------------------------------------------------------------------- - rule W0 ^Word W1 => powmod(W0, W1, pow256) - - rule [powmod.nonzero]: powmod(W0, W1, W2) => W0 ^%Int W1 W2 requires W2 =/=Int 0 [concrete] - rule [powmod.zero]: powmod( _, _, W2) => 0 requires W2 ==Int 0 [concrete] -``` - -`/sWord` and `%sWord` give the signed interperetations of `/Word` and `%Word`. - -```k - syntax Int ::= Int "/sWord" Int [function] - | Int "%sWord" Int [function] - // ------------------------------------------ - rule [divSWord.same]: W0 /sWord W1 => abs(W0) /Word abs(W1) requires sgn(W0) *Int sgn(W1) ==Int 1 - rule [divSWord.diff]: W0 /sWord W1 => 0 -Word (abs(W0) /Word abs(W1)) requires sgn(W0) *Int sgn(W1) ==Int -1 - rule [modSWord.pos]: W0 %sWord W1 => abs(W0) %Word abs(W1) requires sgn(W0) ==Int 1 - rule [modSWord.neg]: W0 %sWord W1 => 0 -Word (abs(W0) %Word abs(W1)) requires sgn(W0) ==Int -1 -``` - -### Word Comparison - -The `Word` comparisons similarly lift K operators to EVM ones: - -```k - syntax Int ::= Int "Word" Int [function, total] - | Int "<=Word" Int [function, total] - | Int ">=Word" Int [function, total] - | Int "==Word" Int [function, total] - // ------------------------------------------------- - rule W0 bool2Word(W0 Word W1 => bool2Word(W0 >Int W1) - rule W0 <=Word W1 => bool2Word(W0 <=Int W1) - rule W0 >=Word W1 => bool2Word(W0 >=Int W1) - rule W0 ==Word W1 => bool2Word(W0 ==Int W1) -``` - -- `s W0 bool2Word(false) requires sgn(W0) ==K 1 andBool sgn(W1) ==K -1 - rule [s bool2Word(true) requires sgn(W0) ==K -1 andBool sgn(W1) ==K 1 - rule [s abs(W1) >Word" Int [function, total] - | Int ">>sWord" Int [function, total] - // -------------------------------------------------- - rule ~Word W => W xorInt maxUInt256 - rule W0 |Word W1 => W0 |Int W1 - rule W0 &Word W1 => W0 &Int W1 - rule W0 xorWord W1 => W0 xorInt W1 - rule W0 < chop( W0 < 0 [owise] - rule W0 >>Word W1 => W0 >>Int W1 requires 0 <=Int W0 andBool 0 <=Int W1 - rule _ >>Word _ => 0 [owise] - rule W0 >>sWord W1 => chop( (abs(W0) *Int sgn(W0)) >>Int W1 ) requires 0 <=Int W0 andBool 0 <=Int W1 - rule _ >>sWord _ => 0 [owise] -``` - -- `bit` gets bit `N` (0 being MSB). -- `byte` gets byte `N` (0 being the MSB). - -```k - syntax Int ::= bit ( Int , Int ) [klabel(bit), function] - | byte ( Int , Int ) [klabel(byte), function] - // ---------------------------------------------------------- - rule bit (N, _) => 0 requires notBool (N >=Int 0 andBool N 0 requires notBool (N >=Int 0 andBool N bitRangeInt(W , (255 -Int N) , 1) requires N >=Int 0 andBool N bitRangeInt(W , ( 31 -Int N) *Int 8 , 8) requires N >=Int 0 andBool N (1 <=Int 0 - rule #nBytes(N) => #nBits(N *Int 8) requires N >=Int 0 -``` - -- `signextend(N, W)` sign-extends from byte `N` of `W` (0 being MSB). - -```k - syntax Int ::= signextend( Int , Int ) [klabel(signextend), function, total] - // ---------------------------------------------------------------------------- - rule [signextend.invalid]: signextend(N, W) => W requires N >=Int 32 orBool N chop( (#nBytes(31 -Int N) <=Int 0 andBool word2Bool(bit(256 -Int (8 *Int (N +Int 1)), W)) [concrete] - rule [signextend.positive]: signextend(N, W) => chop( #nBytes(N +Int 1) &Int W ) requires N =Int 0 andBool notBool word2Bool(bit(256 -Int (8 *Int (N +Int 1)), W)) [concrete] -``` - - -A WordStack for EVM -------------------- - -### As a cons-list - -A cons-list is used for the EVM wordstack. - -- `.WordStack` serves as the empty worstack, and -- `_:_` serves as the "cons" operator. - -```k - syntax WordStack ::= ".WordStack" [smtlib(_dotWS)] - | Int ":" WordStack [smtlib(_WS_)] - // ----------------------------------------------------- -``` - -```k - syntax Bytes ::= Int ":" Bytes [function] - // ----------------------------------------- - rule I : BS => Int2Bytes(1, I, BE) +Bytes BS requires I .WordStack requires notBool N >Int 0 - rule [#take.zero-pad]: #take(N, .WordStack) => 0 : #take(N -Int 1, .WordStack) requires N >Int 0 - rule [#take.recursive]: #take(N, (W : WS):WordStack) => W : #take(N -Int 1, WS) requires N >Int 0 - - syntax WordStack ::= #drop ( Int , WordStack ) [klabel(dropWordStack), function, total] - // --------------------------------------------------------------------------------------- - rule #drop(N, WS:WordStack) => WS requires notBool N >Int 0 - rule #drop(N, .WordStack) => .WordStack requires N >Int 0 - rule #drop(N, (W : WS):WordStack) => #drop(1, #drop(N -Int 1, (W : WS))) requires N >Int 1 - rule #drop(1, (_ : WS):WordStack) => WS -``` - -### Element Access - -- `WS [ N ]` accesses element `N` of `WS`. -- `WS [ N := W ]` sets element `N` of `WS` to `W` (padding with zeros as needed). - -```k - syntax Int ::= WordStack "[" Int "]" [function, total] - // ------------------------------------------------------ - rule (W : _):WordStack [ N ] => W requires N ==Int 0 - rule WS:WordStack [ N ] => #drop(N, WS) [ 0 ] requires N >Int 0 - rule _:WordStack [ N ] => 0 requires N W : WS requires N ==Int 0 - rule ( W0 : WS):WordStack [ N := W ] => W0 : (WS [ N -Int 1 := W ]) requires N >Int 0 - rule WS :WordStack [ N := _ ] => WS requires N (0 : .WordStack) [ N := W ] -``` - -- `#sizeWordStack` calculates the size of a `WordStack`. -- `_in_` determines if a `Int` occurs in a `WordStack`. - -```k - syntax Int ::= #sizeWordStack ( WordStack ) [klabel(#sizeWordStack), function, total, smtlib(sizeWordStack)] - | #sizeWordStack ( WordStack , Int ) [klabel(sizeWordStackAux), function, total, smtlib(sizeWordStackAux)] - // ----------------------------------------------------------------------------------------------------------------------- - rule #sizeWordStack ( WS ) => #sizeWordStack(WS, 0) - rule #sizeWordStack ( .WordStack, SIZE ) => SIZE - rule #sizeWordStack ( _ : WS, SIZE ) => #sizeWordStack(WS, SIZE +Int 1) - - syntax Bool ::= Int "in" WordStack [function] - // --------------------------------------------- - rule _ in .WordStack => false - rule W in (W' : WS) => (W ==K W') orElseBool (W in WS) -``` - -- `#replicateAux` pushes `N` copies of `A` onto a `WordStack`. -- `#replicate` is a `WordStack` of length `N` with `A` the value of every element. - -```k - syntax WordStack ::= #replicate ( Int, Int ) [klabel(#replicate), function, total] - | #replicateAux ( Int, Int, WordStack ) [klabel(#replicateAux), function, total] - // --------------------------------------------------------------------------------------------------- - rule #replicate ( N, A ) => #replicateAux(N, A, .WordStack) - rule #replicateAux( N, A, WS ) => #replicateAux(N -Int 1, A, A : WS) requires N >Int 0 - rule #replicateAux( N, _A, WS ) => WS requires notBool N >Int 0 -``` - -- `WordStack2List` converts a term of sort `WordStack` to a term of sort `List`. - -```k - syntax List ::= WordStack2List ( WordStack ) [klabel(WordStack2List), function, total] - // -------------------------------------------------------------------------------------- - rule WordStack2List(.WordStack) => .List - rule WordStack2List(W : WS) => ListItem(W) WordStack2List(WS) -``` - - -- `WS [ START := WS' ]` assigns a contiguous chunk of `WS'` to `WS` starting at position `START`. -- `#write(WM, IDX, VAL)` assigns a value `VAL` at position `IDX` in `WM`. -- TODO: remove the first rule for `:=` when [#1844](https://github.com/runtimeverification/evm-semantics/issues/1844) is fixed. - -```k - syntax Bytes ::= "#write" "(" Bytes "," Int "," Int ")" [function] - | Bytes "[" Int ":=" Bytes "]" [function, total, klabel(mapWriteRange)] - // -------------------------------------------------------------------------------------- - rule #write(WM, IDX, VAL) => padRightBytes(WM, IDX +Int 1, 0) [ IDX <- VAL ] [concrete] - - rule WS [ START := WS' ] => WS requires 0 <=Int START andBool lengthBytes(WS') ==Int 0 [concrete] - rule WS [ START := WS' ] => replaceAtBytes(padRightBytes(WS, START +Int lengthBytes(WS'), 0), START, WS') requires 0 <=Int START andBool lengthBytes(WS') =/=Int 0 [concrete] - rule _ [ START := _ ] => .Bytes requires START chop(Bytes2Int(WS, BE, Unsigned)) [concrete] - - syntax Int ::= #asInteger ( Bytes ) [klabel(#asInteger), function, total] - // ------------------------------------------------------------------------- - rule #asInteger(WS) => Bytes2Int(WS, BE, Unsigned) [concrete] - - syntax Account ::= #asAccount ( Bytes ) [klabel(#asAccount), function] - // ---------------------------------------------------------------------- - rule #asAccount(BS) => .Account requires lengthBytes(BS) ==Int 0 - rule #asAccount(BS) => #asWord(BS) [owise] - - syntax Bytes ::= #asByteStack ( Int ) [klabel(#asByteStack), function, total] - // ----------------------------------------------------------------------------- - rule #asByteStack(W) => Int2Bytes(W, BE, Unsigned) [concrete] - - syntax Bytes ::= #range ( Bytes , Int , Int ) [klabel(#range), function, total] - // ------------------------------------------------------------------------------- - rule #range(_, START, WIDTH) => .Bytes requires notBool (WIDTH >=Int 0 andBool START >=Int 0) [concrete] - rule [bytesRange] : #range(WS, START, WIDTH) => substrBytes(padRightBytes(WS, START +Int WIDTH, 0), START, START +Int WIDTH) requires WIDTH >=Int 0 andBool START >=Int 0 andBool START padRightBytes(.Bytes, WIDTH, 0) [owise, concrete] - - syntax Bytes ::= #padToWidth ( Int , Bytes ) [klabel(#padToWidth), function, total] - | #padRightToWidth ( Int , Bytes ) [klabel(#padRightToWidth), function, total] - // --------------------------------------------------------------------------------------------- - rule #padToWidth(N, BS) => BS requires notBool (0 <=Int N) [concrete] - rule #padToWidth(N, BS) => padLeftBytes(BS, N, 0) requires 0 <=Int N [concrete] - rule #padRightToWidth(N, BS) => BS requires notBool (0 <=Int N) [concrete] - rule #padRightToWidth(N, BS) => padRightBytes(BS, N, 0) requires 0 <=Int N [concrete] -``` - -Accounts --------- - -### Empty Account - -- `.Account` represents the case when an account ID is referenced in the yellowpaper, but - the actual value of the account ID is the empty set. This is used, for example, when - referring to the destination of a message which creates a new contract. - -```k - syntax Account ::= ".Account" | Int - // ----------------------------------- - - syntax AccountCode ::= Bytes - // ---------------------------- -``` - -### Addresses - -- `#addr` turns an Ethereum word into the corresponding Ethereum address (160 LSB). - -```k - syntax Int ::= #addr ( Int ) [klabel(#addr), function, total] - // ------------------------------------------------------------- - rule #addr(W) => W %Word pow160 -``` - -Storage/Memory Lookup ---------------------- - -`#lookup*` looks up a key in a map and returns 0 if the key doesn't exist, otherwise returning its value. - -```k - syntax Int ::= #lookup ( Map , Int ) [klabel(#lookup), function, total, smtlib(lookup)] - | #lookupMemory ( Map , Int ) [klabel(#lookupMemory), function, total, smtlib(lookupMemory)] - // ---------------------------------------------------------------------------------------------------------- - rule [#lookup.some]: #lookup( (KEY |-> VAL:Int) _M, KEY ) => VAL modInt pow256 - rule [#lookup.none]: #lookup( M, KEY ) => 0 requires notBool KEY in_keys(M) - //Impossible case, for completeness - rule [#lookup.notInt]: #lookup( (KEY |-> VAL ) _M, KEY ) => 0 requires notBool isInt(VAL) - - rule [#lookupMemory.some]: #lookupMemory( (KEY |-> VAL:Int) _M, KEY ) => VAL modInt 256 - rule [#lookupMemory.none]: #lookupMemory( M, KEY ) => 0 requires notBool KEY in_keys(M) - //Impossible case, for completeness - rule [#lookupMemory.notInt]: #lookupMemory( (KEY |-> VAL ) _M, KEY ) => 0 requires notBool isInt(VAL) -``` - -Substate Log ------------- - -During execution of a transaction some things are recorded in the substate log (Section 6.1 in YellowPaper). -This is a right cons-list of `SubstateLogEntry` (which contains the account ID along with the specified portions of the `wordStack` and `localMem`). - -```k - syntax SubstateLogEntry ::= "{" Int "|" List "|" Bytes "}" [klabel(logEntry)] - // ----------------------------------------------------------------------------- -``` - -Transactions ------------- - -Productions related to transactions - -```k - syntax TxType ::= ".TxType" - | "Legacy" - | "AccessList" - | "DynamicFee" - // ------------------------------ - - syntax Int ::= #dasmTxPrefix ( TxType ) [klabel(#dasmTxPrefix), function] - // ------------------------------------------------------------------------- - rule #dasmTxPrefix (Legacy) => 0 - rule #dasmTxPrefix (AccessList) => 1 - rule #dasmTxPrefix (DynamicFee) => 2 - - syntax TxType ::= #asmTxPrefix ( Int ) [klabel(#asmTxPrefix), function] - // ----------------------------------------------------------------------- - rule #asmTxPrefix (0) => Legacy - rule #asmTxPrefix (1) => AccessList - rule #asmTxPrefix (2) => DynamicFee - - syntax TxData ::= LegacyTx | AccessListTx | DynamicFeeTx - // -------------------------------------------------------- - - syntax LegacyTx ::= LegacyTxData ( nonce: Int, gasPrice: Int, gasLimit: Int, to: Account, value: Int, data: Bytes ) [klabel(LegacyTxData)] - | LegacyProtectedTxData( nonce: Int, gasPrice: Int, gasLimit: Int, to: Account, value: Int, data: Bytes, chainId: Int ) [klabel(LegacyProtectedTxData)] - syntax AccessListTx ::= AccessListTxData ( nonce: Int, gasPrice: Int, gasLimit: Int, to: Account, value: Int, data: Bytes, chainId: Int, accessLists: JSONs ) [klabel(AccessListTxData)] - syntax DynamicFeeTx ::= DynamicFeeTxData ( nonce: Int, priorityGasFee: Int, maxGasFee: Int, gasLimit: Int, to: Account, value: Int, data: Bytes, chainId: Int, accessLists: JSONs) [klabel(DynamicFeeTxData)] - // -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-types/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-types/index.html new file mode 100644 index 0000000000..c8eb8d57c5 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-types/index.html @@ -0,0 +1,699 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Data-Structures over Word

+

EVM uses bounded 256 bit integer words, and sometimes also bytes (8 bit words). +Here we provide the arithmetic of these words, as well as some data-structures over them. +Both are implemented using K's Int.

+
requires "word.md"
+
+module EVM-TYPES
+    imports STRING
+    imports COLLECTIONS
+    imports K-EQUAL
+    imports JSON
+    imports WORD
+
+

Utilities

+

Boolean Conversions

+

Primitives provide the basic conversion from K's sorts Int and Bool to EVM's words.

+
    +
  • bool2Word interprets a Bool as a Int.
  • +
  • word2Bool interprets a Int as a Bool.
  • +
+
    syntax Int ::= bool2Word ( Bool ) [klabel(bool2Word), function, total, smtlib(bool2Word)]
+ // -----------------------------------------------------------------------------------------
+    rule bool2Word( true  ) => 1
+    rule bool2Word( false ) => 0
+
+    syntax Bool ::= word2Bool ( Int ) [klabel(word2Bool), function, total]
+ // ----------------------------------------------------------------------
+    rule word2Bool( W ) => false requires W  ==Int 0
+    rule word2Bool( W ) => true  requires W =/=Int 0
+
+
    +
  • sgn gives the twos-complement interperetation of the sign of a word.
  • +
  • abs gives the twos-complement interperetation of the magnitude of a word.
  • +
+
    syntax Int ::= sgn ( Int ) [klabel(sgn), function, total]
+                 | abs ( Int ) [klabel(abs), function, total]
+ // ---------------------------------------------------------
+    rule sgn(I) => -1 requires pow255 <=Int I andBool I <Int pow256
+    rule sgn(I) =>  1 requires 0 <=Int I andBool I <Int pow255
+    rule sgn(I) =>  0 requires I <Int 0 orBool pow256 <=Int I
+
+    rule abs(I) => 0 -Word I requires sgn(I) ==Int -1
+    rule abs(I) => I         requires sgn(I) ==Int  1
+    rule abs(I) => 0         requires sgn(I) ==Int  0
+
+

Word Operations

+

Low-Level

+
    +
  • up/Int performs integer division but rounds up instead of down.
  • +
+

NOTE: Here, we choose to add I2 -Int 1 to the numerator before doing the division to mimic the C++ implementation. +You could alternatively calculate I1 modInt I2, then add one to the normal integer division afterward depending on the result.

+
    syntax Int ::= Int "up/Int" Int [function, total, smtlib(upDivInt)]
+ // -------------------------------------------------------------------
+    rule _I1 up/Int 0  => 0                                                  [concrete]
+    rule _I1 up/Int I2 => 0                             requires I2 <=Int 0  [concrete]
+    rule  I1 up/Int 1  => I1                                                 [concrete]
+    rule  I1 up/Int I2 => (I1 +Int (I2 -Int 1)) /Int I2 requires 1  <Int  I2 [concrete]
+
+
    +
  • log256Int returns the log base 256 (floored) of an integer.
  • +
+
    syntax Int ::= log256Int ( Int ) [klabel(log256Int), function]
+ // --------------------------------------------------------------
+    rule log256Int(N) => log2Int(N) /Int 8
+
+

The corresponding <op>Word operations automatically perform the correct modulus for EVM words. +Warning: operands are assumed to be within the range of a 256 bit EVM word. Unbound integers may not return the correct result.

+
    syntax Int ::= Int "+Word" Int [function, total]
+                 | Int "*Word" Int [function, total]
+                 | Int "-Word" Int [function, total]
+                 | Int "/Word" Int [function, total]
+                 | Int "%Word" Int [function, total]
+ // ------------------------------------------------
+    rule W0 +Word W1 => chop( W0 +Int W1 )
+    rule W0 -Word W1 => chop( W0 -Int W1 )
+    rule W0 *Word W1 => chop( W0 *Int W1 )
+    rule  _ /Word W1 => 0            requires W1  ==Int 0
+    rule W0 /Word W1 => W0 /Int W1   requires W1 =/=Int 0
+    rule  _ %Word W1 => 0            requires W1  ==Int 0
+    rule W0 %Word W1 => W0 modInt W1 requires W1 =/=Int 0
+
+

Care is needed for ^Word to avoid big exponentiation. +The helper powmod is a totalization of the operator _^%Int__ (which comes with K). +_^%Int__ is not defined when the modulus (third argument) is zero, but powmod is.

+
    syntax Int ::= Int "^Word" Int       [function, total]
+                 | powmod(Int, Int, Int) [klabel(powmod), function, total]
+ // ----------------------------------------------------------------------
+    rule W0 ^Word W1 => powmod(W0, W1, pow256)
+
+    rule [powmod.nonzero]: powmod(W0, W1, W2) => W0 ^%Int W1 W2  requires W2 =/=Int 0 [concrete]
+    rule [powmod.zero]:    powmod( _,  _, W2) => 0               requires W2  ==Int 0 [concrete]
+
+

/sWord and %sWord give the signed interperetations of /Word and %Word.

+
    syntax Int ::= Int "/sWord" Int [function]
+                 | Int "%sWord" Int [function]
+ // ------------------------------------------
+    rule [divSWord.same]: W0 /sWord W1 =>          abs(W0) /Word abs(W1)  requires sgn(W0) *Int sgn(W1) ==Int  1
+    rule [divSWord.diff]: W0 /sWord W1 => 0 -Word (abs(W0) /Word abs(W1)) requires sgn(W0) *Int sgn(W1) ==Int -1
+    rule [modSWord.pos]:  W0 %sWord W1 =>          abs(W0) %Word abs(W1)  requires sgn(W0) ==Int  1
+    rule [modSWord.neg]:  W0 %sWord W1 => 0 -Word (abs(W0) %Word abs(W1)) requires sgn(W0) ==Int -1
+
+

Word Comparison

+

The <op>Word comparisons similarly lift K operators to EVM ones:

+
    syntax Int ::= Int "<Word"  Int [function, total]
+                 | Int ">Word"  Int [function, total]
+                 | Int "<=Word" Int [function, total]
+                 | Int ">=Word" Int [function, total]
+                 | Int "==Word" Int [function, total]
+ // -------------------------------------------------
+    rule W0 <Word  W1 => bool2Word(W0 <Int  W1)
+    rule W0 >Word  W1 => bool2Word(W0 >Int  W1)
+    rule W0 <=Word W1 => bool2Word(W0 <=Int W1)
+    rule W0 >=Word W1 => bool2Word(W0 >=Int W1)
+    rule W0 ==Word W1 => bool2Word(W0 ==Int W1)
+
+
    +
  • s<Word implements a less-than for Word (with signed interperetation).
  • +
+
    syntax Int ::= Int "s<Word" Int [function, total]
+ // -------------------------------------------------
+    rule [s<Word.pp]: W0 s<Word W1 => W0 <Word W1           requires sgn(W0) ==K 1  andBool sgn(W1) ==K 1
+    rule [s<Word.pn]: W0 s<Word W1 => bool2Word(false)      requires sgn(W0) ==K 1  andBool sgn(W1) ==K -1
+    rule [s<Word.np]: W0 s<Word W1 => bool2Word(true)       requires sgn(W0) ==K -1 andBool sgn(W1) ==K 1
+    rule [s<Word.nn]: W0 s<Word W1 => abs(W1) <Word abs(W0) requires sgn(W0) ==K -1 andBool sgn(W1) ==K -1
+
+

Bitwise Operators

+

Bitwise logical operators are lifted from the integer versions.

+
    syntax Int ::= "~Word" Int       [function, total]
+                 | Int "|Word"   Int [function, total]
+                 | Int "&Word"   Int [function, total]
+                 | Int "xorWord" Int [function, total]
+                 | Int "<<Word"  Int [function, total]
+                 | Int ">>Word"  Int [function, total]
+                 | Int ">>sWord" Int [function, total]
+ // --------------------------------------------------
+    rule ~Word W       => W xorInt maxUInt256
+    rule W0 |Word   W1 => W0 |Int W1
+    rule W0 &Word   W1 => W0 &Int W1
+    rule W0 xorWord W1 => W0 xorInt W1
+    rule W0 <<Word  W1 => chop( W0 <<Int W1 ) requires 0 <=Int W0 andBool 0 <=Int W1 andBool W1 <Int 256
+    rule  _ <<Word  _  => 0 [owise]
+    rule W0 >>Word  W1 => W0 >>Int W1 requires 0 <=Int W0 andBool 0 <=Int W1
+    rule  _ >>Word   _ => 0 [owise]
+    rule W0 >>sWord W1 => chop( (abs(W0) *Int sgn(W0)) >>Int W1 ) requires 0 <=Int W0 andBool 0 <=Int W1
+    rule  _ >>sWord  _ => 0 [owise]
+
+
    +
  • bit gets bit N (0 being MSB).
  • +
  • byte gets byte N (0 being the MSB).
  • +
+
    syntax Int ::= bit  ( Int , Int ) [klabel(bit), function]
+                 | byte ( Int , Int ) [klabel(byte), function]
+ // ----------------------------------------------------------
+    rule bit (N, _) => 0 requires notBool (N >=Int 0 andBool N <Int 256)
+    rule byte(N, _) => 0 requires notBool (N >=Int 0 andBool N <Int  32)
+
+    rule bit (N, W) => bitRangeInt(W , (255 -Int N)        , 1) requires N >=Int 0 andBool N <Int 256
+    rule byte(N, W) => bitRangeInt(W , ( 31 -Int N) *Int 8 , 8) requires N >=Int 0 andBool N <Int  32
+
+
    +
  • #nBits shifts in N ones from the right.
  • +
  • #nBytes shifts in N bytes of ones from the right.
  • +
+
    syntax Int ::= #nBits  ( Int )  [klabel(#nBits), function]
+                 | #nBytes ( Int )  [klabel(#nBytes), function]
+ // -----------------------------------------------------------
+    rule #nBits(N)  => (1 <<Int N) -Int 1 requires N >=Int 0
+    rule #nBytes(N) => #nBits(N *Int 8)   requires N >=Int 0
+
+
    +
  • signextend(N, W) sign-extends from byte N of W (0 being MSB).
  • +
+
    syntax Int ::= signextend( Int , Int ) [klabel(signextend), function, total]
+ // ----------------------------------------------------------------------------
+    rule [signextend.invalid]:  signextend(N, W) => W requires N >=Int 32 orBool N <Int 0                                                                                                                      [concrete]
+    rule [signextend.negative]: signextend(N, W) => chop( (#nBytes(31 -Int N) <<Byte (N +Int 1)) |Int W ) requires N <Int 32 andBool N >=Int 0 andBool         word2Bool(bit(256 -Int (8 *Int (N +Int 1)), W)) [concrete]
+    rule [signextend.positive]: signextend(N, W) => chop( #nBytes(N +Int 1)                      &Int W ) requires N <Int 32 andBool N >=Int 0 andBool notBool word2Bool(bit(256 -Int (8 *Int (N +Int 1)), W)) [concrete]
+
+

A WordStack for EVM

+

As a cons-list

+

A cons-list is used for the EVM wordstack.

+
    +
  • .WordStack serves as the empty worstack, and
  • +
  • _:_ serves as the "cons" operator.
  • +
+
    syntax WordStack ::= ".WordStack"      [smtlib(_dotWS)]
+                       | Int ":" WordStack [smtlib(_WS_)]
+ // -----------------------------------------------------
+
+
    syntax Bytes ::= Int ":" Bytes [function]
+ // -----------------------------------------
+    rule I : BS => Int2Bytes(1, I, BE) +Bytes BS requires I <Int 256
+
+
    +
  • #take(N , WS) keeps the first N elements of a WordStack (passing with zeros as needed).
  • +
  • #drop(N , WS) removes the first N elements of a WordStack.
  • +
+
    syntax WordStack ::= #take ( Int , WordStack ) [klabel(takeWordStack), function, total]
+ // ---------------------------------------------------------------------------------------
+    rule [#take.base]:      #take(N, _WS)                => .WordStack                      requires notBool N >Int 0
+    rule [#take.zero-pad]:  #take(N, .WordStack)         => 0 : #take(N -Int 1, .WordStack) requires N >Int 0
+    rule [#take.recursive]: #take(N, (W : WS):WordStack) => W : #take(N -Int 1, WS)         requires N >Int 0
+
+    syntax WordStack ::= #drop ( Int , WordStack ) [klabel(dropWordStack), function, total]
+ // ---------------------------------------------------------------------------------------
+    rule #drop(N, WS:WordStack)       => WS                                  requires notBool N >Int 0
+    rule #drop(N, .WordStack)         => .WordStack                          requires         N >Int 0
+    rule #drop(N, (W : WS):WordStack) => #drop(1, #drop(N -Int 1, (W : WS))) requires         N >Int 1
+    rule #drop(1, (_ : WS):WordStack) => WS
+
+

Element Access

+
    +
  • WS [ N ] accesses element N of WS.
  • +
  • WS [ N := W ] sets element N of WS to W (padding with zeros as needed).
  • +
+
    syntax Int ::= WordStack "[" Int "]" [function, total]
+ // ------------------------------------------------------
+    rule (W : _):WordStack [ N ] => W                  requires N ==Int 0
+    rule WS:WordStack      [ N ] => #drop(N, WS) [ 0 ] requires N  >Int 0
+    rule  _:WordStack      [ N ] => 0                  requires N  <Int 0
+
+    syntax WordStack ::= WordStack "[" Int ":=" Int "]" [function, total]
+ // ---------------------------------------------------------------------
+    rule (_W0 : WS):WordStack [ N := W ] => W  : WS                     requires N ==Int 0
+    rule ( W0 : WS):WordStack [ N := W ] => W0 : (WS [ N -Int 1 := W ]) requires N  >Int 0
+    rule        WS :WordStack [ N := _ ] => WS                          requires N  <Int 0
+    rule .WordStack           [ N := W ] => (0 : .WordStack) [ N := W ]
+
+
    +
  • #sizeWordStack calculates the size of a WordStack.
  • +
  • _in_ determines if a Int occurs in a WordStack.
  • +
+
    syntax Int ::= #sizeWordStack ( WordStack )       [klabel(#sizeWordStack), function, total, smtlib(sizeWordStack)]
+                 | #sizeWordStack ( WordStack , Int ) [klabel(sizeWordStackAux), function, total, smtlib(sizeWordStackAux)]
+ // -----------------------------------------------------------------------------------------------------------------------
+    rule #sizeWordStack ( WS ) => #sizeWordStack(WS, 0)
+    rule #sizeWordStack ( .WordStack, SIZE ) => SIZE
+    rule #sizeWordStack ( _ : WS, SIZE )     => #sizeWordStack(WS, SIZE +Int 1)
+
+    syntax Bool ::= Int "in" WordStack [function]
+ // ---------------------------------------------
+    rule _ in .WordStack => false
+    rule W in (W' : WS)  => (W ==K W') orElseBool (W in WS)
+
+
    +
  • #replicateAux pushes N copies of A onto a WordStack.
  • +
  • #replicate is a WordStack of length N with A the value of every element.
  • +
+
    syntax WordStack ::= #replicate    ( Int, Int )            [klabel(#replicate), function, total]
+                       | #replicateAux ( Int, Int, WordStack ) [klabel(#replicateAux), function, total]
+ // ---------------------------------------------------------------------------------------------------
+    rule #replicate   ( N,  A )     => #replicateAux(N, A, .WordStack)
+    rule #replicateAux( N,  A, WS ) => #replicateAux(N -Int 1, A, A : WS) requires         N >Int 0
+    rule #replicateAux( N, _A, WS ) => WS                                 requires notBool N >Int 0
+
+
    +
  • WordStack2List converts a term of sort WordStack to a term of sort List.
  • +
+
    syntax List ::= WordStack2List ( WordStack ) [klabel(WordStack2List), function, total]
+ // --------------------------------------------------------------------------------------
+    rule WordStack2List(.WordStack) => .List
+    rule WordStack2List(W : WS) => ListItem(W) WordStack2List(WS)
+
+
    +
  • WS [ START := WS' ] assigns a contiguous chunk of WS' to WS starting at position START.
  • +
  • #write(WM, IDX, VAL) assigns a value VAL at position IDX in WM.
  • +
  • TODO: remove the first rule for := when #1844 is fixed.
  • +
+
    syntax Bytes ::= "#write" "(" Bytes "," Int "," Int ")" [function]
+                   | Bytes "[" Int ":=" Bytes "]" [function, total, klabel(mapWriteRange)]
+ // --------------------------------------------------------------------------------------
+    rule #write(WM, IDX, VAL) => padRightBytes(WM, IDX +Int 1, 0) [ IDX <- VAL ] [concrete]
+
+    rule WS [ START := WS' ] => WS                                                                            requires 0     <=Int START andBool lengthBytes(WS')  ==Int 0 [concrete]
+    rule WS [ START := WS' ] => replaceAtBytes(padRightBytes(WS, START +Int lengthBytes(WS'), 0), START, WS') requires 0     <=Int START andBool lengthBytes(WS') =/=Int 0 [concrete]
+    rule _  [ START := _ ]   => .Bytes                                                                        requires START  <Int 0                                       [concrete]
+
+

Bytes helper functions

+
    +
  • #asWord will interperet a stack of bytes as a single word (with MSB first).
  • +
  • #asInteger will interperet a stack of bytes as a single arbitrary-precision integer (with MSB first).
  • +
  • #asAccount will interpret a stack of bytes as a single account id (with MSB first). +Differs from #asWord only in that an empty stack represents the empty account, not account zero.
  • +
  • #asByteStack will split a single word up into a Bytes.
  • +
  • #range(WS, N, W) access the range of WS beginning with N of width W.
  • +
  • #padToWidth(N, WS) and #padRightToWidth make sure that a Bytes is the correct size.
  • +
+
    syntax Int ::= #asWord ( Bytes ) [klabel(#asWord), function, total, smtlib(asWord)]
+ // -----------------------------------------------------------------------------------
+    rule #asWord(WS) => chop(Bytes2Int(WS, BE, Unsigned)) [concrete]
+
+    syntax Int ::= #asInteger ( Bytes ) [klabel(#asInteger), function, total]
+ // -------------------------------------------------------------------------
+    rule #asInteger(WS) => Bytes2Int(WS, BE, Unsigned) [concrete]
+
+    syntax Account ::= #asAccount ( Bytes ) [klabel(#asAccount), function]
+ // ----------------------------------------------------------------------
+    rule #asAccount(BS) => .Account    requires lengthBytes(BS) ==Int 0
+    rule #asAccount(BS) => #asWord(BS) [owise]
+
+    syntax Bytes ::= #asByteStack ( Int ) [klabel(#asByteStack), function, total]
+ // -----------------------------------------------------------------------------
+    rule #asByteStack(W) => Int2Bytes(W, BE, Unsigned) [concrete]
+
+    syntax Bytes ::= #range ( Bytes , Int , Int ) [klabel(#range), function, total]
+ // -------------------------------------------------------------------------------
+    rule                #range(_, START, WIDTH)  => .Bytes                                                                       requires notBool (WIDTH >=Int 0 andBool START >=Int 0) [concrete]
+    rule [bytesRange] : #range(WS, START, WIDTH) => substrBytes(padRightBytes(WS, START +Int WIDTH, 0), START, START +Int WIDTH) requires WIDTH >=Int 0 andBool START >=Int 0 andBool START <Int lengthBytes(WS) [concrete]
+    rule                #range(_, _, WIDTH)      => padRightBytes(.Bytes, WIDTH, 0) [owise, concrete]
+
+    syntax Bytes ::= #padToWidth      ( Int , Bytes ) [klabel(#padToWidth), function, total]
+                   | #padRightToWidth ( Int , Bytes ) [klabel(#padRightToWidth), function, total]
+ // ---------------------------------------------------------------------------------------------
+    rule #padToWidth(N, BS)      =>               BS        requires notBool (0 <=Int N) [concrete]
+    rule #padToWidth(N, BS)      =>  padLeftBytes(BS, N, 0) requires          0 <=Int N  [concrete]
+    rule #padRightToWidth(N, BS) =>               BS        requires notBool (0 <=Int N) [concrete]
+    rule #padRightToWidth(N, BS) => padRightBytes(BS, N, 0) requires          0 <=Int N  [concrete]
+
+

Accounts

+

Empty Account

+
    +
  • .Account represents the case when an account ID is referenced in the yellowpaper, but +the actual value of the account ID is the empty set. This is used, for example, when +referring to the destination of a message which creates a new contract.
  • +
+
    syntax Account ::= ".Account" | Int
+ // -----------------------------------
+
+    syntax AccountCode ::= Bytes
+ // ----------------------------
+
+

Addresses

+
    +
  • #addr turns an Ethereum word into the corresponding Ethereum address (160 LSB).
  • +
+
    syntax Int ::= #addr ( Int ) [klabel(#addr), function, total]
+ // -------------------------------------------------------------
+    rule #addr(W) => W %Word pow160
+
+

Storage/Memory Lookup

+

#lookup* looks up a key in a map and returns 0 if the key doesn't exist, otherwise returning its value.

+
    syntax Int ::= #lookup        ( Map , Int ) [klabel(#lookup), function, total, smtlib(lookup)]
+                 | #lookupMemory  ( Map , Int ) [klabel(#lookupMemory), function, total, smtlib(lookupMemory)]
+ // ----------------------------------------------------------------------------------------------------------
+    rule [#lookup.some]:         #lookup(       (KEY |-> VAL:Int) _M, KEY ) => VAL modInt pow256
+    rule [#lookup.none]:         #lookup(                          M, KEY ) => 0                 requires notBool KEY in_keys(M)
+    //Impossible case, for completeness
+    rule [#lookup.notInt]:       #lookup(       (KEY |-> VAL    ) _M, KEY ) => 0                 requires notBool isInt(VAL)
+
+    rule [#lookupMemory.some]:   #lookupMemory( (KEY |-> VAL:Int) _M, KEY ) => VAL modInt 256
+    rule [#lookupMemory.none]:   #lookupMemory(                    M, KEY ) => 0                 requires notBool KEY in_keys(M)
+    //Impossible case, for completeness
+    rule [#lookupMemory.notInt]: #lookupMemory( (KEY |-> VAL    ) _M, KEY ) => 0                 requires notBool isInt(VAL)
+
+

Substate Log

+

During execution of a transaction some things are recorded in the substate log (Section 6.1 in YellowPaper). +This is a right cons-list of SubstateLogEntry (which contains the account ID along with the specified portions of the wordStack and localMem).

+
    syntax SubstateLogEntry ::= "{" Int "|" List "|" Bytes "}" [klabel(logEntry)]
+ // -----------------------------------------------------------------------------
+
+

Transactions

+

Productions related to transactions

+
    syntax TxType ::= ".TxType"
+                    | "Legacy"
+                    | "AccessList"
+                    | "DynamicFee"
+ // ------------------------------
+
+    syntax Int ::= #dasmTxPrefix ( TxType ) [klabel(#dasmTxPrefix), function]
+ // -------------------------------------------------------------------------
+    rule #dasmTxPrefix (Legacy)     => 0
+    rule #dasmTxPrefix (AccessList) => 1
+    rule #dasmTxPrefix (DynamicFee) => 2
+
+    syntax TxType ::= #asmTxPrefix ( Int ) [klabel(#asmTxPrefix), function]
+ // -----------------------------------------------------------------------
+    rule #asmTxPrefix (0) => Legacy
+    rule #asmTxPrefix (1) => AccessList
+    rule #asmTxPrefix (2) => DynamicFee
+
+    syntax TxData ::= LegacyTx | AccessListTx | DynamicFeeTx
+ // --------------------------------------------------------
+
+    syntax LegacyTx     ::= LegacyTxData         ( nonce: Int, gasPrice: Int, gasLimit: Int, to: Account, value: Int, data: Bytes ) [klabel(LegacyTxData)]
+                          | LegacyProtectedTxData( nonce: Int, gasPrice: Int, gasLimit: Int, to: Account, value: Int, data: Bytes, chainId: Int ) [klabel(LegacyProtectedTxData)]
+    syntax AccessListTx ::= AccessListTxData     ( nonce: Int, gasPrice: Int, gasLimit: Int, to: Account, value: Int, data: Bytes, chainId: Int, accessLists: JSONs ) [klabel(AccessListTxData)]
+    syntax DynamicFeeTx ::= DynamicFeeTxData     ( nonce: Int, priorityGasFee: Int, maxGasFee: Int, gasLimit: Int, to: Account, value: Int, data: Bytes, chainId: Int, accessLists: JSONs) [klabel(DynamicFeeTxData)]
+ // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm.md deleted file mode 100644 index 90d57db37f..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm.md +++ /dev/null @@ -1,2443 +0,0 @@ -EVM Execution -============= - -### Overview - -The EVM is a stack machine over some simple opcodes. -Most of the opcodes are "local" to the execution state of the machine, but some of them must interact with the world state. -This file only defines the local execution operations, the file `driver.md` will define the interactions with the world state. - -```k -requires "data.md" -requires "network.md" -requires "gas.md" - -module EVM - imports STRING - imports EVM-DATA - imports NETWORK - imports GAS -``` - -Configuration -------------- - -The configuration has cells for the current account id, the current opcode, the program counter, the current gas, the gas price, the current program, the word stack, and the local memory. -In addition, there are cells for the callstack and execution substate. - -We've broken up the configuration into two components; those parts of the state that mutate during execution of a single transaction and those that are static throughout. -In the comments next to each cell, we've marked which component of the YellowPaper state corresponds to each cell. - -```k - configuration - - $PGM:EthereumSimulation - 1 - $MODE:Mode - $SCHEDULE:Schedule - $USEGAS:Bool - - - - // EVM Specific - // ============ - - - - // Mutable during a single transaction - // ----------------------------------- - - .Bytes // H_RETURN - .StatusCode - .List - .List - .Set - - - .Bytes - .Set - - // I_* - .Account // I_a - .Account // I_s - .Bytes // I_d - 0 // I_v - - // \mu_* - .WordStack // \mu_s - .Bytes // \mu_m - 0 // \mu_pc - 0:Gas // \mau_g - 0 // \mu_i - 0:Gas - - false - 0 - - - // A_* (execution substate) - - .Set // A_s - .List // A_l - 0 // A_r - .Set - .Map - - - // Immutable during a single transaction - // ------------------------------------- - - 0 // I_p - .Account // I_o - - // I_H* (block information) - .List - - 0 // I_Hp - 0 // I_Ho - 0 // I_Hc - 0 // I_Hr - 0 // I_Ht - 0 // I_He - .Bytes // I_Hb - 0 // I_Hd - 0 // I_Hi - 0 // I_Hl - 0:Gas // I_Hg - 0 // I_Hs - .Bytes // I_Hx - 0 // I_Hm - 0 // I_Hn - 0 - 0 - - [ .JSONs ] - - - - - // Ethereum Network - // ================ - - - - // Chain identifier - // ---------------- - $CHAINID:Int - - // Accounts Record - // --------------- - - - - 0 - 0 - .Bytes:AccountCode - .Map - .Map - 0 - - - - // Transactions Record - // ------------------- - - .List - .List - - - - 0 - 0 // T_n - 0 // T_p - 0 // T_g - .Account // T_t - 0 // T_v - 0 // T_w - .Bytes // T_r - .Bytes // T_s - .Bytes // T_i/T_e - [ .JSONs ] // T_a - 0 // T_c - 0 - 0 - .TxType - - - - - - - - - syntax EthereumSimulation - // ------------------------- -``` - -Modal Semantics ---------------- - -Our semantics is modal, with the initial mode being set on the command line via `-cMODE=EXECMODE`. - -- `NORMAL` executes as a client on the network would. -- `VMTESTS` skips `CALL*` and `CREATE` operations. - -```k - syntax Mode ::= "NORMAL" [klabel(NORMAL), symbol] - | "VMTESTS" [klabel(VMTESTS), symbol] - // --------------------------------------------------- -``` - -State Stacks ------------- - -### The CallStack - -The `callStack` cell stores a list of previous VM execution states. - -- `#pushCallStack` saves a copy of VM execution state on the `callStack`. -- `#popCallStack` restores the top element of the `callStack`. -- `#dropCallStack` removes the top element of the `callStack`. - -```k - syntax InternalOp ::= "#pushCallStack" - // -------------------------------------- - rule #pushCallStack => .K ... - STACK => ListItem( CALLSTATE ) STACK - CALLSTATE - - syntax InternalOp ::= "#popCallStack" - // ------------------------------------- - rule #popCallStack => .K ... - ListItem( CALLSTATE ) REST => REST - _ => CALLSTATE - - syntax InternalOp ::= "#dropCallStack" - // -------------------------------------- - rule #dropCallStack => .K ... - ListItem(_) REST => REST -``` - -### The StateStack - -The `interimStates` cell stores a list of previous world states. - -- `#pushWorldState` stores a copy of the current accounts and the substate at the top of the `interimStates` cell. -- `#popWorldState` restores the top element of the `interimStates`. -- `#dropWorldState` removes the top element of the `interimStates`. - -```k - syntax Accounts ::= "{" AccountsCell "|" SubstateCell "}" - // --------------------------------------------------------- - - syntax InternalOp ::= "#pushWorldState" - // --------------------------------------- - rule #pushWorldState => .K ... - STATES => ListItem({ ACCTDATA | SUBSTATE }) STATES - ACCTDATA - SUBSTATE - - syntax InternalOp ::= "#popWorldState" - // -------------------------------------- - rule #popWorldState => .K ... - ListItem({ ACCTDATA | SUBSTATE }) REST => REST - _ => ACCTDATA - _ => SUBSTATE - - syntax InternalOp ::= "#dropWorldState" - // --------------------------------------- - rule #dropWorldState => .K ... ListItem(_) REST => REST -``` - -Control Flow ------------- - -### Exception Based - -- `#halt` indicates end of execution. - It will consume anything related to the current computation behind it on the `` cell. -- `#end_` sets the `statusCode` and the program counter of the last executed opcode, then halts execution. - -```k - syntax KItem ::= "#halt" | "#end" StatusCode - // -------------------------------------------- - rule [end]: - #end SC => #halt ... - _ => SC - - rule #halt ~> (_:Int => .K) ... - rule #halt ~> (_:OpCode => .K) ... -``` - -OpCode Execution ----------------- - -### Execution Macros - -- `#lookupOpCode` reads an `OpCode` from the program `Bytes` if the program-counter is within the bounds of the program, meaning that it points to an actual opcode. - It will return `.NoOpCode` otherwise. - -```k - syntax MaybeOpCode ::= ".NoOpCode" | OpCode - - syntax MaybeOpCode ::= "#lookupOpCode" "(" Bytes "," Int "," Schedule ")" [function, total] - // ------------------------------------------------------------------------------------------- - rule #lookupOpCode(BA, I, SCHED) => #dasmOpCode(BA[I], SCHED) requires 0 <=Int I andBool I .NoOpCode [owise] -``` - -- `#execute` loads the next opcode. - -```k - syntax KItem ::= "#execute" - // --------------------------- - rule [halt]: - #halt ~> (#execute => .K) ... - - rule [step]: - (.K => #next [ #lookupOpCode(PGM, PCOUNT, SCHED) ]) ~> #execute ... - PGM - PCOUNT - SCHED -``` - -### Single Step - -If the program-counter points to an actual opcode, it's loaded into the `#next [_]` operator. -If `.NoOpCode` is loaded into `#next [_]`, then it means that there is no next opcode and the execution will halt with an `EVMC_SUCCESS` status code. -The `#next [_]` operator initiates execution by: - -1. checking if there will be a stack over/underflow, or a static mode violation, -2. calculate any address conversions needed for items on the wordstack, -3. executing the opcode (which includes any gas deduction needed), and -4. adjusting the program counter. - -```k - syntax InternalOp ::= "#next" "[" MaybeOpCode "]" - // ------------------------------------------------- - rule #next [ .NoOpCode ] => #end EVMC_SUCCESS ... - _ => .Bytes - - rule #next [ OP:OpCode ] - => #addr [ OP ] - ~> #exec [ OP ] - ~> #pc [ OP ] - ... - - WS - STATIC:Bool - requires notBool ( #stackUnderflow(WS, OP) orBool #stackOverflow(WS, OP) ) - andBool notBool ( STATIC andBool #changesState(OP, WS) ) - - rule #next [ OP ] => #end EVMC_STACK_UNDERFLOW ... - WS - requires #stackUnderflow(WS, OP) - - rule #next [ OP ] => #end EVMC_STACK_OVERFLOW ... - WS - requires #stackOverflow(WS, OP) - - rule #next [ OP ] => #end EVMC_STATIC_MODE_VIOLATION ... - WS - STATIC:Bool - requires STATIC andBool #changesState(OP, WS) - andBool notBool ( #stackUnderflow(WS, OP) orBool #stackOverflow(WS, OP) ) -``` - -### Exceptional Checks - -- `#stackNeeded` is how many arguments that opcode will need off the top of the stack. -- `#stackAdded` is how many arguments that opcode will push onto the top of the stack. -- `#stackDelta` is the delta the stack will have after the opcode executes. - -```k - syntax Bool ::= #stackUnderflow ( WordStack , OpCode ) [klabel(#stackUnderflow), macro] - | #stackOverflow ( WordStack , OpCode ) [klabel(#stackOverflow), macro] - // --------------------------------------------------------------------------------------- - rule #stackUnderflow(WS, OP:OpCode) => #sizeWordStack(WS) #sizeWordStack(WS) +Int #stackDelta(OP) >Int 1024 - - syntax Int ::= #stackNeeded ( OpCode ) [klabel(#stackNeeded), function] - // ----------------------------------------------------------------------- - rule #stackNeeded(_POP:PushOp) => 0 - rule #stackNeeded(_IOP:InvalidOp) => 0 - rule #stackNeeded(_NOP:NullStackOp) => 0 - rule #stackNeeded(_UOP:UnStackOp) => 1 - rule #stackNeeded(BOP:BinStackOp) => 2 requires notBool isLogOp(BOP) - rule #stackNeeded(_TOP:TernStackOp) => 3 - rule #stackNeeded(_QOP:QuadStackOp) => 4 - rule #stackNeeded(DUP(N)) => N - rule #stackNeeded(SWAP(N)) => N +Int 1 - rule #stackNeeded(LOG(N)) => N +Int 2 - rule #stackNeeded(_CSOP:CallSixOp) => 6 - rule #stackNeeded(COP:CallOp) => 7 requires notBool isCallSixOp(COP) - - syntax Int ::= #stackAdded ( OpCode ) [klabel(#stackAdded), function] - // --------------------------------------------------------------------- - rule #stackAdded(CALLDATACOPY) => 0 - rule #stackAdded(RETURNDATACOPY) => 0 - rule #stackAdded(CODECOPY) => 0 - rule #stackAdded(EXTCODECOPY) => 0 - rule #stackAdded(POP) => 0 - rule #stackAdded(MSTORE) => 0 - rule #stackAdded(MSTORE8) => 0 - rule #stackAdded(SSTORE) => 0 - rule #stackAdded(JUMP) => 0 - rule #stackAdded(JUMPI) => 0 - rule #stackAdded(JUMPDEST) => 0 - rule #stackAdded(STOP) => 0 - rule #stackAdded(RETURN) => 0 - rule #stackAdded(REVERT) => 0 - rule #stackAdded(SELFDESTRUCT) => 0 - rule #stackAdded(PUSH(_)) => 1 - rule #stackAdded(LOG(_)) => 0 - rule #stackAdded(SWAP(N)) => N +Int 1 - rule #stackAdded(DUP(N)) => N +Int 1 - rule #stackAdded(_IOP:InvalidOp) => 0 - rule #stackAdded(_OP) => 1 [owise] - - syntax Int ::= #stackDelta ( OpCode ) [klabel(#stackDelta), function] - // --------------------------------------------------------------------- - rule #stackDelta(OP) => #stackAdded(OP) -Int #stackNeeded(OP) -``` - -- `#changesState` is true if the given opcode will change `` state given the arguments. - -```k - syntax Bool ::= #changesState ( OpCode , WordStack ) [klabel(#changesState), function] - // -------------------------------------------------------------------------------------- -``` - -```k - rule #changesState(CALL , _ : _ : VALUE : _) => true requires VALUE =/=Int 0 - rule #changesState(LOG(_) , _) => true - rule #changesState(SSTORE , _) => true - rule #changesState(CREATE , _) => true - rule #changesState(CREATE2 , _) => true - rule #changesState(SELFDESTRUCT , _) => true - rule #changesState(_ , _) => false [owise] -``` - -### Execution Step - -- `#exec` will load the arguments of the opcode (it assumes `#stackNeeded?` is accurate and has been called) and trigger the subsequent operations. - -```k - syntax InternalOp ::= "#exec" "[" OpCode "]" - // -------------------------------------------- - rule #exec [ IOP:InvalidOp ] => IOP ... - - rule #exec [ OP ] => #gas [ OP , OP ] ~> OP ... requires isNullStackOp(OP) orBool isPushOp(OP) -``` - -Here we load the correct number of arguments from the `wordStack` based on the sort of the opcode. - -```k - syntax KItem ::= OpCode - syntax OpCode ::= NullStackOp | UnStackOp | BinStackOp | TernStackOp | QuadStackOp - | InvalidOp | StackOp | InternalOp | CallOp | CallSixOp | PushOp - // -------------------------------------------------------------------------------- - - syntax InternalOp ::= UnStackOp Int - | BinStackOp Int Int - | TernStackOp Int Int Int - | QuadStackOp Int Int Int Int - // ------------------------------------------------- - rule #exec [ UOP:UnStackOp ] => #gas [ UOP , UOP W0 ] ~> UOP W0 ... W0 : WS => WS - rule #exec [ BOP:BinStackOp ] => #gas [ BOP , BOP W0 W1 ] ~> BOP W0 W1 ... W0 : W1 : WS => WS - rule #exec [ TOP:TernStackOp ] => #gas [ TOP , TOP W0 W1 W2 ] ~> TOP W0 W1 W2 ... W0 : W1 : W2 : WS => WS - rule #exec [ QOP:QuadStackOp ] => #gas [ QOP , QOP W0 W1 W2 W3 ] ~> QOP W0 W1 W2 W3 ... W0 : W1 : W2 : W3 : WS => WS -``` - -`StackOp` is used for opcodes which require a large portion of the stack. - -```k - syntax InternalOp ::= StackOp WordStack - // --------------------------------------- - rule #exec [ SO:StackOp ] => #gas [ SO , SO WS ] ~> SO WS ... WS -``` - -The `CallOp` opcodes all interperet their second argument as an address. - -```k - syntax InternalOp ::= CallSixOp Int Int Int Int Int Int - | CallOp Int Int Int Int Int Int Int - // ----------------------------------------------------------- - rule #exec [ CSO:CallSixOp ] => #gas [ CSO , CSO W0 W1 W2 W3 W4 W5 ] ~> CSO W0 W1 W2 W3 W4 W5 ... W0 : W1 : W2 : W3 : W4 : W5 : WS => WS - rule #exec [ CO:CallOp ] => #gas [ CO , CO W0 W1 W2 W3 W4 W5 W6 ] ~> CO W0 W1 W2 W3 W4 W5 W6 ... W0 : W1 : W2 : W3 : W4 : W5 : W6 : WS => WS -``` - -### Address Conversion - -Some opcodes require accessing elements of the state at different addresses. -We make sure the given arguments (to be interpreted as addresses) are with 160 bits ahead of time. - -```k - syntax InternalOp ::= "#addr" "[" OpCode "]" - // -------------------------------------------- - rule #addr [ OP:OpCode ] => .K ... - (W0 => #addr(W0)) : _WS - requires isAddr1Op(OP) - - rule #addr [ OP:OpCode ] => .K ... - _W0 : (W1 => #addr(W1)) : _WS - requires isAddr2Op(OP) - - rule #addr [ OP:OpCode ] => .K ... - requires notBool ( isAddr1Op(OP) orBool isAddr2Op(OP) ) - - syntax Bool ::= isAddr1Op ( OpCode ) [klabel(isAddr1Op), function, total] - | isAddr2Op ( OpCode ) [klabel(isAddr2Op), function, total] - // ------------------------------------------------------------------------- - rule isAddr1Op(BALANCE) => true - rule isAddr1Op(SELFDESTRUCT) => true - rule isAddr1Op(EXTCODEHASH) => true - rule isAddr1Op(EXTCODESIZE) => true - rule isAddr1Op(EXTCODECOPY) => true - rule isAddr1Op(_) => false [owise] - - rule isAddr2Op(_:CallOp) => true - rule isAddr2Op(_:CallSixOp) => true - rule isAddr2Op(_) => false [owise] -``` - -### Program Counter - -All operators except for `PUSH` and `JUMP*` increment the program counter by 1. -The arguments to `PUSH` must be skipped over (as they are inline), and the opcode `JUMP` already affects the program counter in the correct way. - -- `#pc` calculates the next program counter of the given operator. - -```k - syntax InternalOp ::= "#pc" "[" OpCode "]" - // ------------------------------------------ - rule #pc [ OP ] => .K ... - PCOUNT => PCOUNT +Int #widthOp(OP) - - syntax Int ::= #widthOp ( OpCode ) [klabel(#widthOp), function, total] - // ---------------------------------------------------------------------- - rule #widthOp(PUSH(N)) => 1 +Int N - rule #widthOp(_) => 1 [owise] -``` - -After executing a transaction, it's necessary to have the effect of the substate log recorded. - -- `#finalizeStorage` updates the origStorage cell with the new values of storage. -- `#finalizeTx` makes the substate log actually have an effect on the state. -- `#deleteAccounts` deletes the accounts specified by the self destruct list. - -```k - syntax InternalOp ::= #finalizeStorage ( List ) [klabel(#finalizeStorage)] - // -------------------------------------------------------------------------- - rule #finalizeStorage(ListItem(ACCT) REST => REST) ... - - ACCT - STORAGE - _ => STORAGE - ... - - - rule #finalizeStorage(.List) => .K ... - - rule (.K => #newAccount ACCT) ~> #finalizeStorage(ListItem(ACCT) _ACCTS) ... [owise] - - syntax InternalOp ::= #finalizeTx ( Bool ) [klabel(#finalizeTx)] - | #deleteAccounts ( List ) [klabel(#deleteAccounts)] - // ------------------------------------------------------------------------ - rule #finalizeTx(true) => #finalizeStorage(Set2List(SetItem(MINER) |Set ACCTS)) ... - .Set - MINER - ACCTS - _ => .Set - _ => .Map - - rule #finalizeTx(false) ... - true - SCHED - GAVAIL => G*(GAVAIL, GLIMIT, REFUND, SCHED) - REFUND => 0 - ListItem(MSGID:Int) ... - - MSGID - GLIMIT - ... - - requires REFUND =/=Int 0 - - rule #finalizeTx(false => true) ... - true - BFEE - ORG - MINER - GAVAIL - GUSED => GUSED +Gas GLIMIT -Gas GAVAIL - GPRICE - 0 - - ORG - ORGBAL => ORGBAL +Int GAVAIL *Int GPRICE - ... - - - MINER - MINBAL => MINBAL +Int (GLIMIT -Int GAVAIL) *Int (GPRICE -Int BFEE) - ... - - ListItem(TXID:Int) REST => REST - - TXID - GLIMIT - ... - - requires ORG =/=Int MINER - - rule #finalizeTx(false => true) ... - true - BFEE - ACCT - ACCT - GAVAIL - GUSED => GUSED +Gas GLIMIT -Gas GAVAIL - GPRICE - 0 - - ACCT - BAL => BAL +Int GLIMIT *Int GPRICE -Int (GLIMIT -Int GAVAIL) *Int BFEE - ... - - ListItem(MsgId:Int) REST => REST - - MsgId - GLIMIT - ... - - - rule #finalizeTx(false => true) ... - false - ListItem(MsgId:Int) REST => REST - - MsgId - ... - - - rule (.K => #deleteAccounts(Set2List(ACCTS))) ~> #finalizeTx(true) ... - ACCTS => .Set - requires size(ACCTS) >Int 0 - - rule (.K => #newAccount MINER) ~> #finalizeTx(_) ... - MINER [owise] - - rule #deleteAccounts(ListItem(ACCT) ACCTS) => #deleteAccounts(ACCTS) ... - - ( - ACCT - ... - - => .Bag - ) - ... - - - rule #deleteAccounts(.List) => .K ... -``` - -### Block processing - -- `#startBlock` is used to signal that we are about to start mining a block and block initialization should take place (before transactions are executed). -- `#finalizeBlock` is used to signal that block finalization procedures should take place (after transactions have executed). -- `#rewardOmmers(_)` pays out the reward to uncle blocks so that blocks are orphaned less often in Ethereum. - -```k - syntax EthereumCommand ::= "#startBlock" - // ---------------------------------------- - rule #startBlock => .K ... - _ => 0 - _ => .List - _ => #padToWidth(256, .Bytes) - - syntax EthereumCommand ::= "#finalizeBlock" - | #rewardOmmers ( JSONs ) [klabel(#rewardOmmers)] - // -------------------------------------------------------------------------- - rule #finalizeBlock => #rewardOmmers(OMMERS) ... - SCHED - [ OMMERS ] - MINER - - MINER - MINBAL => MINBAL +Int Rb < SCHED > - ... - - LOGS - _ => #bloomFilter(LOGS) - - rule (.K => #newAccount MINER) ~> #finalizeBlock ... - MINER [owise] - - rule #rewardOmmers(.JSONs) => .K ... - rule #rewardOmmers([ _ , _ , OMMER , _ , _ , _ , _ , _ , OMMNUM , _ ] , REST) => #rewardOmmers(REST) ... - SCHED - MINER - CURNUM - - MINER - MINBAL => MINBAL +Int Rb < SCHED > /Int 32 - ... - - - OMMER - OMMBAL => OMMBAL +Int Rb < SCHED > +Int (OMMNUM -Int CURNUM) *Int (Rb < SCHED > /Int 8) - ... - - - syntax Bytes ::= #bloomFilter(List) [klabel(#bloomFilter), function] - | #bloomFilter(List, Int) [klabel(#bloomFilterAux), function] - // ---------------------------------------------------------------------------- - rule #bloomFilter(L) => #bloomFilter(L, 0) - - rule #bloomFilter(.List, B) => #padToWidth(256, #asByteStack(B)) - rule #bloomFilter(ListItem({ ACCT | TOPICS | _ }) L, B) => #bloomFilter(ListItem(#padToWidth(20, #asByteStack(ACCT))) listAsBytes(TOPICS) L, B) - - syntax List ::= listAsBytes(List) [klabel(listAsBytes), function] - // ----------------------------------------------------------------- - rule listAsBytes(.List) => .List - rule listAsBytes(ListItem(TOPIC) L) => ListItem(#padToWidth(32, #asByteStack(TOPIC))) listAsBytes(L) - - rule #bloomFilter(ListItem(WS:Bytes) L, B) => #bloomFilter(L, B |Int M3:2048(WS)) -``` - -- `M3:2048` computes the 2048-bit hash of a log entry in which exactly 3 bits are set. This is used to compute the Bloom filter of a log entry. - -```k - syntax Int ::= "M3:2048" "(" Bytes ")" [function] - // ------------------------------------------------- - rule M3:2048(WS) => setBloomFilterBits(#parseByteStack(Keccak256(WS))) - - syntax Int ::= setBloomFilterBits(Bytes) [klabel(setBloomFilterBits), function] - // ------------------------------------------------------------------------------- - rule setBloomFilterBits(HASH) => (1 < #asInteger(#range(X, I, 2)) %Int 2048 -``` - -EVM Programs -============ - -EVM OpCodes ------------ - - -### Internal Operations - -These are just used by the other operators for shuffling local execution state around on the EVM. - -- `#push` will push an element to the `wordStack` without any checks. -- `#setStack_` will set the current stack to the given one. - -```k - syntax InternalOp ::= "#push" | "#setStack" WordStack - // ----------------------------------------------------- - rule W0:Int ~> #push => .K ... WS => W0 : WS - rule #setStack WS => .K ... _ => WS -``` - -- `#newAccount_` allows declaring a new empty account with the given address (and assumes the rounding to 160 bits has already occurred). - If the account already exists with non-zero nonce or non-empty code, an exception is thrown. - Otherwise, if the account already exists, the storage is cleared. - -```k - syntax InternalOp ::= "#newAccount" Int - | "#newExistingAccount" Int - // ----------------------------------------------- - rule #newAccount ACCT => #newExistingAccount ACCT ... ACCT ... - rule #newAccount ACCT => .K ... - - ( .Bag - => - - ACCT - 0 - .Bytes:AccountCode - .Map - .Map - 0 - - ) - ... - [owise, preserves-definedness] - - rule #newExistingAccount ACCT => #end EVMC_ACCOUNT_ALREADY_EXISTS ... - - ACCT - CODE - NONCE - ... - - requires CODE =/=K .Bytes orBool NONCE =/=Int 0 - - rule #newExistingAccount ACCT => .K ... - - ACCT - CODE - 0 - _ => .Map - _ => .Map - ... - - requires lengthBytes(CODE) ==Int 0 -``` - -- `#transferFunds` moves money from one account into another, creating the destination account if it doesn't exist. - -```k - syntax InternalOp ::= "#transferFunds" Int Int Int - | "#transferFundsToNonExistent" Int Int Int - // --------------------------------------------------------------- - rule #transferFunds ACCT ACCT VALUE => .K ... - - ACCT - ORIGFROM - ... - - requires VALUE <=Int ORIGFROM - - rule #transferFunds ACCTFROM ACCTTO VALUE => .K ... - - ACCTFROM - ORIGFROM => ORIGFROM -Word VALUE - ... - - - ACCTTO - ORIGTO => ORIGTO +Word VALUE - ... - - requires ACCTFROM =/=K ACCTTO andBool VALUE <=Int ORIGFROM - [preserves-definedness] - - rule #transferFunds ACCTFROM _ACCTTO VALUE => #end EVMC_BALANCE_UNDERFLOW ... - - ACCTFROM - ORIGFROM - ... - - requires VALUE >Int ORIGFROM - - rule #transferFunds ACCTFROM ACCTTO VALUE => #transferFundsToNonExistent ACCTFROM ACCTTO VALUE ... [owise] - - rule #transferFundsToNonExistent ACCTFROM ACCTTO VALUE => #newAccount ACCTTO ~> #transferFunds ACCTFROM ACCTTO VALUE ... - SCHED - requires ACCTFROM =/=K ACCTTO - andBool (VALUE >Int 0 orBool notBool Gemptyisnonexistent << SCHED >>) - - rule #transferFundsToNonExistent ACCTFROM ACCTTO 0 => .K ... - SCHED - requires ACCTFROM =/=K ACCTTO - andBool Gemptyisnonexistent << SCHED >> -``` - -### Invalid Operator - -We use `INVALID` both for marking the designated invalid operator, and `UNDEFINED(_)` for garbage bytes in the input program. - -```k - syntax InvalidOp ::= "INVALID" | "UNDEFINED" "(" Int ")" - // -------------------------------------------------------- - rule INVALID => #end EVMC_INVALID_INSTRUCTION ... - rule UNDEFINED(_) => #end EVMC_UNDEFINED_INSTRUCTION ... -``` - -### Stack Manipulations - -Some operators don't calculate anything, they just push the stack around a bit. - -```k - syntax UnStackOp ::= "POP" - // -------------------------- - rule POP _ => .K ... - - syntax StackOp ::= DUP ( Int ) [klabel(DUP)] - | SWAP ( Int ) [klabel(SWAP)] - // ---------------------------------------------- - rule DUP(N) WS:WordStack => #setStack ((WS [ N -Int 1 ]) : WS) ... - rule SWAP(N) (W0 : WS) => #setStack ((WS [ N -Int 1 ]) : (WS [ N -Int 1 := W0 ])) ... - - syntax PushOp ::= "PUSHZERO" - | PUSH ( Int ) [klabel(PUSH)] - // --------------------------------------------- - rule PUSHZERO => 0 ~> #push ... - - rule PUSH(N) => #asWord(#range(PGM, PCOUNT +Int 1, N)) ~> #push ... - PCOUNT - PGM -``` - -### Local Memory - -These operations are getters/setters of the local execution memory. - -```k - syntax UnStackOp ::= "MLOAD" - // ---------------------------- - rule MLOAD INDEX => #asWord(#range(LM, INDEX, 32)) ~> #push ... - LM - - syntax BinStackOp ::= "MSTORE" | "MSTORE8" - // ------------------------------------------ - rule MSTORE INDEX VALUE => .K ... - LM => LM [ INDEX := #padToWidth(32, #asByteStack(VALUE)) ] - - rule MSTORE8 INDEX VALUE => .K ... - LM => #write(LM, INDEX, (VALUE modInt 256)) -``` - -### Expressions - -Expression calculations are simple and don't require anything but the arguments from the `wordStack` to operate. - -NOTE: We have to call the opcode `OR` by `EVMOR` instead, because K has trouble parsing it/compiling the definition otherwise. - -```k - syntax UnStackOp ::= "ISZERO" | "NOT" - // ------------------------------------- - rule ISZERO W => W ==Word 0 ~> #push ... - rule NOT W => ~Word W ~> #push ... - - syntax BinStackOp ::= "ADD" | "MUL" | "SUB" | "DIV" | "EXP" | "MOD" - // ------------------------------------------------------------------- - rule ADD W0 W1 => W0 +Word W1 ~> #push ... - rule MUL W0 W1 => W0 *Word W1 ~> #push ... - rule SUB W0 W1 => W0 -Word W1 ~> #push ... - rule DIV W0 W1 => W0 /Word W1 ~> #push ... - rule EXP W0 W1 => W0 ^Word W1 ~> #push ... - rule MOD W0 W1 => W0 %Word W1 ~> #push ... - - syntax BinStackOp ::= "SDIV" | "SMOD" - // ------------------------------------- - rule SDIV W0 W1 => W0 /sWord W1 ~> #push ... - rule SMOD W0 W1 => W0 %sWord W1 ~> #push ... - - syntax TernStackOp ::= "ADDMOD" | "MULMOD" - // ------------------------------------------ - rule ADDMOD W0 W1 W2 => (W0 +Int W1) %Word W2 ~> #push ... - rule MULMOD W0 W1 W2 => (W0 *Int W1) %Word W2 ~> #push ... - - syntax BinStackOp ::= "BYTE" | "SIGNEXTEND" - // ------------------------------------------- - rule BYTE INDEX W => byte(INDEX, W) ~> #push ... - rule SIGNEXTEND W0 W1 => signextend(W0, W1) ~> #push ... - - syntax BinStackOp ::= "SHL" | "SHR" | "SAR" - // ------------------------------------------- - rule SHL W0 W1 => W1 < #push ... - rule SHR W0 W1 => W1 >>Word W0 ~> #push ... - rule SAR W0 W1 => W1 >>sWord W0 ~> #push ... - - syntax BinStackOp ::= "AND" | "EVMOR" | "XOR" - // --------------------------------------------- - rule AND W0 W1 => W0 &Word W1 ~> #push ... - rule EVMOR W0 W1 => W0 |Word W1 ~> #push ... - rule XOR W0 W1 => W0 xorWord W1 ~> #push ... - - syntax BinStackOp ::= "LT" | "GT" | "EQ" - // ---------------------------------------- - rule LT W0 W1 => W0 #push ... - rule GT W0 W1 => W0 >Word W1 ~> #push ... - rule EQ W0 W1 => W0 ==Word W1 ~> #push ... - - syntax BinStackOp ::= "SLT" | "SGT" - // ----------------------------------- - rule SLT W0 W1 => W0 s #push ... - rule SGT W0 W1 => W1 s #push ... - - syntax BinStackOp ::= "SHA3" - // ---------------------------- - rule SHA3 MEMSTART MEMWIDTH => keccak(#range(LM, MEMSTART, MEMWIDTH)) ~> #push ... - LM -``` - -### Local State - -These operators make queries about the current execution state. - -```k - syntax NullStackOp ::= "PC" | "GAS" | "GASPRICE" | "GASLIMIT" | "BASEFEE" - // ------------------------------------------------------------------------- - rule PC => PCOUNT ~> #push ... PCOUNT - rule GAS => gas2Int(GAVAIL) ~> #push ... GAVAIL - rule GASPRICE => GPRICE ~> #push ... GPRICE - rule GASLIMIT => GLIMIT ~> #push ... GLIMIT - rule BASEFEE => BFEE ~> #push ... BFEE - - syntax NullStackOp ::= "COINBASE" | "TIMESTAMP" | "NUMBER" | "DIFFICULTY" | "PREVRANDAO" - // ---------------------------------------------------------------------------------------- - rule COINBASE => CB ~> #push ... CB - rule TIMESTAMP => TS ~> #push ... TS - rule NUMBER => NUMB ~> #push ... NUMB - rule DIFFICULTY => DIFF ~> #push ... DIFF - rule PREVRANDAO => RDAO ~> #push ... RDAO - - syntax NullStackOp ::= "ADDRESS" | "ORIGIN" | "CALLER" | "CALLVALUE" | "CHAINID" | "SELFBALANCE" - // ------------------------------------------------------------------------------------------------ - rule ADDRESS => ACCT ~> #push ... ACCT - rule ORIGIN => ORG ~> #push ... ORG - rule CALLER => CL ~> #push ... CL - rule CALLVALUE => CV ~> #push ... CV - rule CHAINID => CID ~> #push ... CID - rule SELFBALANCE => BAL ~> #push ... - ACCT - - ACCT - BAL - ... - - - syntax NullStackOp ::= "MSIZE" | "CODESIZE" - // ------------------------------------------- - rule MSIZE => 32 *Word MU ~> #push ... MU - rule CODESIZE => lengthBytes(PGM) ~> #push ... PGM - - syntax TernStackOp ::= "CODECOPY" - // --------------------------------- - rule CODECOPY MEMSTART PGMSTART WIDTH => .K ... - PGM - LM => LM [ MEMSTART := #range(PGM, PGMSTART, WIDTH) ] - - syntax UnStackOp ::= "BLOCKHASH" - // -------------------------------- -``` - -The blockhash is calculated here using the "shortcut" formula used for running tests. - -```k - rule BLOCKHASH N => #blockhash(HASHES, N, HI -Int 1, 0) ~> #push ... - HI - HASHES - - syntax Int ::= #blockhash ( List , Int , Int , Int ) [klabel(#blockhash), function] - // ----------------------------------------------------------------------------------- - rule #blockhash(_, N, HI, _) => 0 requires N >Int HI - rule #blockhash(_, _, _, 256) => 0 - rule #blockhash(ListItem(0) _, _, _, _) => 0 - rule #blockhash(ListItem(H) _, N, N, _) => H - rule #blockhash(ListItem(_) L, N, HI, A) => #blockhash(L, N, HI -Int 1, A +Int 1) [owise] -``` - -EVM OpCodes ------------ - -### EVM Control Flow - -The `JUMP*` family of operations affect the current program counter. - -```k - syntax NullStackOp ::= "JUMPDEST" - // --------------------------------- - rule JUMPDEST => .K ... - - syntax UnStackOp ::= "JUMP" - // --------------------------- - rule JUMP DEST => #endBasicBlock... - _ => DEST - DESTS - requires DEST in DESTS - - rule JUMP DEST => #end EVMC_BAD_JUMP_DESTINATION ... - DESTS - requires notBool DEST in DESTS - - syntax BinStackOp ::= "JUMPI" - // ----------------------------- - rule [jumpi.false]: JUMPI _DEST I => .K ... requires I ==Int 0 - rule [jumpi.true]: JUMPI DEST I => JUMP DEST ... requires I =/=Int 0 - - syntax InternalOp ::= "#endBasicBlock" - // -------------------------------------- - rule #endBasicBlock ~> (_:OpCode => .K) ... - rule [end-basic-block]: (#endBasicBlock => .K) ~> #execute ... -``` - -### `STOP`, `REVERT`, and `RETURN` - -```k - syntax NullStackOp ::= "STOP" - // ----------------------------- - rule STOP => #end EVMC_SUCCESS ... - _ => .Bytes - - syntax BinStackOp ::= "RETURN" - // ------------------------------ - rule RETURN RETSTART RETWIDTH => #end EVMC_SUCCESS ... - _ => #range(LM, RETSTART, RETWIDTH) - LM - - syntax BinStackOp ::= "REVERT" - // ------------------------------ - rule REVERT RETSTART RETWIDTH => #end EVMC_REVERT ... - _ => #range(LM, RETSTART, RETWIDTH) - LM -``` - -### Call Data - -These operators query about the current `CALL*` state. - -```k - syntax NullStackOp ::= "CALLDATASIZE" - // ------------------------------------- - rule CALLDATASIZE => lengthBytes(CD) ~> #push ... - CD - - syntax UnStackOp ::= "CALLDATALOAD" - // ----------------------------------- - rule CALLDATALOAD DATASTART => #asWord(#range(CD, DATASTART, 32)) ~> #push ... - CD - - syntax TernStackOp ::= "CALLDATACOPY" - // ------------------------------------- - rule CALLDATACOPY MEMSTART DATASTART DATAWIDTH => .K ... - LM => LM [ MEMSTART := #range(CD, DATASTART, DATAWIDTH) ] - CD -``` - -### Return Data - -These operators query about the current return data buffer. - -```k - syntax NullStackOp ::= "RETURNDATASIZE" - // --------------------------------------- - rule RETURNDATASIZE => lengthBytes(RD) ~> #push ... - RD - - syntax TernStackOp ::= "RETURNDATACOPY" - // ---------------------------------------- - rule RETURNDATACOPY MEMSTART DATASTART DATAWIDTH => .K ... - LM => LM [ MEMSTART := #range(RD, DATASTART, DATAWIDTH) ] - RD - requires DATASTART +Int DATAWIDTH <=Int lengthBytes(RD) - - rule RETURNDATACOPY _MEMSTART DATASTART DATAWIDTH => #end EVMC_INVALID_MEMORY_ACCESS ... - RD - requires DATASTART +Int DATAWIDTH >Int lengthBytes(RD) -``` - -### Log Operations - -```k - syntax BinStackOp ::= LogOp - syntax LogOp ::= LOG ( Int ) [klabel(LOG)] - // ------------------------------------------ - rule LOG(N) MEMSTART MEMWIDTH => .K ... - ACCT - WS => #drop(N, WS) - LM - L => L ListItem({ ACCT | WordStack2List(#take(N, WS)) | #range(LM, MEMSTART, MEMWIDTH) }) - requires #sizeWordStack(WS) >=Int N -``` - -Ethereum Network OpCodes ------------------------- - -Operators that require access to the rest of the Ethereum network world-state can be taken as a first draft of a "blockchain generic" language. - -### Account Queries - -```k - syntax UnStackOp ::= "BALANCE" - // ------------------------------ - rule BALANCE ACCT => #accessAccounts ACCT ~> BAL ~> #push ... - - ACCT - BAL - ... - - - rule BALANCE ACCT => #accessAccounts ACCT ~> 0 ~> #push ... [owise] - - syntax UnStackOp ::= "EXTCODESIZE" - // ---------------------------------- - rule EXTCODESIZE ACCT => #accessAccounts ACCT ~> lengthBytes(CODE) ~> #push ... - - ACCT - CODE - ... - - - rule EXTCODESIZE ACCT => #accessAccounts ACCT ~> 0 ~> #push ... [owise] - - syntax UnStackOp ::= "EXTCODEHASH" - // ---------------------------------- - rule EXTCODEHASH ACCT => #accessAccounts ACCT ~> keccak(CODE) ~> #push ... - - ACCT - CODE:Bytes - NONCE - BAL - ... - - requires notBool #accountEmpty(CODE, NONCE, BAL) - - rule EXTCODEHASH ACCT => #accessAccounts ACCT ~> 0 ~> #push ... [owise] - - syntax QuadStackOp ::= "EXTCODECOPY" - // ------------------------------------ - rule EXTCODECOPY ACCT MEMSTART PGMSTART WIDTH => #accessAccounts ACCT ... - LM => LM [ MEMSTART := #range(PGM, PGMSTART, WIDTH) ] - - ACCT - PGM - ... - - - rule EXTCODECOPY ACCT MEMSTART _ WIDTH => #accessAccounts ACCT ... - LM => LM [ MEMSTART := #padToWidth(WIDTH, .Bytes) ] [owise] -``` - -### Account Storage Operations - -These rules reach into the network state and load/store from account storage: - -```k - syntax UnStackOp ::= "SLOAD" - // ---------------------------- - rule [sload]: - SLOAD INDEX => #lookup(STORAGE, INDEX) ~> #push ... - ACCT - - ACCT - STORAGE - ... - - - syntax BinStackOp ::= "SSTORE" - // ------------------------------ - rule [sstore]: - SSTORE INDEX NEW => .K ... - ACCT - - ACCT - STORAGE => STORAGE [ INDEX <- NEW ] - ... - - [preserves-definedness] -``` - -### Call Operations - -The various `CALL*` (and other inter-contract control flow) operations will be desugared into these `InternalOp`s. - -- `#checkCall` takes the calling account and the value of the call and triggers several checks before executing the call. -- `#checkBalanceUnderflow` takes the calling account and the value of the call and checks if the call value is greater than the account balance. -- `#checkDepthExceeded` checks if the current call depth is greater than or equal to `1024`. -- `#checkNonceExceeded` takes the calling account and checks if the nonce is less than `maxUInt64` (`18446744073709551615`). -- `#call` takes the calling account, the account to execute as, the account whose code should execute, the gas limit, the amount to transfer, the arguments, and the static flag. -- `#callWithCode` takes the calling account, the account to execute as, the code to execute (as a `Bytes`), the gas limit, the amount to transfer, the arguments, and the static flag. -- `#return` is a placeholder for the calling program, specifying where to place the returned data in memory. - -```k - syntax InternalOp ::= "#checkCall" Int Int - | "#checkBalanceUnderflow" Int Int - | "#checkNonceExceeded" Int - | "#checkDepthExceeded" - | "#call" Int Int Int Int Int Bytes Bool - | "#callWithCode" Int Int Int Bytes Int Int Bytes Bool - | "#mkCall" Int Int Int Bytes Int Bytes Bool - // ----------------------------------------------------------------------------------- - rule #checkBalanceUnderflow ACCT VALUE => #refund GCALL ~> #pushCallStack ~> #pushWorldState ~> #end EVMC_BALANCE_UNDERFLOW ... - _ => .Bytes - GCALL - - ACCT - BAL - ... - - requires VALUE >Int BAL - - rule #checkBalanceUnderflow ACCT VALUE => .K ... - - ACCT - BAL - ... - - requires VALUE <=Int BAL - - rule #checkDepthExceeded => #refund GCALL ~> #pushCallStack ~> #pushWorldState ~> #end EVMC_CALL_DEPTH_EXCEEDED ... - _ => .Bytes - GCALL - CD - requires CD >=Int 1024 - - rule #checkDepthExceeded => .K ... - CD - requires CD #checkNonceExceeded ACCT => #refund GCALL ~> #pushCallStack ~> #pushWorldState ~> #end EVMC_NONCE_EXCEEDED ... - _ => .Bytes - GCALL - - ACCT - NONCE - ... - - requires notBool #rangeNonce(NONCE) - - rule #checkNonceExceeded ACCT => .K ... - - ACCT - NONCE - ... - - requires #rangeNonce(NONCE) - - rule #checkCall ACCT VALUE => #checkBalanceUnderflow ACCT VALUE ~> #checkDepthExceeded ... - - rule #call ACCTFROM ACCTTO ACCTCODE VALUE APPVALUE ARGS STATIC - => #callWithCode ACCTFROM ACCTTO ACCTCODE CODE VALUE APPVALUE ARGS STATIC - ... - - - ACCTCODE - CODE - ... - - - rule #call ACCTFROM ACCTTO ACCTCODE VALUE APPVALUE ARGS STATIC - => #callWithCode ACCTFROM ACCTTO ACCTCODE .Bytes VALUE APPVALUE ARGS STATIC - ... - [owise] - - rule #callWithCode ACCTFROM ACCTTO ACCTCODE BYTES VALUE APPVALUE ARGS STATIC - => #pushCallStack ~> #pushWorldState - ~> #transferFunds ACCTFROM ACCTTO VALUE - ~> #mkCall ACCTFROM ACCTTO ACCTCODE BYTES APPVALUE ARGS STATIC - ... - - - rule #mkCall ACCTFROM ACCTTO ACCTCODE BYTES APPVALUE ARGS STATIC:Bool - => #touchAccounts ACCTFROM ACCTTO ~> #accessAccounts ACCTFROM ACCTTO ~> #loadProgram BYTES ~> #initVM ~> #precompiled?(ACCTCODE, SCHED) ~> #execute - ... - - USEGAS:Bool - CD => CD +Int 1 - _ => ARGS - _ => APPVALUE - _ => ACCTTO - GAVAIL:Gas => #if USEGAS #then GCALL:Gas #else GAVAIL:Gas #fi - GCALL:Gas => #if USEGAS #then 0:Gas #else GCALL:Gas #fi - _ => ACCTFROM - OLDSTATIC:Bool => OLDSTATIC orBool STATIC - SCHED - - syntax InternalOp ::= "#precompiled?" "(" Int "," Schedule ")" - // -------------------------------------------------------------- - rule [precompile.true]: #precompiled?(ACCTCODE, SCHED) => #next [ #precompiled(ACCTCODE) ] ... requires #isPrecompiledAccount(ACCTCODE, SCHED) [preserves-definedness] - rule [precompile.false]: #precompiled?(ACCTCODE, SCHED) => .K ... requires notBool #isPrecompiledAccount(ACCTCODE, SCHED) - - syntax Bool ::= #isPrecompiledAccount ( Int , Schedule ) [klabel(#isPrecompiledAccount), function, total, smtlib(isPrecompiledAccount)] - // --------------------------------------------------------------------------------------------------------------------------------------- - rule [isPrecompiledAccount]: #isPrecompiledAccount(ACCTCODE, SCHED) => 0 #initVM => .K ...
- _ => 0 - _ => 0 - _ => .Bytes - _ => .WordStack - _ => .Bytes - - syntax KItem ::= "#loadProgram" Bytes - // ------------------------------------- - rule #loadProgram BYTES => .K ... - _ => BYTES - _ => #computeValidJumpDests(BYTES) - - syntax KItem ::= "#touchAccounts" Account | "#touchAccounts" Account Account - // ---------------------------------------------------------------------------- - rule #touchAccounts ADDR1 ADDR2 => #touchAccounts ADDR1 ~> #touchAccounts ADDR2 ... - - rule #touchAccounts ADDR => .K ... - TOUCHED_ACCOUNTS => TOUCHED_ACCOUNTS |Set SetItem(ADDR) - - syntax KItem ::= "#accessStorage" Account Int - // --------------------------------------------- - rule #accessStorage ACCT INDEX => .K ... - ... ACCT |-> (TS:Set => TS |Set SetItem(INDEX)) ... - SCHED - requires Ghasaccesslist << SCHED >> - [preserves-definedness] - - rule #accessStorage ACCT INDEX => .K ... - TS => TS[ACCT <- SetItem(INDEX)] - SCHED - requires Ghasaccesslist << SCHED >> andBool notBool ACCT in_keys(TS) - - rule #accessStorage _ _ => .K ... - SCHED - requires notBool Ghasaccesslist << SCHED >> - - syntax KItem ::= "#accessAccounts" Account - | "#accessAccounts" Set - | "#accessAccounts" Account Account - | "#accessAccounts" Account Account Set - // ------------------------------------------------------ - rule #accessAccounts ADDR1:Account ADDR2:Account ADDRSET:Set => #accessAccounts ADDR1 ~> #accessAccounts ADDR2 ~> #accessAccounts ADDRSET ... - - rule #accessAccounts ADDR1:Account ADDR2:Account => #accessAccounts ADDR1 ~> #accessAccounts ADDR2 ... - - rule #accessAccounts ADDR:Account => .K ... - TOUCHED_ACCOUNTS => TOUCHED_ACCOUNTS |Set SetItem(ADDR) - - rule #accessAccounts ADDRSET:Set => .K ... - TOUCHED_ACCOUNTS => TOUCHED_ACCOUNTS |Set ADDRSET - - syntax Set ::= #computeValidJumpDests(Bytes) [klabel(#computeValidJumpDests), function, memo, total] - | #computeValidJumpDests(Bytes, Int, List) [klabel(#computeValidJumpDestsAux), function ] - // ------------------------------------------------------------------------------------------------------------------ - rule #computeValidJumpDests(PGM) => #computeValidJumpDests(PGM, 0, .List) - - syntax Set ::= #computeValidJumpDestsWithinBound(Bytes, Int, List) [klabel(#computeValidJumpDestsWithinBound), function] - // ------------------------------------------------------------------------------------------------------------------------ - rule #computeValidJumpDests(PGM, I, RESULT) => List2Set(RESULT) requires I >=Int lengthBytes(PGM) - rule #computeValidJumpDests(PGM, I, RESULT) => #computeValidJumpDestsWithinBound(PGM, I, RESULT) requires I #computeValidJumpDests(PGM, I +Int 1, RESULT ListItem(I)) requires PGM [ I ] ==Int 91 - rule #computeValidJumpDestsWithinBound(PGM, I, RESULT) => #computeValidJumpDests(PGM, I +Int #widthOpCode(PGM [ I ]), RESULT) requires notBool PGM [ I ] ==Int 91 -``` - -```k - syntax Int ::= #widthOpCode(Int) [klabel(#widthOpCode), function] - // ----------------------------------------------------------------- - rule #widthOpCode(W) => W -Int 94 requires W >=Int 96 andBool W <=Int 127 - rule #widthOpCode(_) => 1 [owise] - - syntax KItem ::= "#return" Int Int - // ---------------------------------- - rule [return.exception]: - _:ExceptionalStatusCode - #halt ~> #return _ _ - => #popCallStack ~> #popWorldState ~> 0 ~> #push - ... - - _ => .Bytes - - rule [return.revert]: - EVMC_REVERT - #halt ~> #return RETSTART RETWIDTH - => #popCallStack ~> #popWorldState - ~> 0 ~> #push ~> #refund GAVAIL ~> #setLocalMem RETSTART RETWIDTH OUT - ... - - OUT - GAVAIL - - rule [return.success]: - EVMC_SUCCESS - #halt ~> #return RETSTART RETWIDTH - => #popCallStack ~> #dropWorldState - ~> 1 ~> #push ~> #refund GAVAIL ~> #setLocalMem RETSTART RETWIDTH OUT - ... - - OUT - GAVAIL - - syntax InternalOp ::= "#refund" Gas - | "#setLocalMem" Int Int Bytes - // -------------------------------------------------- - rule [refund]: #refund G:Gas => .K ... GAVAIL => GAVAIL +Gas G true - rule [refund.noGas]: #refund _ => .K ... false - - - rule #setLocalMem START WIDTH WS => .K ... - LM => LM [ START := #range(WS, 0, minInt(WIDTH, lengthBytes(WS))) ] -``` - -Ethereum Network OpCodes ------------------------- - -### Call Operations - -For each `CALL*` operation, we make a corresponding call to `#call` and a state-change to setup the custom parts of the calling environment. - -```k - syntax CallOp ::= "CALL" - // ------------------------ - rule [call]: - CALL _GCAP ACCTTO VALUE ARGSTART ARGWIDTH RETSTART RETWIDTH - => #accessAccounts ACCTTO - ~> #checkCall ACCTFROM VALUE - ~> #call ACCTFROM ACCTTO ACCTTO VALUE VALUE #range(LM, ARGSTART, ARGWIDTH) false - ~> #return RETSTART RETWIDTH - ... - - ACCTFROM - LM - - syntax CallOp ::= "CALLCODE" - // ---------------------------- - rule [callcode]: - CALLCODE _GCAP ACCTTO VALUE ARGSTART ARGWIDTH RETSTART RETWIDTH - => #accessAccounts ACCTTO - ~> #checkCall ACCTFROM VALUE - ~> #call ACCTFROM ACCTFROM ACCTTO VALUE VALUE #range(LM, ARGSTART, ARGWIDTH) false - ~> #return RETSTART RETWIDTH - ... - - ACCTFROM - LM - - syntax CallSixOp ::= "DELEGATECALL" - // ----------------------------------- - rule [delegatecall]: - DELEGATECALL _GCAP ACCTTO ARGSTART ARGWIDTH RETSTART RETWIDTH - => #accessAccounts ACCTTO - ~> #checkCall ACCTFROM 0 - ~> #call ACCTAPPFROM ACCTFROM ACCTTO 0 VALUE #range(LM, ARGSTART, ARGWIDTH) false - ~> #return RETSTART RETWIDTH - ... - - ACCTFROM - ACCTAPPFROM - VALUE - LM - - syntax CallSixOp ::= "STATICCALL" - // --------------------------------- - rule [staticcall]: - STATICCALL _GCAP ACCTTO ARGSTART ARGWIDTH RETSTART RETWIDTH - => #accessAccounts ACCTTO - ~> #checkCall ACCTFROM 0 - ~> #call ACCTFROM ACCTTO ACCTTO 0 0 #range(LM, ARGSTART, ARGWIDTH) true - ~> #return RETSTART RETWIDTH - ... - - ACCTFROM - LM -``` - -### Account Creation/Deletion - -- `#create____` transfers the endowment to the new account and triggers the execution of the initialization code. -- `#codeDeposit_` checks the result of initialization code and whether the code deposit can be paid, indicating an error if not. -- `#isValidCode_` checks if the code returned by the execution of the initialization code begins with a reserved byte. [EIP-3541] -- `#hasValidInitCode` checks the length of the transaction data in a create transaction. [EIP-3860] - -```k - syntax InternalOp ::= "#create" Int Int Int Bytes - | "#mkCreate" Int Int Int Bytes - | "#incrementNonce" Int - | "#checkCreate" Int Int - // -------------------------------------------- - rule #create ACCTFROM ACCTTO VALUE INITCODE - => #incrementNonce ACCTFROM - ~> #pushCallStack ~> #pushWorldState - ~> #newAccount ACCTTO - ~> #transferFunds ACCTFROM ACCTTO VALUE - ~> #mkCreate ACCTFROM ACCTTO VALUE INITCODE - ... - - - rule #mkCreate ACCTFROM ACCTTO VALUE INITCODE - => #touchAccounts ACCTFROM ACCTTO ~> #accessAccounts ACCTFROM ACCTTO ~> #loadProgram INITCODE ~> #initVM ~> #execute - ... - - USEGAS - SCHED - _ => ACCTTO - GAVAIL => #if USEGAS #then GCALL #else GAVAIL #fi - GCALL => #if USEGAS #then 0 #else GCALL #fi - _ => ACCTFROM - CD => CD +Int 1 - _ => .Bytes - _ => VALUE - - ACCTTO - NONCE => #if Gemptyisnonexistent << SCHED >> #then NONCE +Int 1 #else NONCE #fi - ... - - - rule #incrementNonce ACCT => .K ... - - ACCT - NONCE => NONCE +Int 1 - ... - - - syntax Bool ::= #hasValidInitCode ( Int , Schedule ) [klabel(#hasValidInitCode), function] - // ------------------------------------------------------------------------------------------ - rule #hasValidInitCode(INITCODELEN, SCHED) => notBool Ghasmaxinitcodesize << SCHED >> orBool INITCODELEN <=Int maxInitCodeSize < SCHED > - - syntax Bool ::= #isValidCode ( Bytes , Schedule ) [klabel(#isValidCode), function] - // ---------------------------------------------------------------------------------- - rule #isValidCode( OUT , SCHED) => Ghasrejectedfirstbyte << SCHED >> impliesBool OUT[0] =/=Int 239 requires lengthBytes(OUT) >Int 0 - rule #isValidCode(_OUT , _SCHED) => true [owise] - - syntax KItem ::= "#codeDeposit" Int - | "#mkCodeDeposit" Int - | "#finishCodeDeposit" Int Bytes - // ----------------------------------------------- - rule _:ExceptionalStatusCode - #halt ~> #codeDeposit _ => #popCallStack ~> #popWorldState ~> 0 ~> #push ... _ => .Bytes - - rule EVMC_REVERT - #halt ~> #codeDeposit _ => #popCallStack ~> #popWorldState ~> #refund GAVAIL ~> 0 ~> #push ... - GAVAIL - - rule EVMC_SUCCESS - #halt ~> #codeDeposit ACCT => #mkCodeDeposit ACCT ... - - rule #mkCodeDeposit ACCT - => Gcodedeposit < SCHED > *Int lengthBytes(OUT) ~> #deductGas - ~> #finishCodeDeposit ACCT OUT - ... - - SCHED - OUT => .Bytes - requires lengthBytes(OUT) <=Int maxCodeSize < SCHED > andBool #isValidCode(OUT, SCHED) - - rule #mkCodeDeposit _ACCT => #popCallStack ~> #popWorldState ~> 0 ~> #push ... - SCHED - OUT => .Bytes - requires notBool ( lengthBytes(OUT) <=Int maxCodeSize < SCHED > andBool #isValidCode(OUT, SCHED) ) - - rule #finishCodeDeposit ACCT OUT - => #popCallStack ~> #dropWorldState - ~> #refund GAVAIL ~> ACCT ~> #push - ... - - GAVAIL - - ACCT - _ => OUT - ... - - - rule _:ExceptionalStatusCode - #halt ~> #finishCodeDeposit ACCT _ - => #popCallStack ~> #dropWorldState - ~> #refund GAVAIL ~> ACCT ~> #push - ... - - GAVAIL - FRONTIER - - rule _:ExceptionalStatusCode - #halt ~> #finishCodeDeposit _ _ => #popCallStack ~> #popWorldState ~> 0 ~> #push ... - SCHED - requires SCHED =/=K FRONTIER - - rule #checkCreate ACCT VALUE => #checkBalanceUnderflow ACCT VALUE ~> #checkDepthExceeded ~> #checkNonceExceeded ACCT ... -``` - -`CREATE` will attempt to `#create` the account using the initialization code and cleans up the result with `#codeDeposit`. - -```k - syntax TernStackOp ::= "CREATE" - // ------------------------------- - rule [create-valid]: - CREATE VALUE MEMSTART MEMWIDTH - => #accessAccounts #newAddr(ACCT, NONCE) - ~> #checkCreate ACCT VALUE - ~> #create ACCT #newAddr(ACCT, NONCE) VALUE #range(LM, MEMSTART, MEMWIDTH) - ~> #codeDeposit #newAddr(ACCT, NONCE) - ... - - ACCT - LM - - ACCT - NONCE - ... - - SCHED - requires #hasValidInitCode(MEMWIDTH, SCHED) - [preserves-definedness] - - rule [create-invalid]: - CREATE _ _ _ => #end EVMC_OUT_OF_GAS ... [owise] -``` - -`CREATE2` will attempt to `#create` the account, but with the new scheme for choosing the account address. - -```k - syntax QuadStackOp ::= "CREATE2" - // -------------------------------- - rule [create2-valid]: - CREATE2 VALUE MEMSTART MEMWIDTH SALT - => #accessAccounts #newAddr(ACCT, SALT, #range(LM, MEMSTART, MEMWIDTH)) - ~> #checkCreate ACCT VALUE - ~> #create ACCT #newAddr(ACCT, SALT, #range(LM, MEMSTART, MEMWIDTH)) VALUE #range(LM, MEMSTART, MEMWIDTH) - ~> #codeDeposit #newAddr(ACCT, SALT, #range(LM, MEMSTART, MEMWIDTH)) - ... - - ACCT - LM - SCHED - requires #hasValidInitCode(MEMWIDTH, SCHED) - - rule [create2-invalid]: - CREATE2 _ _ _ _ => #end EVMC_OUT_OF_GAS ... [owise] -``` - -`SELFDESTRUCT` marks the current account for deletion and transfers funds out of the current account. -Self destructing to yourself, unlike a regular transfer, destroys the balance in the account, irreparably losing it. - -```k - syntax UnStackOp ::= "SELFDESTRUCT" - // ----------------------------------- - rule SELFDESTRUCT ACCTTO => #touchAccounts ACCT ACCTTO ~> #accessAccounts ACCTTO ~> #transferFunds ACCT ACCTTO BALFROM ~> #end EVMC_SUCCESS ... - ACCT - SDS => SDS |Set SetItem(ACCT) - - ACCT - BALFROM - ... - - _ => .Bytes - requires ACCT =/=Int ACCTTO - - rule SELFDESTRUCT ACCT => #touchAccounts ACCT ~> #accessAccounts ACCT ~> #end EVMC_SUCCESS ... - ACCT - SDS => SDS |Set SetItem(ACCT) - - ACCT - _ => 0 - ... - - _ => .Bytes -``` - -Precompiled Contracts ---------------------- - -- `#precompiled` is a placeholder for the pre-compiled contracts of a given schedule. These contracts are located at contiguous addresses starting from 1. -- `#precompiledAccountsUB` returns the highest address (upper bound) of the precompiled contract accounts -- `#precompiledAccountsSet` returns the set of addresses of the precompiled contract accounts - -```k - syntax NullStackOp ::= PrecompiledOp - syntax PrecompiledOp ::= #precompiled ( Int ) [klabel(#precompiled), function] - // ------------------------------------------------------------------------------ - rule #precompiled(1) => ECREC - rule #precompiled(2) => SHA256 - rule #precompiled(3) => RIP160 - rule #precompiled(4) => ID - rule #precompiled(5) => MODEXP - rule #precompiled(6) => ECADD - rule #precompiled(7) => ECMUL - rule #precompiled(8) => ECPAIRING - rule #precompiled(9) => BLAKE2F - - syntax Int ::= #precompiledAccountsUB ( Schedule ) [klabel(#precompiledAccountsUB), function, total] - // ---------------------------------------------------------------------------------------------------- - rule #precompiledAccountsUB(DEFAULT) => 4 - rule #precompiledAccountsUB(FRONTIER) => #precompiledAccountsUB(DEFAULT) - rule #precompiledAccountsUB(HOMESTEAD) => #precompiledAccountsUB(FRONTIER) - rule #precompiledAccountsUB(TANGERINE_WHISTLE) => #precompiledAccountsUB(HOMESTEAD) - rule #precompiledAccountsUB(SPURIOUS_DRAGON) => #precompiledAccountsUB(TANGERINE_WHISTLE) - rule #precompiledAccountsUB(BYZANTIUM) => 8 - rule #precompiledAccountsUB(CONSTANTINOPLE) => #precompiledAccountsUB(BYZANTIUM) - rule #precompiledAccountsUB(PETERSBURG) => #precompiledAccountsUB(CONSTANTINOPLE) - rule #precompiledAccountsUB(ISTANBUL) => 9 - rule #precompiledAccountsUB(BERLIN) => #precompiledAccountsUB(ISTANBUL) - rule #precompiledAccountsUB(LONDON) => #precompiledAccountsUB(BERLIN) - rule #precompiledAccountsUB(MERGE) => #precompiledAccountsUB(LONDON) - rule #precompiledAccountsUB(SHANGHAI) => #precompiledAccountsUB(MERGE) - - - syntax Set ::= #precompiledAccountsSet ( Schedule ) [klabel(#precompiledAccountsSet), function, total] - syntax Set ::= #precompiledAccountsSetAux ( Int ) [klabel(#precompiledAccountsSetAux), function, total] - // ------------------------------------------------------------------------------------------------------------ - rule #precompiledAccountsSet(SCHED) => #precompiledAccountsSetAux(#precompiledAccountsUB(SCHED)) - - rule #precompiledAccountsSetAux(N) => .Set requires N <=Int 0 - rule #precompiledAccountsSetAux(N) => SetItem(N) #precompiledAccountsSetAux(N -Int 1) [owise, preserves-definedness] -``` - -- `ECREC` performs ECDSA public key recovery. -- `SHA256` performs the SHA2-257 hash function. -- `RIP160` performs the RIPEMD-160 hash function. -- `ID` is the identity function (copies input to output). - -```k - syntax PrecompiledOp ::= "ECREC" - // -------------------------------- - rule ECREC => #end EVMC_SUCCESS ... - DATA - _ => #ecrec(#range(DATA, 0, 32), #range(DATA, 32, 32), #range(DATA, 64, 32), #range(DATA, 96, 32)) - - syntax Bytes ::= #ecrec ( Bytes , Bytes , Bytes , Bytes ) [klabel(#ecrec), function, total, smtlib(ecrec)] - | #ecrec ( Account ) [klabel(#ecrecAux), function, total ] - // ------------------------------------------------------------------------------------------------------------- - rule [ecrec]: #ecrec(HASH, SIGV, SIGR, SIGS) => #ecrec(#sender(HASH, #asWord(SIGV), SIGR, SIGS)) [concrete] - - rule #ecrec(.Account) => .Bytes - rule #ecrec(N:Int) => #padToWidth(32, #asByteStack(N)) - - syntax PrecompiledOp ::= "SHA256" - // --------------------------------- - rule SHA256 => #end EVMC_SUCCESS ... - DATA - _ => #parseHexBytes(Sha256(DATA)) - - syntax PrecompiledOp ::= "RIP160" - // --------------------------------- - rule RIP160 => #end EVMC_SUCCESS ... - DATA - _ => #padToWidth(32, #parseHexBytes(RipEmd160(DATA))) - - syntax PrecompiledOp ::= "ID" - // ----------------------------- - rule ID => #end EVMC_SUCCESS ... - DATA - _ => DATA - - syntax PrecompiledOp ::= "MODEXP" - // --------------------------------- - rule MODEXP => #end EVMC_SUCCESS ... - DATA - _ => #modexp1(#asWord(#range(DATA, 0, 32)), #asWord(#range(DATA, 32, 32)), #asWord(#range(DATA, 64, 32)), #range(DATA, 96, maxInt(0, lengthBytes(DATA) -Int 96))) - - syntax Bytes ::= #modexp1 ( Int , Int , Int , Bytes ) [klabel(#modexp1), function] - | #modexp2 ( Int , Int , Int , Bytes ) [klabel(#modexp2), function] - | #modexp3 ( Int , Int , Int , Bytes ) [klabel(#modexp3), function] - | #modexp4 ( Int , Int , Int ) [klabel(#modexp4), function] - // ---------------------------------------------------------------------------------- - rule #modexp1(BASELEN, EXPLEN, MODLEN, DATA) => #modexp2(#asInteger(#range(DATA, 0, BASELEN)), EXPLEN, MODLEN, #range(DATA, BASELEN, maxInt(0, lengthBytes(DATA) -Int BASELEN))) requires MODLEN =/=Int 0 - rule #modexp1(_, _, 0, _) => .Bytes - rule #modexp2(BASE, EXPLEN, MODLEN, DATA) => #modexp3(BASE, #asInteger(#range(DATA, 0, EXPLEN)), MODLEN, #range(DATA, EXPLEN, maxInt(0, lengthBytes(DATA) -Int EXPLEN))) - rule #modexp3(BASE, EXPONENT, MODLEN, DATA) => #padToWidth(MODLEN, #modexp4(BASE, EXPONENT, #asInteger(#range(DATA, 0, MODLEN)))) - rule #modexp4(BASE, EXPONENT, MODULUS) => #asByteStack(powmod(BASE, EXPONENT, MODULUS)) - - syntax PrecompiledOp ::= "ECADD" - // -------------------------------- - rule ECADD => #ecadd((#asWord(#range(DATA, 0, 32)), #asWord(#range(DATA, 32, 32))), (#asWord(#range(DATA, 64, 32)), #asWord(#range(DATA, 96, 32)))) ... - DATA - - syntax InternalOp ::= #ecadd(G1Point, G1Point) [klabel(#ecadd)] - // --------------------------------------------------------------- - rule #ecadd(P1, P2) => #end EVMC_PRECOMPILE_FAILURE ... - requires notBool isValidPoint(P1) orBool notBool isValidPoint(P2) - rule #ecadd(P1, P2) => #end EVMC_SUCCESS ... _ => #point(BN128Add(P1, P2)) - requires isValidPoint(P1) andBool isValidPoint(P2) - - syntax PrecompiledOp ::= "ECMUL" - // -------------------------------- - rule ECMUL => #ecmul((#asWord(#range(DATA, 0, 32)), #asWord(#range(DATA, 32, 32))), #asWord(#range(DATA, 64, 32))) ... - DATA - - syntax InternalOp ::= #ecmul(G1Point, Int) [klabel(#ecmul)] - // ----------------------------------------------------------- - rule #ecmul(P, _S) => #end EVMC_PRECOMPILE_FAILURE ... - requires notBool isValidPoint(P) - rule #ecmul(P, S) => #end EVMC_SUCCESS ... _ => #point(BN128Mul(P, S)) - requires isValidPoint(P) - - syntax Bytes ::= #point ( G1Point ) [klabel(#point), function] - // -------------------------------------------------------------- - rule #point((X, Y)) => #padToWidth(32, #asByteStack(X)) +Bytes #padToWidth(32, #asByteStack(Y)) - - syntax PrecompiledOp ::= "ECPAIRING" - // ------------------------------------ - rule ECPAIRING => #ecpairing(.List, .List, 0, DATA, lengthBytes(DATA)) ... - DATA - requires lengthBytes(DATA) modInt 192 ==Int 0 - rule ECPAIRING => #end EVMC_PRECOMPILE_FAILURE ... - DATA - requires lengthBytes(DATA) modInt 192 =/=Int 0 - - syntax InternalOp ::= #ecpairing(List, List, Int, Bytes, Int) [klabel(#ecpairing)] - // ---------------------------------------------------------------------------------- - rule (.K => #checkPoint) ~> #ecpairing((.List => ListItem((#asWord(#range(DATA, I, 32)), #asWord(#range(DATA, I +Int 32, 32))))) _, (.List => ListItem((#asWord(#range(DATA, I +Int 96, 32)) x #asWord(#range(DATA, I +Int 64, 32)) , #asWord(#range(DATA, I +Int 160, 32)) x #asWord(#range(DATA, I +Int 128, 32))))) _, I => I +Int 192, DATA, LEN) ... - requires I =/=Int LEN - rule #ecpairing(A, B, LEN, _, LEN) => #end EVMC_SUCCESS ... - _ => #padToWidth(32, #asByteStack(bool2Word(BN128AtePairing(A, B)))) - - syntax InternalOp ::= "#checkPoint" - // ----------------------------------- - rule (#checkPoint => .K) ~> #ecpairing(ListItem(AK::G1Point) _, ListItem(BK::G2Point) _, _, _, _) ... - requires isValidPoint(AK) andBool isValidPoint(BK) - rule #checkPoint ~> #ecpairing(ListItem(AK::G1Point) _, ListItem(BK::G2Point) _, _, _, _) => #end EVMC_PRECOMPILE_FAILURE ... - requires notBool isValidPoint(AK) orBool notBool isValidPoint(BK) - - syntax PrecompiledOp ::= "BLAKE2F" - // ---------------------------------- - rule BLAKE2F => #end EVMC_SUCCESS ... - _ => #parseByteStack( Blake2Compress( DATA ) ) - DATA - requires lengthBytes( DATA ) ==Int 213 - andBool DATA[212] <=Int 1 - - rule BLAKE2F => #end EVMC_PRECOMPILE_FAILURE ... - DATA - requires lengthBytes( DATA ) ==Int 213 - andBool DATA[212] >Int 1 - - rule BLAKE2F => #end EVMC_PRECOMPILE_FAILURE ... - DATA - requires lengthBytes( DATA ) =/=Int 213 -``` - - -Ethereum Gas Calculation -======================== - -Overall Gas ------------ - -- `#gas` calculates how much gas this operation costs, and takes into account the memory consumed. -- `#deductGas` is used to check that there won't be a gas underflow (throwing `EVMC_OUT_OF_GAS` if so), and deducts the gas if not. -- `#deductMemory` checks that access to memory stay within sensible bounds (and deducts the correct amount of gas for it), throwing `EVMC_INVALID_MEMORY_ACCESS` if bad access happens. - -```k - syntax InternalOp ::= "#gas" "[" OpCode "," OpCode "]" - // ------------------------------------------------------ - rule #gas [ OP , AOP ] - => #memory [ OP , AOP ] - ~> #gas [ AOP ] - ~> #access [ OP , AOP ] - ... - - true - - rule #gas [ _ , _ ] => .K ... false - - rule #gas [ OP ] => #gasExec(SCHED, OP) ~> #deductGas ... - SCHED - - rule #memory [ OP , AOP ] => #memory(AOP, MU) ~> #deductMemory ... - MU - requires #usesMemory(OP) - - rule #memory [ _ , _ ] => .K ... [owise] - - syntax InternalOp ::= "#gas" "[" OpCode "]" | "#deductGas" | "#deductMemoryGas" - | "#memory" "[" OpCode "," OpCode "]" | "#deductMemory" - // --------------------------------------------------------------------------- - rule MU':Int ~> #deductMemory => (Cmem(SCHED, MU') -Int Cmem(SCHED, MU)) ~> #deductMemoryGas ... - MU => MU' SCHED - - rule _G:Gas ~> (#deductMemoryGas => #deductGas) ... //Required for verification - rule G:Gas ~> #deductGas => #end EVMC_OUT_OF_GAS ... GAVAIL:Gas true requires GAVAIL G:Gas ~> #deductGas => .K ... GAVAIL:Gas => GAVAIL -Gas G true requires G <=Gas GAVAIL - rule _:Gas ~> #deductGas => .K ... false - - syntax Bool ::= #inStorage ( Map , Account , Int ) [klabel(#inStorage), function, total] - | #inStorageAux1 ( KItem , Int ) [klabel(#inStorageAux1), function, total] - | #inStorageAux2 ( Set , Int ) [klabel(#inStorageAux2), function, total] - // -------------------------------------------------------------------------------------------------- - rule #inStorage(TS, ACCT, KEY) => #inStorageAux1(TS[ACCT], KEY) requires ACCT in_keys(TS) - rule #inStorage(_, _, _) => false [owise] - - rule #inStorageAux1(KEYS:Set, KEY) => #inStorageAux2(KEYS, KEY) - rule #inStorageAux1(_, _) => false [owise] - - rule #inStorageAux2(KEYS, KEY) => true requires KEY in KEYS - rule #inStorageAux2(_, _) => false [owise] -``` - -Memory Consumption ------------------- - -Memory consumed is tracked to determine the appropriate amount of gas to charge for each operation. -In the YellowPaper, each opcode is defined to consume zero gas unless specified otherwise next to the semantics of the opcode (appendix H). - -- `#memory` computes the new memory size given the old size and next operator (with its arguments). -- `#memoryUsageUpdate` is the function `M` in appendix H of the YellowPaper which helps track the memory used. - -```k - syntax Int ::= #memory ( OpCode , Int ) [klabel(#memory), function, total] - // -------------------------------------------------------------------------- - rule #memory ( MLOAD INDEX , MU ) => #memoryUsageUpdate(MU, INDEX, 32) - rule #memory ( MSTORE INDEX _ , MU ) => #memoryUsageUpdate(MU, INDEX, 32) - rule #memory ( MSTORE8 INDEX _ , MU ) => #memoryUsageUpdate(MU, INDEX, 1) - - rule #memory ( SHA3 START WIDTH , MU ) => #memoryUsageUpdate(MU, START, WIDTH) - rule #memory ( LOG(_) START WIDTH , MU ) => #memoryUsageUpdate(MU, START, WIDTH) - - rule #memory ( CODECOPY START _ WIDTH , MU ) => #memoryUsageUpdate(MU, START, WIDTH) - rule #memory ( EXTCODECOPY _ START _ WIDTH , MU ) => #memoryUsageUpdate(MU, START, WIDTH) - rule #memory ( CALLDATACOPY START _ WIDTH , MU ) => #memoryUsageUpdate(MU, START, WIDTH) - rule #memory ( RETURNDATACOPY START _ WIDTH , MU ) => #memoryUsageUpdate(MU, START, WIDTH) - - rule #memory ( CREATE _ START WIDTH , MU ) => #memoryUsageUpdate(MU, START, WIDTH) - rule #memory ( CREATE2 _ START WIDTH _ , MU ) => #memoryUsageUpdate(MU, START, WIDTH) - rule #memory ( RETURN START WIDTH , MU ) => #memoryUsageUpdate(MU, START, WIDTH) - rule #memory ( REVERT START WIDTH , MU ) => #memoryUsageUpdate(MU, START, WIDTH) - - rule #memory ( _COP:CallOp _ _ _ ARGSTART ARGWIDTH RETSTART RETWIDTH , MU ) => #memoryUsageUpdate(#memoryUsageUpdate(MU, ARGSTART, ARGWIDTH), RETSTART, RETWIDTH) - rule #memory ( _CSOP:CallSixOp _ _ ARGSTART ARGWIDTH RETSTART RETWIDTH , MU ) => #memoryUsageUpdate(#memoryUsageUpdate(MU, ARGSTART, ARGWIDTH), RETSTART, RETWIDTH) - - rule #memory ( _ , MU ) => MU [owise] - - syntax Bool ::= #usesMemory ( OpCode ) [klabel(#usesMemory), function, total] - // ----------------------------------------------------------------------------- - rule #usesMemory(_:LogOp) => true - rule #usesMemory(_:CallOp) => true - rule #usesMemory(_:CallSixOp) => true - rule #usesMemory(MLOAD) => true - rule #usesMemory(MSTORE) => true - rule #usesMemory(MSTORE8) => true - rule #usesMemory(SHA3) => true - rule #usesMemory(CODECOPY) => true - rule #usesMemory(EXTCODECOPY) => true - rule #usesMemory(CALLDATACOPY) => true - rule #usesMemory(RETURNDATACOPY) => true - rule #usesMemory(CREATE) => true - rule #usesMemory(CREATE2) => true - rule #usesMemory(RETURN) => true - rule #usesMemory(REVERT) => true - rule #usesMemory(_) => false [owise] - - syntax Int ::= #memoryUsageUpdate ( Int , Int , Int ) [klabel(#memoryUsageUpdate), function, total] - // --------------------------------------------------------------------------------------------------- - rule #memoryUsageUpdate(MU, _, WIDTH) => MU requires notBool 0 maxInt(MU, (START +Int WIDTH) up/Int 32) requires 0 true requires isAddr1Op(OP) - rule #usesAccessList(OP) => true requires isAddr2Op(OP) - rule #usesAccessList(SLOAD) => true - rule #usesAccessList(SSTORE) => true - rule #usesAccessList(_) => false [owise] - - syntax InternalOp ::= "#access" "[" OpCode "," OpCode "]" - // --------------------------------------------------------- - rule #access [ OP , AOP ] => #gasAccess(SCHED, AOP) ~> #deductGas ... - SCHED - requires Ghasaccesslist << SCHED >> andBool #usesAccessList(OP) - - rule #access [ _ , _ ] => .K ... _ [owise] - - syntax InternalOp ::= #gasAccess ( Schedule, OpCode ) [klabel(#gasAccess)] - // -------------------------------------------------------------------------- - rule #gasAccess(SCHED, EXTCODESIZE ACCT) => Caddraccess(SCHED, ACCT in ACCTS) ... ACCTS - rule #gasAccess(SCHED, EXTCODECOPY ACCT _ _ _) => Caddraccess(SCHED, ACCT in ACCTS) ... ACCTS - rule #gasAccess(SCHED, EXTCODEHASH ACCT) => Caddraccess(SCHED, ACCT in ACCTS) ... ACCTS - rule #gasAccess(SCHED, BALANCE ACCT) => Caddraccess(SCHED, ACCT in ACCTS) ... ACCTS - rule #gasAccess(SCHED, SELFDESTRUCT ACCT) => #if ACCT in ACCTS #then 0 #else Gcoldaccountaccess < SCHED > #fi ... ACCTS - rule #gasAccess(_ , SLOAD INDEX ) => #accessStorage ACCT INDEX ~> 0 ... ACCT - rule #gasAccess(SCHED, SSTORE INDEX _) => #accessStorage ACCT INDEX ~> #if #inStorage(TS, ACCT, INDEX) #then 0 #else Gcoldsload < SCHED > #fi ... ACCT TS - rule #gasAccess(_ , _ ) => 0 ... [owise] - -``` - -Execution Gas -------------- - -The intrinsic gas calculation mirrors the style of the YellowPaper (appendix H). - -- `#gasExec` loads all the relevant surrounding state and uses that to compute the intrinsic execution gas of each opcode. - -```k - syntax InternalOp ::= #gasExec ( Schedule , OpCode ) [klabel(#gasExec)] - // ----------------------------------------------------------------------- - rule #gasExec(SCHED, SSTORE INDEX NEW) => Csstore(SCHED, NEW, #lookup(STORAGE, INDEX), #lookup(ORIGSTORAGE, INDEX)) ... - ACCT - GAVAIL - - ACCT - STORAGE - ORIGSTORAGE - ... - - R => R +Int Rsstore(SCHED, NEW, #lookup(STORAGE, INDEX), #lookup(ORIGSTORAGE, INDEX)) - requires notBool Ghassstorestipend << SCHED >> - orBool notBool GAVAIL <=Gas Gcallstipend < SCHED > - - rule #gasExec(SCHED, SSTORE _ _ ) => #end EVMC_OUT_OF_GAS ... - GAVAIL - requires Ghassstorestipend << SCHED >> - andBool GAVAIL <=Gas Gcallstipend < SCHED > - - rule #gasExec(SCHED, EXP _ W1) => Gexp < SCHED > ... requires W1 <=Int 0 - rule #gasExec(SCHED, EXP _ W1) => Gexp < SCHED > +Int (Gexpbyte < SCHED > *Int (1 +Int (log256Int(W1)))) ... requires 0 #gasExec(SCHED, CALLDATACOPY _ _ WIDTH) => Gverylow < SCHED > +Int (Gcopy < SCHED > *Int (WIDTH up/Int 32)) ... - rule #gasExec(SCHED, RETURNDATACOPY _ _ WIDTH) => Gverylow < SCHED > +Int (Gcopy < SCHED > *Int (WIDTH up/Int 32)) ... - rule #gasExec(SCHED, CODECOPY _ _ WIDTH) => Gverylow < SCHED > +Int (Gcopy < SCHED > *Int (WIDTH up/Int 32)) ... - - rule #gasExec(SCHED, LOG(N) _ WIDTH) => (Glog < SCHED > +Int (Glogdata < SCHED > *Int WIDTH) +Int (N *Int Glogtopic < SCHED >)) ... - - rule #gasExec(SCHED, CALL GCAP ACCTTO VALUE _ _ _ _) - => Ccallgas(SCHED, #accountNonexistent(ACCTTO), GCAP, GAVAIL, VALUE, ACCTTO in ACCTS) ~> #allocateCallGas - ~> Ccall(SCHED, #accountNonexistent(ACCTTO), GCAP, GAVAIL, VALUE, ACCTTO in ACCTS) - ... - - GAVAIL - ACCTS - - rule #gasExec(SCHED, CALLCODE GCAP ACCTTO VALUE _ _ _ _) - => Ccallgas(SCHED, #accountNonexistent(ACCTFROM), GCAP, GAVAIL, VALUE, ACCTTO in ACCTS) ~> #allocateCallGas - ~> Ccall(SCHED, #accountNonexistent(ACCTFROM), GCAP, GAVAIL, VALUE, ACCTTO in ACCTS) - ... - - ACCTFROM - GAVAIL - ACCTS - - rule #gasExec(SCHED, DELEGATECALL GCAP ACCTTO _ _ _ _) - => Ccallgas(SCHED, #accountNonexistent(ACCTFROM), GCAP, GAVAIL, 0, ACCTTO in ACCTS) ~> #allocateCallGas - ~> Ccall(SCHED, #accountNonexistent(ACCTFROM), GCAP, GAVAIL, 0, ACCTTO in ACCTS) - ... - - ACCTFROM - GAVAIL - ACCTS - - rule #gasExec(SCHED, STATICCALL GCAP ACCTTO _ _ _ _) - => Ccallgas(SCHED, #accountNonexistent(ACCTTO), GCAP, GAVAIL, 0, ACCTTO in ACCTS) ~> #allocateCallGas - ~> Ccall(SCHED, #accountNonexistent(ACCTTO), GCAP, GAVAIL, 0, ACCTTO in ACCTS) - ... - - GAVAIL - ACCTS - - rule #gasExec(SCHED, SELFDESTRUCT ACCTTO) => Cselfdestruct(SCHED, #accountNonexistent(ACCTTO), BAL) ... - ACCTFROM - SDS - RF => #if ACCTFROM in SDS #then RF #else RF +Word Rselfdestruct < SCHED > #fi - - ACCTFROM - BAL - ... - - - rule #gasExec(SCHED, CREATE _ _ WIDTH) - => Gcreate < SCHED > +Int Cinitcode(SCHED, WIDTH) ~> #deductGas - ~> #allocateCreateGas ~> 0 - ... - - - rule #gasExec(SCHED, CREATE2 _ _ WIDTH _) - => Gcreate < SCHED > +Int Gsha3word < SCHED > *Int (WIDTH up/Int 32) +Int Cinitcode(SCHED, WIDTH) ~> #deductGas - ~> #allocateCreateGas ~> 0 - ... - - - rule #gasExec(SCHED, SHA3 _ WIDTH) => Gsha3 < SCHED > +Int (Gsha3word < SCHED > *Int (WIDTH up/Int 32)) ... - - rule #gasExec(SCHED, JUMPDEST) => Gjumpdest < SCHED > ... - rule #gasExec(SCHED, SLOAD INDEX) => Csload(SCHED, #inStorage(TS, ACCT, INDEX)) ... - ACCT - TS - - // Wzero - rule #gasExec(SCHED, STOP) => Gzero < SCHED > ... - rule #gasExec(SCHED, RETURN _ _) => Gzero < SCHED > ... - rule #gasExec(SCHED, REVERT _ _) => Gzero < SCHED > ... - - // Wbase - rule #gasExec(SCHED, ADDRESS) => Gbase < SCHED > ... - rule #gasExec(SCHED, ORIGIN) => Gbase < SCHED > ... - rule #gasExec(SCHED, CALLER) => Gbase < SCHED > ... - rule #gasExec(SCHED, CALLVALUE) => Gbase < SCHED > ... - rule #gasExec(SCHED, CALLDATASIZE) => Gbase < SCHED > ... - rule #gasExec(SCHED, RETURNDATASIZE) => Gbase < SCHED > ... - rule #gasExec(SCHED, CODESIZE) => Gbase < SCHED > ... - rule #gasExec(SCHED, GASPRICE) => Gbase < SCHED > ... - rule #gasExec(SCHED, COINBASE) => Gbase < SCHED > ... - rule #gasExec(SCHED, TIMESTAMP) => Gbase < SCHED > ... - rule #gasExec(SCHED, NUMBER) => Gbase < SCHED > ... - rule #gasExec(SCHED, DIFFICULTY) => Gbase < SCHED > ... - rule #gasExec(SCHED, PREVRANDAO) => Gbase < SCHED > ... - rule #gasExec(SCHED, GASLIMIT) => Gbase < SCHED > ... - rule #gasExec(SCHED, BASEFEE) => Gbase < SCHED > ... - rule #gasExec(SCHED, POP _) => Gbase < SCHED > ... - rule #gasExec(SCHED, PC) => Gbase < SCHED > ... - rule #gasExec(SCHED, PUSHZERO) => Gbase < SCHED > ... - rule #gasExec(SCHED, MSIZE) => Gbase < SCHED > ... - rule #gasExec(SCHED, GAS) => Gbase < SCHED > ... - rule #gasExec(SCHED, CHAINID) => Gbase < SCHED > ... - - // Wverylow - rule #gasExec(SCHED, ADD _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, SUB _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, NOT _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, LT _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, GT _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, SLT _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, SGT _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, EQ _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, ISZERO _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, AND _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, EVMOR _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, XOR _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, BYTE _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, SHL _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, SHR _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, SAR _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, CALLDATALOAD _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, MLOAD _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, MSTORE _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, MSTORE8 _ _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, PUSH(_)) => Gverylow < SCHED > ... - rule #gasExec(SCHED, DUP(_) _) => Gverylow < SCHED > ... - rule #gasExec(SCHED, SWAP(_) _) => Gverylow < SCHED > ... - - // Wlow - rule #gasExec(SCHED, MUL _ _) => Glow < SCHED > ... - rule #gasExec(SCHED, DIV _ _) => Glow < SCHED > ... - rule #gasExec(SCHED, SDIV _ _) => Glow < SCHED > ... - rule #gasExec(SCHED, MOD _ _) => Glow < SCHED > ... - rule #gasExec(SCHED, SMOD _ _) => Glow < SCHED > ... - rule #gasExec(SCHED, SIGNEXTEND _ _) => Glow < SCHED > ... - rule #gasExec(SCHED, SELFBALANCE) => Glow < SCHED > ... - - // Wmid - rule #gasExec(SCHED, ADDMOD _ _ _) => Gmid < SCHED > ... - rule #gasExec(SCHED, MULMOD _ _ _) => Gmid < SCHED > ... - rule #gasExec(SCHED, JUMP _) => Gmid < SCHED > ... - - // Whigh - rule #gasExec(SCHED, JUMPI _ _) => Ghigh < SCHED > ... - - rule #gasExec(SCHED, EXTCODECOPY _ _ _ WIDTH) => Cextcodecopy(SCHED, WIDTH) ... - rule #gasExec(SCHED, EXTCODESIZE _) => Cextcodesize(SCHED) ... - rule #gasExec(SCHED, BALANCE _) => Cbalance(SCHED) ... - rule #gasExec(SCHED, EXTCODEHASH _) => Cextcodehash(SCHED) ... - rule #gasExec(SCHED, BLOCKHASH _) => Gblockhash < SCHED > ... - - // Precompiled - rule #gasExec(_, ECREC) => 3000 ... - rule #gasExec(_, SHA256) => 60 +Int 12 *Int (lengthBytes(DATA) up/Int 32) ... DATA - rule #gasExec(_, RIP160) => 600 +Int 120 *Int (lengthBytes(DATA) up/Int 32) ... DATA - rule #gasExec(_, ID) => 15 +Int 3 *Int (lengthBytes(DATA) up/Int 32) ... DATA - - rule #gasExec(SCHED, MODEXP) => Cmodexp(SCHED, DATA, #asWord(#range(DATA, 0, 32) ), #asWord(#range(DATA, 32, 32)), #asWord(#range(DATA, 64, 32))) ... - DATA - - rule #gasExec(SCHED, ECADD) => Gecadd < SCHED> ... - rule #gasExec(SCHED, ECMUL) => Gecmul < SCHED > ... - rule #gasExec(SCHED, ECPAIRING) => Gecpairconst < SCHED > +Int (lengthBytes(DATA) /Int 192) *Int Gecpaircoeff < SCHED > ... DATA - rule #gasExec(SCHED, BLAKE2F) => Gfround < SCHED > *Int #asWord(#range(DATA, 0, 4) ) ... DATA - - syntax InternalOp ::= "#allocateCallGas" - // ---------------------------------------- - rule GCALL:Gas ~> #allocateCallGas => .K ... - _ => GCALL - - syntax InternalOp ::= "#allocateCreateGas" - // ------------------------------------------ - rule SCHED - #allocateCreateGas => .K ... - GAVAIL => #if Gstaticcalldepth << SCHED >> #then 0 #else GAVAIL /Gas 64 #fi - _ => #if Gstaticcalldepth << SCHED >> #then GAVAIL #else #allBut64th(GAVAIL) #fi - [preserves-definedness] -``` - -There are several helpers for calculating gas (most of them also specified in the YellowPaper). - -```k - syntax Exp ::= Int | Gas - syntax KResult ::= Int - syntax Exp ::= Ccall ( Schedule , BExp , Gas , Gas , Int , Bool ) [klabel(Ccall), strict(2)] - | Ccallgas ( Schedule , BExp , Gas , Gas , Int , Bool ) [klabel(Ccallgas), strict(2)] - | Cselfdestruct ( Schedule , BExp , Int ) [klabel(Cselfdestruct), strict(2)] - // ------------------------------------------------------------------------------------------------------------ - rule Ccall(SCHED, ISEMPTY:Bool, GCAP, GAVAIL, VALUE, ISWARM) - => Cextra(SCHED, ISEMPTY, VALUE, ISWARM) +Gas Cgascap(SCHED, GCAP, GAVAIL, Cextra(SCHED, ISEMPTY, VALUE, ISWARM)) ... - - rule Ccallgas(SCHED, ISEMPTY:Bool, GCAP, GAVAIL, VALUE, ISWARM) - => Cgascap(SCHED, GCAP, GAVAIL, Cextra(SCHED, ISEMPTY, VALUE, ISWARM)) +Gas #if VALUE ==Int 0 #then 0 #else Gcallstipend < SCHED > #fi ... - - rule Cselfdestruct(SCHED, ISEMPTY:Bool, BAL) - => Gselfdestruct < SCHED > +Int Cnew(SCHED, ISEMPTY andBool Gselfdestructnewaccount << SCHED >>, BAL) ... - - syntax BExp ::= Bool - syntax KResult ::= Bool - syntax BExp ::= #accountNonexistent ( Int ) [klabel(#accountNonexistent)] - // ------------------------------------------------------------------------- - rule #accountNonexistent(ACCT) => #accountEmpty(CODE, NONCE, BAL) andBool Gemptyisnonexistent << SCHED >> ... - SCHED - - ACCT - BAL - NONCE - CODE - ... - - - rule #accountNonexistent(_) => true ... [owise] -``` - -EVM Program Representations -=========================== - -EVM programs are represented algebraically in K, but programs can load and manipulate program data directly. -The opcodes `CODECOPY` and `EXTCODECOPY` rely on the assembled form of the programs being present. -The opcode `CREATE` relies on being able to interperet EVM data as a program. - -This is a program representation dependence, which we might want to avoid. -Perhaps the only program representation dependence we should have is the hash of the program; doing so achieves: - -- Program representation independence (different analysis tools on the language don't have to ensure they have a common representation of programs, just a common interperetation of the data-files holding programs). -- Programming language independence (we wouldn't even have to commit to a particular language or interperetation of the data-file). -- Only depending on the hash allows us to know that we have *exactly* the correct data-file (program), and nothing more. - -Disassembler ------------- - -After interpreting the strings representing programs as a `WordStack`, it should be changed into an `OpCodes` for use by the EVM semantics. - -- `#dasmOpCode` interperets a `Int` as an `OpCode`. - -```k - syntax OpCode ::= #dasmOpCode ( Int , Schedule ) [klabel(#dasmOpCode), function, memo, total] - // --------------------------------------------------------------------------------------------- - rule #dasmOpCode( 0, _ ) => STOP - rule #dasmOpCode( 1, _ ) => ADD - rule #dasmOpCode( 2, _ ) => MUL - rule #dasmOpCode( 3, _ ) => SUB - rule #dasmOpCode( 4, _ ) => DIV - rule #dasmOpCode( 5, _ ) => SDIV - rule #dasmOpCode( 6, _ ) => MOD - rule #dasmOpCode( 7, _ ) => SMOD - rule #dasmOpCode( 8, _ ) => ADDMOD - rule #dasmOpCode( 9, _ ) => MULMOD - rule #dasmOpCode( 10, _ ) => EXP - rule #dasmOpCode( 11, _ ) => SIGNEXTEND - rule #dasmOpCode( 16, _ ) => LT - rule #dasmOpCode( 17, _ ) => GT - rule #dasmOpCode( 18, _ ) => SLT - rule #dasmOpCode( 19, _ ) => SGT - rule #dasmOpCode( 20, _ ) => EQ - rule #dasmOpCode( 21, _ ) => ISZERO - rule #dasmOpCode( 22, _ ) => AND - rule #dasmOpCode( 23, _ ) => EVMOR - rule #dasmOpCode( 24, _ ) => XOR - rule #dasmOpCode( 25, _ ) => NOT - rule #dasmOpCode( 26, _ ) => BYTE - rule #dasmOpCode( 27, SCHED ) => SHL requires Ghasshift << SCHED >> - rule #dasmOpCode( 28, SCHED ) => SHR requires Ghasshift << SCHED >> - rule #dasmOpCode( 29, SCHED ) => SAR requires Ghasshift << SCHED >> - rule #dasmOpCode( 32, _ ) => SHA3 - rule #dasmOpCode( 48, _ ) => ADDRESS - rule #dasmOpCode( 49, _ ) => BALANCE - rule #dasmOpCode( 50, _ ) => ORIGIN - rule #dasmOpCode( 51, _ ) => CALLER - rule #dasmOpCode( 52, _ ) => CALLVALUE - rule #dasmOpCode( 53, _ ) => CALLDATALOAD - rule #dasmOpCode( 54, _ ) => CALLDATASIZE - rule #dasmOpCode( 55, _ ) => CALLDATACOPY - rule #dasmOpCode( 56, _ ) => CODESIZE - rule #dasmOpCode( 57, _ ) => CODECOPY - rule #dasmOpCode( 58, _ ) => GASPRICE - rule #dasmOpCode( 59, _ ) => EXTCODESIZE - rule #dasmOpCode( 60, _ ) => EXTCODECOPY - rule #dasmOpCode( 61, SCHED ) => RETURNDATASIZE requires Ghasreturndata << SCHED >> - rule #dasmOpCode( 62, SCHED ) => RETURNDATACOPY requires Ghasreturndata << SCHED >> - rule #dasmOpCode( 63, SCHED ) => EXTCODEHASH requires Ghasextcodehash << SCHED >> - rule #dasmOpCode( 64, _ ) => BLOCKHASH - rule #dasmOpCode( 65, _ ) => COINBASE - rule #dasmOpCode( 66, _ ) => TIMESTAMP - rule #dasmOpCode( 67, _ ) => NUMBER - rule #dasmOpCode( 68, SCHED ) => PREVRANDAO requires Ghasprevrandao << SCHED >> - rule #dasmOpCode( 68, SCHED ) => DIFFICULTY requires notBool Ghasprevrandao << SCHED >> - rule #dasmOpCode( 69, _ ) => GASLIMIT - rule #dasmOpCode( 70, SCHED ) => CHAINID requires Ghaschainid << SCHED >> - rule #dasmOpCode( 71, SCHED ) => SELFBALANCE requires Ghasselfbalance << SCHED >> - rule #dasmOpCode( 72, SCHED ) => BASEFEE requires Ghasbasefee << SCHED >> - rule #dasmOpCode( 80, _ ) => POP - rule #dasmOpCode( 81, _ ) => MLOAD - rule #dasmOpCode( 82, _ ) => MSTORE - rule #dasmOpCode( 83, _ ) => MSTORE8 - rule #dasmOpCode( 84, _ ) => SLOAD - rule #dasmOpCode( 85, _ ) => SSTORE - rule #dasmOpCode( 86, _ ) => JUMP - rule #dasmOpCode( 87, _ ) => JUMPI - rule #dasmOpCode( 88, _ ) => PC - rule #dasmOpCode( 89, _ ) => MSIZE - rule #dasmOpCode( 90, _ ) => GAS - rule #dasmOpCode( 91, _ ) => JUMPDEST - rule #dasmOpCode( 95, SCHED ) => PUSHZERO requires Ghaspushzero << SCHED >> - rule #dasmOpCode( 96, _ ) => PUSH(1) - rule #dasmOpCode( 97, _ ) => PUSH(2) - rule #dasmOpCode( 98, _ ) => PUSH(3) - rule #dasmOpCode( 99, _ ) => PUSH(4) - rule #dasmOpCode( 100, _ ) => PUSH(5) - rule #dasmOpCode( 101, _ ) => PUSH(6) - rule #dasmOpCode( 102, _ ) => PUSH(7) - rule #dasmOpCode( 103, _ ) => PUSH(8) - rule #dasmOpCode( 104, _ ) => PUSH(9) - rule #dasmOpCode( 105, _ ) => PUSH(10) - rule #dasmOpCode( 106, _ ) => PUSH(11) - rule #dasmOpCode( 107, _ ) => PUSH(12) - rule #dasmOpCode( 108, _ ) => PUSH(13) - rule #dasmOpCode( 109, _ ) => PUSH(14) - rule #dasmOpCode( 110, _ ) => PUSH(15) - rule #dasmOpCode( 111, _ ) => PUSH(16) - rule #dasmOpCode( 112, _ ) => PUSH(17) - rule #dasmOpCode( 113, _ ) => PUSH(18) - rule #dasmOpCode( 114, _ ) => PUSH(19) - rule #dasmOpCode( 115, _ ) => PUSH(20) - rule #dasmOpCode( 116, _ ) => PUSH(21) - rule #dasmOpCode( 117, _ ) => PUSH(22) - rule #dasmOpCode( 118, _ ) => PUSH(23) - rule #dasmOpCode( 119, _ ) => PUSH(24) - rule #dasmOpCode( 120, _ ) => PUSH(25) - rule #dasmOpCode( 121, _ ) => PUSH(26) - rule #dasmOpCode( 122, _ ) => PUSH(27) - rule #dasmOpCode( 123, _ ) => PUSH(28) - rule #dasmOpCode( 124, _ ) => PUSH(29) - rule #dasmOpCode( 125, _ ) => PUSH(30) - rule #dasmOpCode( 126, _ ) => PUSH(31) - rule #dasmOpCode( 127, _ ) => PUSH(32) - rule #dasmOpCode( 128, _ ) => DUP(1) - rule #dasmOpCode( 129, _ ) => DUP(2) - rule #dasmOpCode( 130, _ ) => DUP(3) - rule #dasmOpCode( 131, _ ) => DUP(4) - rule #dasmOpCode( 132, _ ) => DUP(5) - rule #dasmOpCode( 133, _ ) => DUP(6) - rule #dasmOpCode( 134, _ ) => DUP(7) - rule #dasmOpCode( 135, _ ) => DUP(8) - rule #dasmOpCode( 136, _ ) => DUP(9) - rule #dasmOpCode( 137, _ ) => DUP(10) - rule #dasmOpCode( 138, _ ) => DUP(11) - rule #dasmOpCode( 139, _ ) => DUP(12) - rule #dasmOpCode( 140, _ ) => DUP(13) - rule #dasmOpCode( 141, _ ) => DUP(14) - rule #dasmOpCode( 142, _ ) => DUP(15) - rule #dasmOpCode( 143, _ ) => DUP(16) - rule #dasmOpCode( 144, _ ) => SWAP(1) - rule #dasmOpCode( 145, _ ) => SWAP(2) - rule #dasmOpCode( 146, _ ) => SWAP(3) - rule #dasmOpCode( 147, _ ) => SWAP(4) - rule #dasmOpCode( 148, _ ) => SWAP(5) - rule #dasmOpCode( 149, _ ) => SWAP(6) - rule #dasmOpCode( 150, _ ) => SWAP(7) - rule #dasmOpCode( 151, _ ) => SWAP(8) - rule #dasmOpCode( 152, _ ) => SWAP(9) - rule #dasmOpCode( 153, _ ) => SWAP(10) - rule #dasmOpCode( 154, _ ) => SWAP(11) - rule #dasmOpCode( 155, _ ) => SWAP(12) - rule #dasmOpCode( 156, _ ) => SWAP(13) - rule #dasmOpCode( 157, _ ) => SWAP(14) - rule #dasmOpCode( 158, _ ) => SWAP(15) - rule #dasmOpCode( 159, _ ) => SWAP(16) - rule #dasmOpCode( 160, _ ) => LOG(0) - rule #dasmOpCode( 161, _ ) => LOG(1) - rule #dasmOpCode( 162, _ ) => LOG(2) - rule #dasmOpCode( 163, _ ) => LOG(3) - rule #dasmOpCode( 164, _ ) => LOG(4) - rule #dasmOpCode( 240, _ ) => CREATE - rule #dasmOpCode( 241, _ ) => CALL - rule #dasmOpCode( 242, _ ) => CALLCODE - rule #dasmOpCode( 243, _ ) => RETURN - rule #dasmOpCode( 244, SCHED ) => DELEGATECALL requires SCHED =/=K FRONTIER - rule #dasmOpCode( 245, SCHED ) => CREATE2 requires Ghascreate2 << SCHED >> - rule #dasmOpCode( 250, SCHED ) => STATICCALL requires Ghasstaticcall << SCHED >> - rule #dasmOpCode( 253, SCHED ) => REVERT requires Ghasrevert << SCHED >> - rule #dasmOpCode( 254, _ ) => INVALID - rule #dasmOpCode( 255, _ ) => SELFDESTRUCT - rule #dasmOpCode( W, _ ) => UNDEFINED(W) [owise] -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm/index.html new file mode 100644 index 0000000000..b795017f73 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm/index.html @@ -0,0 +1,2771 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

EVM Execution

+

Overview

+

The EVM is a stack machine over some simple opcodes. +Most of the opcodes are "local" to the execution state of the machine, but some of them must interact with the world state. +This file only defines the local execution operations, the file driver.md will define the interactions with the world state.

+
requires "data.md"
+requires "network.md"
+requires "gas.md"
+
+module EVM
+    imports STRING
+    imports EVM-DATA
+    imports NETWORK
+    imports GAS
+
+

Configuration

+

The configuration has cells for the current account id, the current opcode, the program counter, the current gas, the gas price, the current program, the word stack, and the local memory. +In addition, there are cells for the callstack and execution substate.

+

We've broken up the configuration into two components; those parts of the state that mutate during execution of a single transaction and those that are static throughout. +In the comments next to each cell, we've marked which component of the YellowPaper state corresponds to each cell.

+
    configuration
+      <kevm>
+        <k> $PGM:EthereumSimulation </k>
+        <exit-code exit=""> 1 </exit-code>
+        <mode> $MODE:Mode </mode>
+        <schedule> $SCHEDULE:Schedule </schedule>
+        <useGas> $USEGAS:Bool </useGas>
+
+        <ethereum>
+
+          // EVM Specific
+          // ============
+
+          <evm>
+
+            // Mutable during a single transaction
+            // -----------------------------------
+
+            <output>          .Bytes      </output>           // H_RETURN
+            <statusCode>      .StatusCode </statusCode>
+            <callStack>       .List       </callStack>
+            <interimStates>   .List       </interimStates>
+            <touchedAccounts> .Set        </touchedAccounts>
+
+            <callState>
+              <program>   .Bytes </program>
+              <jumpDests> .Set   </jumpDests>
+
+              // I_*
+              <id>        .Account </id>                    // I_a
+              <caller>    .Account </caller>                // I_s
+              <callData>  .Bytes   </callData>              // I_d
+              <callValue> 0        </callValue>             // I_v
+
+              // \mu_*
+              <wordStack>   .WordStack </wordStack>           // \mu_s
+              <localMem>    .Bytes     </localMem>            // \mu_m
+              <pc>          0          </pc>                  // \mu_pc
+              <gas>         0:Gas      </gas>                 // \mau_g
+              <memoryUsed>  0          </memoryUsed>          // \mu_i
+              <callGas>     0:Gas      </callGas>
+
+              <static>    false </static>
+              <callDepth> 0     </callDepth>
+            </callState>
+
+            // A_* (execution substate)
+            <substate>
+              <selfDestruct>     .Set  </selfDestruct>            // A_s
+              <log>              .List </log>                     // A_l
+              <refund>           0     </refund>                  // A_r
+              <accessedAccounts> .Set  </accessedAccounts>
+              <accessedStorage>  .Map  </accessedStorage>
+            </substate>
+
+            // Immutable during a single transaction
+            // -------------------------------------
+
+            <gasPrice> 0        </gasPrice>                   // I_p
+            <origin>   .Account </origin>                     // I_o
+
+            // I_H* (block information)
+            <blockhashes> .List </blockhashes>
+            <block>
+              <previousHash>     0      </previousHash>     // I_Hp
+              <ommersHash>       0      </ommersHash>       // I_Ho
+              <coinbase>         0      </coinbase>         // I_Hc
+              <stateRoot>        0      </stateRoot>        // I_Hr
+              <transactionsRoot> 0      </transactionsRoot> // I_Ht
+              <receiptsRoot>     0      </receiptsRoot>     // I_He
+              <logsBloom>        .Bytes </logsBloom>        // I_Hb
+              <difficulty>       0      </difficulty>       // I_Hd
+              <number>           0      </number>           // I_Hi
+              <gasLimit>         0      </gasLimit>         // I_Hl
+              <gasUsed>          0:Gas  </gasUsed>          // I_Hg
+              <timestamp>        0      </timestamp>        // I_Hs
+              <extraData>        .Bytes </extraData>        // I_Hx
+              <mixHash>          0      </mixHash>          // I_Hm
+              <blockNonce>       0      </blockNonce>       // I_Hn
+              <baseFee>          0      </baseFee>
+              <withdrawalsRoot>  0      </withdrawalsRoot>
+
+              <ommerBlockHeaders> [ .JSONs ] </ommerBlockHeaders>
+            </block>
+
+          </evm>
+
+          // Ethereum Network
+          // ================
+
+          <network>
+
+            // Chain identifier
+            // ----------------
+            <chainID> $CHAINID:Int </chainID>
+
+            // Accounts Record
+            // ---------------
+
+            <accounts>
+              <account multiplicity="*" type="Map">
+                <acctID>      0                  </acctID>
+                <balance>     0                  </balance>
+                <code>        .Bytes:AccountCode </code>
+                <storage>     .Map               </storage>
+                <origStorage> .Map               </origStorage>
+                <nonce>       0                  </nonce>
+              </account>
+            </accounts>
+
+            // Transactions Record
+            // -------------------
+
+            <txOrder>   .List </txOrder>
+            <txPending> .List </txPending>
+
+            <messages>
+              <message multiplicity="*" type="Map">
+                <msgID>         0          </msgID>
+                <txNonce>       0          </txNonce>       // T_n
+                <txGasPrice>    0          </txGasPrice>    // T_p
+                <txGasLimit>    0          </txGasLimit>    // T_g
+                <to>            .Account   </to>            // T_t
+                <value>         0          </value>         // T_v
+                <sigV>          0          </sigV>          // T_w
+                <sigR>          .Bytes     </sigR>          // T_r
+                <sigS>          .Bytes     </sigS>          // T_s
+                <data>          .Bytes     </data>          // T_i/T_e
+                <txAccess>      [ .JSONs ] </txAccess>      // T_a
+                <txChainID>     0          </txChainID>     // T_c
+                <txPriorityFee> 0          </txPriorityFee>
+                <txMaxFee>      0          </txMaxFee>
+                <txType>        .TxType    </txType>
+              </message>
+            </messages>
+
+          </network>
+
+        </ethereum>
+      </kevm>
+
+    syntax EthereumSimulation
+ // -------------------------
+
+ +

Our semantics is modal, with the initial mode being set on the command line via -cMODE=EXECMODE.

+
    +
  • NORMAL executes as a client on the network would.
  • +
  • VMTESTS skips CALL* and CREATE operations.
  • +
+
    syntax Mode ::= "NORMAL"  [klabel(NORMAL), symbol]
+                  | "VMTESTS" [klabel(VMTESTS), symbol]
+ // ---------------------------------------------------
+
+

State Stacks

+

The CallStack

+

The callStack cell stores a list of previous VM execution states.

+
    +
  • #pushCallStack saves a copy of VM execution state on the callStack.
  • +
  • #popCallStack restores the top element of the callStack.
  • +
  • #dropCallStack removes the top element of the callStack.
  • +
+
    syntax InternalOp ::= "#pushCallStack"
+ // --------------------------------------
+    rule <k> #pushCallStack => .K ... </k>
+         <callStack> STACK => ListItem(<callState> CALLSTATE </callState>) STACK </callStack>
+         <callState> CALLSTATE </callState>
+
+    syntax InternalOp ::= "#popCallStack"
+ // -------------------------------------
+    rule <k> #popCallStack => .K ... </k>
+         <callStack> ListItem(<callState> CALLSTATE </callState>) REST => REST </callStack>
+         <callState> _ => CALLSTATE </callState>
+
+    syntax InternalOp ::= "#dropCallStack"
+ // --------------------------------------
+    rule <k> #dropCallStack => .K ... </k>
+         <callStack> ListItem(_) REST => REST </callStack>
+
+

The StateStack

+

The interimStates cell stores a list of previous world states.

+
    +
  • #pushWorldState stores a copy of the current accounts and the substate at the top of the interimStates cell.
  • +
  • #popWorldState restores the top element of the interimStates.
  • +
  • #dropWorldState removes the top element of the interimStates.
  • +
+
    syntax Accounts ::= "{" AccountsCell "|" SubstateCell "}"
+ // ---------------------------------------------------------
+
+    syntax InternalOp ::= "#pushWorldState"
+ // ---------------------------------------
+    rule <k> #pushWorldState => .K ... </k>
+         <interimStates> STATES => ListItem({ <accounts> ACCTDATA </accounts> | <substate> SUBSTATE </substate> }) STATES </interimStates>
+         <accounts> ACCTDATA </accounts>
+         <substate> SUBSTATE </substate>
+
+    syntax InternalOp ::= "#popWorldState"
+ // --------------------------------------
+    rule <k> #popWorldState => .K ... </k>
+         <interimStates> ListItem({ <accounts> ACCTDATA </accounts> | <substate> SUBSTATE </substate> }) REST => REST </interimStates>
+         <accounts> _ => ACCTDATA </accounts>
+         <substate> _ => SUBSTATE </substate>
+
+    syntax InternalOp ::= "#dropWorldState"
+ // ---------------------------------------
+    rule <k> #dropWorldState => .K ... </k> <interimStates> ListItem(_) REST => REST </interimStates>
+
+

Control Flow

+

Exception Based

+
    +
  • #halt indicates end of execution. +It will consume anything related to the current computation behind it on the <k> cell.
  • +
  • #end_ sets the statusCode and the program counter of the last executed opcode, then halts execution.
  • +
+
    syntax KItem ::= "#halt" | "#end" StatusCode
+ // --------------------------------------------
+    rule [end]:
+         <k> #end SC => #halt ... </k>
+         <statusCode> _ => SC </statusCode>
+
+    rule <k> #halt ~> (_:Int    => .K) ... </k>
+    rule <k> #halt ~> (_:OpCode => .K) ... </k>
+
+

OpCode Execution

+

Execution Macros

+
    +
  • #lookupOpCode reads an OpCode from the program Bytes if the program-counter is within the bounds of the program, meaning that it points to an actual opcode. +It will return .NoOpCode otherwise.
  • +
+
    syntax MaybeOpCode ::= ".NoOpCode" | OpCode
+
+    syntax MaybeOpCode ::= "#lookupOpCode" "(" Bytes "," Int "," Schedule ")" [function, total]
+ // -------------------------------------------------------------------------------------------
+    rule #lookupOpCode(BA, I, SCHED) => #dasmOpCode(BA[I], SCHED) requires 0 <=Int I andBool I <Int lengthBytes(BA)
+    rule #lookupOpCode(_, _, _)  => .NoOpCode [owise]
+
+
    +
  • #execute loads the next opcode.
  • +
+
    syntax KItem ::= "#execute"
+ // ---------------------------
+    rule [halt]:
+         <k> #halt ~> (#execute => .K) ... </k>
+
+    rule [step]:
+         <k> (.K => #next [ #lookupOpCode(PGM, PCOUNT, SCHED) ]) ~> #execute ... </k>
+         <program> PGM </program>
+         <pc> PCOUNT </pc>
+         <schedule> SCHED </schedule>
+
+

Single Step

+

If the program-counter points to an actual opcode, it's loaded into the #next [_] operator. +If .NoOpCode is loaded into #next [_], then it means that there is no next opcode and the execution will halt with an EVMC_SUCCESS status code. +The #next [_] operator initiates execution by:

+
    +
  1. checking if there will be a stack over/underflow, or a static mode violation,
  2. +
  3. calculate any address conversions needed for items on the wordstack,
  4. +
  5. executing the opcode (which includes any gas deduction needed), and
  6. +
  7. adjusting the program counter.
  8. +
+
    syntax InternalOp ::= "#next" "[" MaybeOpCode "]"
+ // -------------------------------------------------
+    rule <k> #next [ .NoOpCode ] => #end EVMC_SUCCESS ... </k>
+         <output> _ => .Bytes </output>
+
+    rule <k> #next [ OP:OpCode ]
+          => #addr [ OP ]
+          ~> #exec [ OP ]
+          ~> #pc   [ OP ]
+         ...
+         </k>
+         <wordStack> WS </wordStack>
+         <static> STATIC:Bool </static>
+      requires notBool ( #stackUnderflow(WS, OP) orBool #stackOverflow(WS, OP) )
+       andBool notBool ( STATIC andBool #changesState(OP, WS) )
+
+    rule <k> #next [ OP ] => #end EVMC_STACK_UNDERFLOW ... </k>
+         <wordStack> WS </wordStack>
+      requires #stackUnderflow(WS, OP)
+
+    rule <k> #next [ OP ] => #end EVMC_STACK_OVERFLOW ... </k>
+         <wordStack> WS </wordStack>
+      requires #stackOverflow(WS, OP)
+
+    rule <k> #next [ OP ] => #end EVMC_STATIC_MODE_VIOLATION ... </k>
+         <wordStack> WS </wordStack>
+         <static> STATIC:Bool </static>
+      requires STATIC andBool #changesState(OP, WS)
+       andBool notBool ( #stackUnderflow(WS, OP) orBool #stackOverflow(WS, OP) )
+
+

Exceptional Checks

+
    +
  • #stackNeeded is how many arguments that opcode will need off the top of the stack.
  • +
  • #stackAdded is how many arguments that opcode will push onto the top of the stack.
  • +
  • #stackDelta is the delta the stack will have after the opcode executes.
  • +
+
    syntax Bool ::= #stackUnderflow ( WordStack , OpCode ) [klabel(#stackUnderflow), macro]
+                  | #stackOverflow  ( WordStack , OpCode ) [klabel(#stackOverflow), macro]
+ // ---------------------------------------------------------------------------------------
+    rule #stackUnderflow(WS, OP:OpCode) => #sizeWordStack(WS) <Int #stackNeeded(OP)
+    rule #stackOverflow (WS, OP) => #sizeWordStack(WS) +Int #stackDelta(OP) >Int 1024
+
+    syntax Int ::= #stackNeeded ( OpCode ) [klabel(#stackNeeded), function]
+ // -----------------------------------------------------------------------
+    rule #stackNeeded(_POP:PushOp)      => 0
+    rule #stackNeeded(_IOP:InvalidOp)   => 0
+    rule #stackNeeded(_NOP:NullStackOp) => 0
+    rule #stackNeeded(_UOP:UnStackOp)   => 1
+    rule #stackNeeded(BOP:BinStackOp)   => 2 requires notBool isLogOp(BOP)
+    rule #stackNeeded(_TOP:TernStackOp) => 3
+    rule #stackNeeded(_QOP:QuadStackOp) => 4
+    rule #stackNeeded(DUP(N))           => N
+    rule #stackNeeded(SWAP(N))          => N +Int 1
+    rule #stackNeeded(LOG(N))           => N +Int 2
+    rule #stackNeeded(_CSOP:CallSixOp)  => 6
+    rule #stackNeeded(COP:CallOp)       => 7 requires notBool isCallSixOp(COP)
+
+    syntax Int ::= #stackAdded ( OpCode ) [klabel(#stackAdded), function]
+ // ---------------------------------------------------------------------
+    rule #stackAdded(CALLDATACOPY)   => 0
+    rule #stackAdded(RETURNDATACOPY) => 0
+    rule #stackAdded(CODECOPY)       => 0
+    rule #stackAdded(EXTCODECOPY)    => 0
+    rule #stackAdded(POP)            => 0
+    rule #stackAdded(MSTORE)         => 0
+    rule #stackAdded(MSTORE8)        => 0
+    rule #stackAdded(SSTORE)         => 0
+    rule #stackAdded(JUMP)           => 0
+    rule #stackAdded(JUMPI)          => 0
+    rule #stackAdded(JUMPDEST)       => 0
+    rule #stackAdded(STOP)           => 0
+    rule #stackAdded(RETURN)         => 0
+    rule #stackAdded(REVERT)         => 0
+    rule #stackAdded(SELFDESTRUCT)   => 0
+    rule #stackAdded(PUSH(_))        => 1
+    rule #stackAdded(LOG(_))         => 0
+    rule #stackAdded(SWAP(N))        => N +Int 1
+    rule #stackAdded(DUP(N))         => N +Int 1
+    rule #stackAdded(_IOP:InvalidOp) => 0
+    rule #stackAdded(_OP)            => 1 [owise]
+
+    syntax Int ::= #stackDelta ( OpCode ) [klabel(#stackDelta), function]
+ // ---------------------------------------------------------------------
+    rule #stackDelta(OP) => #stackAdded(OP) -Int #stackNeeded(OP)
+
+
    +
  • #changesState is true if the given opcode will change <network> state given the arguments.
  • +
+
    syntax Bool ::= #changesState ( OpCode , WordStack ) [klabel(#changesState), function]
+ // --------------------------------------------------------------------------------------
+
+
    rule #changesState(CALL         , _ : _ : VALUE : _) => true  requires VALUE =/=Int 0
+    rule #changesState(LOG(_)       , _)                 => true
+    rule #changesState(SSTORE       , _)                 => true
+    rule #changesState(CREATE       , _)                 => true
+    rule #changesState(CREATE2      , _)                 => true
+    rule #changesState(SELFDESTRUCT , _)                 => true
+    rule #changesState(_            , _)                 => false [owise]
+
+

Execution Step

+
    +
  • #exec will load the arguments of the opcode (it assumes #stackNeeded? is accurate and has been called) and trigger the subsequent operations.
  • +
+
    syntax InternalOp ::= "#exec" "[" OpCode "]"
+ // --------------------------------------------
+    rule <k> #exec [ IOP:InvalidOp ] => IOP ... </k>
+
+    rule <k> #exec [ OP ] => #gas [ OP , OP ] ~> OP ... </k> requires isNullStackOp(OP) orBool isPushOp(OP)
+
+

Here we load the correct number of arguments from the wordStack based on the sort of the opcode.

+
    syntax KItem  ::= OpCode
+    syntax OpCode ::= NullStackOp | UnStackOp | BinStackOp | TernStackOp | QuadStackOp
+                    | InvalidOp | StackOp | InternalOp | CallOp | CallSixOp | PushOp
+ // --------------------------------------------------------------------------------
+
+    syntax InternalOp ::= UnStackOp   Int
+                        | BinStackOp  Int Int
+                        | TernStackOp Int Int Int
+                        | QuadStackOp Int Int Int Int
+ // -------------------------------------------------
+    rule <k> #exec [ UOP:UnStackOp   ] => #gas [ UOP , UOP W0          ] ~> UOP W0          ... </k> <wordStack> W0 : WS                => WS </wordStack>
+    rule <k> #exec [ BOP:BinStackOp  ] => #gas [ BOP , BOP W0 W1       ] ~> BOP W0 W1       ... </k> <wordStack> W0 : W1 : WS           => WS </wordStack>
+    rule <k> #exec [ TOP:TernStackOp ] => #gas [ TOP , TOP W0 W1 W2    ] ~> TOP W0 W1 W2    ... </k> <wordStack> W0 : W1 : W2 : WS      => WS </wordStack>
+    rule <k> #exec [ QOP:QuadStackOp ] => #gas [ QOP , QOP W0 W1 W2 W3 ] ~> QOP W0 W1 W2 W3 ... </k> <wordStack> W0 : W1 : W2 : W3 : WS => WS </wordStack>
+
+

StackOp is used for opcodes which require a large portion of the stack.

+
    syntax InternalOp ::= StackOp WordStack
+ // ---------------------------------------
+    rule <k> #exec [ SO:StackOp ] => #gas [ SO , SO WS ] ~> SO WS ... </k> <wordStack> WS </wordStack>
+
+

The CallOp opcodes all interperet their second argument as an address.

+
    syntax InternalOp ::= CallSixOp Int Int     Int Int Int Int
+                        | CallOp    Int Int Int Int Int Int Int
+ // -----------------------------------------------------------
+    rule <k> #exec [ CSO:CallSixOp ] => #gas [ CSO , CSO W0 W1    W2 W3 W4 W5 ] ~> CSO W0 W1    W2 W3 W4 W5 ... </k> <wordStack> W0 : W1 : W2 : W3 : W4 : W5 : WS      => WS </wordStack>
+    rule <k> #exec [ CO:CallOp     ] => #gas [ CO  , CO  W0 W1 W2 W3 W4 W5 W6 ] ~> CO  W0 W1 W2 W3 W4 W5 W6 ... </k> <wordStack> W0 : W1 : W2 : W3 : W4 : W5 : W6 : WS => WS </wordStack>
+
+

Address Conversion

+

Some opcodes require accessing elements of the state at different addresses. +We make sure the given arguments (to be interpreted as addresses) are with 160 bits ahead of time.

+
    syntax InternalOp ::= "#addr" "[" OpCode "]"
+ // --------------------------------------------
+    rule <k> #addr [ OP:OpCode ] => .K ... </k>
+         <wordStack> (W0 => #addr(W0)) : _WS </wordStack>
+      requires isAddr1Op(OP)
+
+    rule <k> #addr [ OP:OpCode ] => .K ... </k>
+         <wordStack> _W0 : (W1 => #addr(W1)) : _WS </wordStack>
+      requires isAddr2Op(OP)
+
+    rule <k> #addr [ OP:OpCode ] => .K ... </k>
+      requires notBool ( isAddr1Op(OP) orBool isAddr2Op(OP) )
+
+    syntax Bool ::= isAddr1Op ( OpCode ) [klabel(isAddr1Op), function, total]
+                  | isAddr2Op ( OpCode ) [klabel(isAddr2Op), function, total]
+ // -------------------------------------------------------------------------
+    rule isAddr1Op(BALANCE)      => true
+    rule isAddr1Op(SELFDESTRUCT) => true
+    rule isAddr1Op(EXTCODEHASH)  => true
+    rule isAddr1Op(EXTCODESIZE)  => true
+    rule isAddr1Op(EXTCODECOPY)  => true
+    rule isAddr1Op(_)            => false [owise]
+
+    rule isAddr2Op(_:CallOp)    => true
+    rule isAddr2Op(_:CallSixOp) => true
+    rule isAddr2Op(_)           => false [owise]
+
+

Program Counter

+

All operators except for PUSH and JUMP* increment the program counter by 1. +The arguments to PUSH must be skipped over (as they are inline), and the opcode JUMP already affects the program counter in the correct way.

+
    +
  • #pc calculates the next program counter of the given operator.
  • +
+
    syntax InternalOp ::= "#pc" "[" OpCode "]"
+ // ------------------------------------------
+    rule <k> #pc [ OP ] => .K ... </k>
+         <pc> PCOUNT => PCOUNT +Int #widthOp(OP) </pc>
+
+    syntax Int ::= #widthOp ( OpCode ) [klabel(#widthOp), function, total]
+ // ----------------------------------------------------------------------
+    rule #widthOp(PUSH(N)) => 1 +Int N
+    rule #widthOp(_)       => 1        [owise]
+
+

After executing a transaction, it's necessary to have the effect of the substate log recorded.

+
    +
  • #finalizeStorage updates the origStorage cell with the new values of storage.
  • +
  • #finalizeTx makes the substate log actually have an effect on the state.
  • +
  • #deleteAccounts deletes the accounts specified by the self destruct list.
  • +
+
    syntax InternalOp ::= #finalizeStorage ( List ) [klabel(#finalizeStorage)]
+ // --------------------------------------------------------------------------
+    rule <k> #finalizeStorage(ListItem(ACCT) REST => REST) ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <storage> STORAGE </storage>
+           <origStorage> _ => STORAGE </origStorage>
+           ...
+         </account>
+
+    rule <k> #finalizeStorage(.List) => .K ... </k>
+
+    rule <k> (.K => #newAccount ACCT) ~> #finalizeStorage(ListItem(ACCT) _ACCTS) ... </k> [owise]
+
+    syntax InternalOp ::= #finalizeTx ( Bool )     [klabel(#finalizeTx)]
+                        | #deleteAccounts ( List ) [klabel(#deleteAccounts)]
+ // ------------------------------------------------------------------------
+    rule <k> #finalizeTx(true) => #finalizeStorage(Set2List(SetItem(MINER) |Set ACCTS)) ... </k>
+         <selfDestruct> .Set </selfDestruct>
+         <coinbase> MINER </coinbase>
+         <touchedAccounts> ACCTS </touchedAccounts>
+         <accessedAccounts> _ => .Set </accessedAccounts>
+         <accessedStorage> _ => .Map </accessedStorage>
+
+    rule <k> #finalizeTx(false) ... </k>
+         <useGas> true </useGas>
+         <schedule> SCHED </schedule>
+         <gas> GAVAIL => G*(GAVAIL, GLIMIT, REFUND, SCHED) </gas>
+         <refund> REFUND => 0 </refund>
+         <txPending> ListItem(MSGID:Int) ... </txPending>
+         <message>
+            <msgID> MSGID </msgID>
+            <txGasLimit> GLIMIT </txGasLimit>
+            ...
+         </message>
+      requires REFUND =/=Int 0
+
+    rule <k> #finalizeTx(false => true) ... </k>
+         <useGas> true </useGas>
+         <baseFee> BFEE </baseFee>
+         <origin> ORG </origin>
+         <coinbase> MINER </coinbase>
+         <gas> GAVAIL </gas>
+         <gasUsed> GUSED => GUSED +Gas GLIMIT -Gas GAVAIL </gasUsed>
+         <gasPrice> GPRICE </gasPrice>
+         <refund> 0 </refund>
+         <account>
+           <acctID> ORG </acctID>
+           <balance> ORGBAL => ORGBAL +Int GAVAIL *Int GPRICE </balance>
+           ...
+         </account>
+         <account>
+           <acctID> MINER </acctID>
+           <balance> MINBAL => MINBAL +Int (GLIMIT -Int GAVAIL) *Int (GPRICE -Int BFEE) </balance>
+           ...
+         </account>
+         <txPending> ListItem(TXID:Int) REST => REST </txPending>
+         <message>
+           <msgID> TXID </msgID>
+           <txGasLimit> GLIMIT </txGasLimit>
+           ...
+         </message>
+      requires ORG =/=Int MINER
+
+    rule <k> #finalizeTx(false => true) ... </k>
+         <useGas> true </useGas>
+         <baseFee> BFEE </baseFee>
+         <origin> ACCT </origin>
+         <coinbase> ACCT </coinbase>
+         <gas> GAVAIL </gas>
+         <gasUsed> GUSED => GUSED +Gas GLIMIT -Gas GAVAIL </gasUsed>
+         <gasPrice> GPRICE </gasPrice>
+         <refund> 0 </refund>
+         <account>
+           <acctID> ACCT </acctID>
+           <balance> BAL => BAL +Int GLIMIT *Int GPRICE -Int (GLIMIT -Int GAVAIL) *Int BFEE </balance>
+           ...
+         </account>
+         <txPending> ListItem(MsgId:Int) REST => REST </txPending>
+         <message>
+           <msgID> MsgId </msgID>
+           <txGasLimit> GLIMIT </txGasLimit>
+           ...
+         </message>
+
+    rule <k> #finalizeTx(false => true) ... </k>
+         <useGas> false </useGas>
+         <txPending> ListItem(MsgId:Int) REST => REST </txPending>
+         <message>
+           <msgID> MsgId </msgID>
+           ...
+         </message>
+
+    rule <k> (.K => #deleteAccounts(Set2List(ACCTS))) ~> #finalizeTx(true) ... </k>
+         <selfDestruct> ACCTS => .Set </selfDestruct>
+      requires size(ACCTS) >Int 0
+
+    rule <k> (.K => #newAccount MINER) ~> #finalizeTx(_) ... </k>
+         <coinbase> MINER </coinbase> [owise]
+
+    rule <k> #deleteAccounts(ListItem(ACCT) ACCTS) => #deleteAccounts(ACCTS) ... </k>
+         <accounts>
+           ( <account>
+               <acctID> ACCT </acctID>
+               ...
+             </account>
+          => .Bag
+           )
+           ...
+         </accounts>
+
+    rule <k> #deleteAccounts(.List) => .K ... </k>
+
+

Block processing

+
    +
  • #startBlock is used to signal that we are about to start mining a block and block initialization should take place (before transactions are executed).
  • +
  • #finalizeBlock is used to signal that block finalization procedures should take place (after transactions have executed).
  • +
  • #rewardOmmers(_) pays out the reward to uncle blocks so that blocks are orphaned less often in Ethereum.
  • +
+
    syntax EthereumCommand ::= "#startBlock"
+ // ----------------------------------------
+    rule <k> #startBlock => .K ... </k>
+         <gasUsed> _ => 0 </gasUsed>
+         <log> _ => .List </log>
+         <logsBloom> _ => #padToWidth(256, .Bytes) </logsBloom>
+
+    syntax EthereumCommand ::= "#finalizeBlock"
+                             | #rewardOmmers ( JSONs ) [klabel(#rewardOmmers)]
+ // --------------------------------------------------------------------------
+    rule <k> #finalizeBlock => #rewardOmmers(OMMERS) ... </k>
+         <schedule> SCHED </schedule>
+         <ommerBlockHeaders> [ OMMERS ] </ommerBlockHeaders>
+         <coinbase> MINER </coinbase>
+         <account>
+           <acctID> MINER </acctID>
+           <balance> MINBAL => MINBAL +Int Rb < SCHED > </balance>
+           ...
+         </account>
+         <log> LOGS </log>
+         <logsBloom> _ => #bloomFilter(LOGS) </logsBloom>
+
+    rule <k> (.K => #newAccount MINER) ~> #finalizeBlock ... </k>
+         <coinbase> MINER </coinbase> [owise]
+
+    rule <k> #rewardOmmers(.JSONs) => .K ... </k>
+    rule <k> #rewardOmmers([ _ , _ , OMMER , _ , _ , _ , _ , _ , OMMNUM , _ ] , REST) => #rewardOmmers(REST) ... </k>
+         <schedule> SCHED </schedule>
+         <coinbase> MINER </coinbase>
+         <number> CURNUM </number>
+         <account>
+           <acctID> MINER </acctID>
+           <balance> MINBAL => MINBAL +Int Rb < SCHED > /Int 32 </balance>
+          ...
+         </account>
+         <account>
+           <acctID> OMMER </acctID>
+           <balance> OMMBAL => OMMBAL +Int Rb < SCHED > +Int (OMMNUM -Int CURNUM) *Int (Rb < SCHED > /Int 8) </balance>
+          ...
+         </account>
+
+    syntax Bytes ::= #bloomFilter(List)      [klabel(#bloomFilter), function]
+                   | #bloomFilter(List, Int) [klabel(#bloomFilterAux), function]
+ // ----------------------------------------------------------------------------
+    rule #bloomFilter(L) => #bloomFilter(L, 0)
+
+    rule #bloomFilter(.List, B) => #padToWidth(256, #asByteStack(B))
+    rule #bloomFilter(ListItem({ ACCT | TOPICS | _ }) L, B) => #bloomFilter(ListItem(#padToWidth(20, #asByteStack(ACCT))) listAsBytes(TOPICS) L, B)
+
+    syntax List ::= listAsBytes(List) [klabel(listAsBytes), function]
+ // -----------------------------------------------------------------
+    rule listAsBytes(.List) => .List
+    rule listAsBytes(ListItem(TOPIC) L) => ListItem(#padToWidth(32, #asByteStack(TOPIC))) listAsBytes(L)
+
+    rule #bloomFilter(ListItem(WS:Bytes) L, B) => #bloomFilter(L, B |Int M3:2048(WS))
+
+
    +
  • M3:2048 computes the 2048-bit hash of a log entry in which exactly 3 bits are set. This is used to compute the Bloom filter of a log entry.
  • +
+
    syntax Int ::= "M3:2048" "(" Bytes ")" [function]
+ // -------------------------------------------------
+    rule M3:2048(WS) => setBloomFilterBits(#parseByteStack(Keccak256(WS)))
+
+    syntax Int ::= setBloomFilterBits(Bytes) [klabel(setBloomFilterBits), function]
+ // -------------------------------------------------------------------------------
+    rule setBloomFilterBits(HASH) => (1 <<Int getBloomFilterBit(HASH, 0)) |Int (1 <<Int getBloomFilterBit(HASH, 2)) |Int (1 <<Int getBloomFilterBit(HASH, 4))
+
+    syntax Int ::= getBloomFilterBit(Bytes, Int) [klabel(getBloomFilterBit), function]
+ // ----------------------------------------------------------------------------------
+    rule getBloomFilterBit(X, I) => #asInteger(#range(X, I, 2)) %Int 2048
+
+

EVM Programs

+

EVM OpCodes

+

Internal Operations

+

These are just used by the other operators for shuffling local execution state around on the EVM.

+
    +
  • #push will push an element to the wordStack without any checks.
  • +
  • #setStack_ will set the current stack to the given one.
  • +
+
    syntax InternalOp ::= "#push" | "#setStack" WordStack
+ // -----------------------------------------------------
+    rule <k> W0:Int ~> #push => .K ... </k> <wordStack> WS => W0 : WS </wordStack>
+    rule <k> #setStack WS    => .K ... </k> <wordStack> _  => WS      </wordStack>
+
+
    +
  • #newAccount_ allows declaring a new empty account with the given address (and assumes the rounding to 160 bits has already occurred). +If the account already exists with non-zero nonce or non-empty code, an exception is thrown. +Otherwise, if the account already exists, the storage is cleared.
  • +
+
    syntax InternalOp ::= "#newAccount" Int
+                        | "#newExistingAccount" Int
+ // -----------------------------------------------
+    rule <k> #newAccount ACCT => #newExistingAccount ACCT ... </k> <account> <acctID> ACCT </acctID> ... </account>
+    rule <k> #newAccount ACCT => .K    ... </k>
+             <accounts>
+               ( .Bag
+                  =>
+                 <account>
+                    <acctID> ACCT </acctID>
+                    <balance>     0                  </balance>
+                    <code>        .Bytes:AccountCode </code>
+                    <storage>     .Map               </storage>
+                    <origStorage> .Map               </origStorage>
+                    <nonce>       0                  </nonce>
+                 </account>
+               )
+               ...
+             </accounts> [owise, preserves-definedness]
+
+    rule <k> #newExistingAccount ACCT => #end EVMC_ACCOUNT_ALREADY_EXISTS ... </k>
+         <account>
+           <acctID> ACCT  </acctID>
+           <code>   CODE  </code>
+           <nonce>  NONCE </nonce>
+           ...
+         </account>
+      requires CODE =/=K .Bytes orBool NONCE =/=Int 0
+
+    rule <k> #newExistingAccount ACCT => .K ... </k>
+         <account>
+           <acctID>      ACCT      </acctID>
+           <code>        CODE      </code>
+           <nonce>       0         </nonce>
+           <storage>     _ => .Map </storage>
+           <origStorage> _ => .Map </origStorage>
+           ...
+         </account>
+      requires lengthBytes(CODE) ==Int 0
+
+
    +
  • #transferFunds moves money from one account into another, creating the destination account if it doesn't exist.
  • +
+
    syntax InternalOp ::= "#transferFunds" Int Int Int
+                        | "#transferFundsToNonExistent" Int Int Int
+ // ---------------------------------------------------------------
+    rule <k> #transferFunds ACCT ACCT VALUE => .K ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <balance> ORIGFROM </balance>
+           ...
+         </account>
+      requires VALUE <=Int ORIGFROM
+
+    rule <k> #transferFunds ACCTFROM ACCTTO VALUE => .K ... </k>
+         <account>
+           <acctID> ACCTFROM </acctID>
+           <balance> ORIGFROM => ORIGFROM -Word VALUE </balance>
+           ...
+         </account>
+         <account>
+           <acctID> ACCTTO </acctID>
+           <balance> ORIGTO => ORIGTO +Word VALUE </balance>
+           ...
+         </account>
+      requires ACCTFROM =/=K ACCTTO andBool VALUE <=Int ORIGFROM
+      [preserves-definedness]
+
+    rule <k> #transferFunds ACCTFROM _ACCTTO VALUE => #end EVMC_BALANCE_UNDERFLOW ... </k>
+         <account>
+           <acctID> ACCTFROM </acctID>
+           <balance> ORIGFROM </balance>
+           ...
+         </account>
+      requires VALUE >Int ORIGFROM
+
+    rule <k> #transferFunds ACCTFROM ACCTTO VALUE => #transferFundsToNonExistent ACCTFROM ACCTTO VALUE ... </k> [owise]
+
+    rule <k> #transferFundsToNonExistent ACCTFROM ACCTTO VALUE => #newAccount ACCTTO ~> #transferFunds ACCTFROM ACCTTO VALUE ... </k>
+         <schedule> SCHED </schedule>
+      requires ACCTFROM =/=K ACCTTO
+       andBool (VALUE >Int 0 orBool notBool Gemptyisnonexistent << SCHED >>)
+
+    rule <k> #transferFundsToNonExistent ACCTFROM ACCTTO 0 => .K ... </k>
+         <schedule> SCHED </schedule>
+      requires ACCTFROM =/=K ACCTTO
+       andBool Gemptyisnonexistent << SCHED >>
+
+

Invalid Operator

+

We use INVALID both for marking the designated invalid operator, and UNDEFINED(_) for garbage bytes in the input program.

+
    syntax InvalidOp ::= "INVALID" | "UNDEFINED" "(" Int ")"
+ // --------------------------------------------------------
+    rule <k> INVALID      => #end EVMC_INVALID_INSTRUCTION   ... </k>
+    rule <k> UNDEFINED(_) => #end EVMC_UNDEFINED_INSTRUCTION ... </k>
+
+

Stack Manipulations

+

Some operators don't calculate anything, they just push the stack around a bit.

+
    syntax UnStackOp ::= "POP"
+ // --------------------------
+    rule <k> POP _ => .K ... </k>
+
+    syntax StackOp ::= DUP  ( Int ) [klabel(DUP)]
+                     | SWAP ( Int ) [klabel(SWAP)]
+ // ----------------------------------------------
+    rule <k> DUP(N)  WS:WordStack => #setStack ((WS [ N -Int 1 ]) : WS)                      ... </k>
+    rule <k> SWAP(N) (W0 : WS)    => #setStack ((WS [ N -Int 1 ]) : (WS [ N -Int 1 := W0 ])) ... </k>
+
+    syntax PushOp ::= "PUSHZERO"
+                    | PUSH ( Int ) [klabel(PUSH)]
+ // ---------------------------------------------
+    rule <k> PUSHZERO => 0 ~> #push ... </k>
+
+    rule <k> PUSH(N) => #asWord(#range(PGM, PCOUNT +Int 1, N)) ~> #push ... </k>
+         <pc> PCOUNT </pc>
+         <program> PGM </program>
+
+

Local Memory

+

These operations are getters/setters of the local execution memory.

+
    syntax UnStackOp ::= "MLOAD"
+ // ----------------------------
+    rule <k> MLOAD INDEX => #asWord(#range(LM, INDEX, 32)) ~> #push ... </k>
+         <localMem> LM </localMem>
+
+    syntax BinStackOp ::= "MSTORE" | "MSTORE8"
+ // ------------------------------------------
+    rule <k> MSTORE INDEX VALUE => .K ... </k>
+         <localMem> LM => LM [ INDEX := #padToWidth(32, #asByteStack(VALUE)) ] </localMem>
+
+    rule <k> MSTORE8 INDEX VALUE => .K ... </k>
+         <localMem> LM => #write(LM, INDEX, (VALUE modInt 256)) </localMem>
+
+

Expressions

+

Expression calculations are simple and don't require anything but the arguments from the wordStack to operate.

+

NOTE: We have to call the opcode OR by EVMOR instead, because K has trouble parsing it/compiling the definition otherwise.

+
    syntax UnStackOp ::= "ISZERO" | "NOT"
+ // -------------------------------------
+    rule <k> ISZERO W => W ==Word 0 ~> #push ... </k>
+    rule <k> NOT    W => ~Word W    ~> #push ... </k>
+
+    syntax BinStackOp ::= "ADD" | "MUL" | "SUB" | "DIV" | "EXP" | "MOD"
+ // -------------------------------------------------------------------
+    rule <k> ADD W0 W1 => W0 +Word W1 ~> #push ... </k>
+    rule <k> MUL W0 W1 => W0 *Word W1 ~> #push ... </k>
+    rule <k> SUB W0 W1 => W0 -Word W1 ~> #push ... </k>
+    rule <k> DIV W0 W1 => W0 /Word W1 ~> #push ... </k>
+    rule <k> EXP W0 W1 => W0 ^Word W1 ~> #push ... </k>
+    rule <k> MOD W0 W1 => W0 %Word W1 ~> #push ... </k>
+
+    syntax BinStackOp ::= "SDIV" | "SMOD"
+ // -------------------------------------
+    rule <k> SDIV W0 W1 => W0 /sWord W1 ~> #push ... </k>
+    rule <k> SMOD W0 W1 => W0 %sWord W1 ~> #push ... </k>
+
+    syntax TernStackOp ::= "ADDMOD" | "MULMOD"
+ // ------------------------------------------
+    rule <k> ADDMOD W0 W1 W2 => (W0 +Int W1) %Word W2 ~> #push ... </k>
+    rule <k> MULMOD W0 W1 W2 => (W0 *Int W1) %Word W2 ~> #push ... </k>
+
+    syntax BinStackOp ::= "BYTE" | "SIGNEXTEND"
+ // -------------------------------------------
+    rule <k> BYTE INDEX W     => byte(INDEX, W)     ~> #push ... </k>
+    rule <k> SIGNEXTEND W0 W1 => signextend(W0, W1) ~> #push ... </k>
+
+    syntax BinStackOp ::= "SHL" | "SHR" | "SAR"
+ // -------------------------------------------
+    rule <k> SHL W0 W1 => W1 <<Word  W0 ~> #push ... </k>
+    rule <k> SHR W0 W1 => W1 >>Word  W0 ~> #push ... </k>
+    rule <k> SAR W0 W1 => W1 >>sWord W0 ~> #push ... </k>
+
+    syntax BinStackOp ::= "AND" | "EVMOR" | "XOR"
+ // ---------------------------------------------
+    rule <k> AND   W0 W1 => W0 &Word W1   ~> #push ... </k>
+    rule <k> EVMOR W0 W1 => W0 |Word W1   ~> #push ... </k>
+    rule <k> XOR   W0 W1 => W0 xorWord W1 ~> #push ... </k>
+
+    syntax BinStackOp ::= "LT" | "GT" | "EQ"
+ // ----------------------------------------
+    rule <k> LT W0 W1 => W0 <Word  W1 ~> #push ... </k>
+    rule <k> GT W0 W1 => W0 >Word  W1 ~> #push ... </k>
+    rule <k> EQ W0 W1 => W0 ==Word W1 ~> #push ... </k>
+
+    syntax BinStackOp ::= "SLT" | "SGT"
+ // -----------------------------------
+    rule <k> SLT W0 W1 => W0 s<Word W1 ~> #push ... </k>
+    rule <k> SGT W0 W1 => W1 s<Word W0 ~> #push ... </k>
+
+    syntax BinStackOp ::= "SHA3"
+ // ----------------------------
+    rule <k> SHA3 MEMSTART MEMWIDTH => keccak(#range(LM, MEMSTART, MEMWIDTH)) ~> #push ... </k>
+         <localMem> LM </localMem>
+
+

Local State

+

These operators make queries about the current execution state.

+
    syntax NullStackOp ::= "PC" | "GAS" | "GASPRICE" | "GASLIMIT" | "BASEFEE"
+ // -------------------------------------------------------------------------
+    rule <k> PC       => PCOUNT          ~> #push ... </k> <pc> PCOUNT </pc>
+    rule <k> GAS      => gas2Int(GAVAIL) ~> #push ... </k> <gas> GAVAIL </gas>
+    rule <k> GASPRICE => GPRICE          ~> #push ... </k> <gasPrice> GPRICE </gasPrice>
+    rule <k> GASLIMIT => GLIMIT          ~> #push ... </k> <gasLimit> GLIMIT </gasLimit>
+    rule <k> BASEFEE  => BFEE            ~> #push ... </k> <baseFee> BFEE </baseFee>
+
+    syntax NullStackOp ::= "COINBASE" | "TIMESTAMP" | "NUMBER" | "DIFFICULTY" | "PREVRANDAO"
+ // ----------------------------------------------------------------------------------------
+    rule <k> COINBASE   => CB   ~> #push ... </k> <coinbase> CB </coinbase>
+    rule <k> TIMESTAMP  => TS   ~> #push ... </k> <timestamp> TS </timestamp>
+    rule <k> NUMBER     => NUMB ~> #push ... </k> <number> NUMB </number>
+    rule <k> DIFFICULTY => DIFF ~> #push ... </k> <difficulty> DIFF </difficulty>
+    rule <k> PREVRANDAO => RDAO ~> #push ... </k> <mixHash> RDAO </mixHash>
+
+    syntax NullStackOp ::= "ADDRESS" | "ORIGIN" | "CALLER" | "CALLVALUE" | "CHAINID" | "SELFBALANCE"
+ // ------------------------------------------------------------------------------------------------
+    rule <k> ADDRESS     => ACCT ~> #push ... </k> <id> ACCT </id>
+    rule <k> ORIGIN      => ORG  ~> #push ... </k> <origin> ORG </origin>
+    rule <k> CALLER      => CL   ~> #push ... </k> <caller> CL </caller>
+    rule <k> CALLVALUE   => CV   ~> #push ... </k> <callValue> CV </callValue>
+    rule <k> CHAINID     => CID  ~> #push ... </k> <chainID> CID </chainID>
+    rule <k> SELFBALANCE => BAL  ~> #push ... </k>
+         <id> ACCT </id>
+         <account>
+            <acctID> ACCT </acctID>
+            <balance> BAL </balance>
+            ...
+         </account>
+
+    syntax NullStackOp ::= "MSIZE" | "CODESIZE"
+ // -------------------------------------------
+    rule <k> MSIZE    => 32 *Word MU         ~> #push ... </k> <memoryUsed> MU </memoryUsed>
+    rule <k> CODESIZE => lengthBytes(PGM) ~> #push ... </k> <program> PGM </program>
+
+    syntax TernStackOp ::= "CODECOPY"
+ // ---------------------------------
+    rule <k> CODECOPY MEMSTART PGMSTART WIDTH => .K ... </k>
+         <program> PGM </program>
+         <localMem> LM =>  LM [ MEMSTART := #range(PGM, PGMSTART, WIDTH) ] </localMem>
+
+    syntax UnStackOp ::= "BLOCKHASH"
+ // --------------------------------
+
+

The blockhash is calculated here using the "shortcut" formula used for running tests.

+
    rule <k> BLOCKHASH N => #blockhash(HASHES, N, HI -Int 1, 0) ~> #push ... </k>
+         <number>      HI     </number>
+         <blockhashes> HASHES </blockhashes>
+
+    syntax Int ::= #blockhash ( List , Int , Int , Int ) [klabel(#blockhash), function]
+ // -----------------------------------------------------------------------------------
+    rule #blockhash(_, N, HI, _) => 0 requires N >Int HI
+    rule #blockhash(_, _, _, 256) => 0
+    rule #blockhash(ListItem(0) _, _, _, _) => 0
+    rule #blockhash(ListItem(H) _, N, N, _) => H
+    rule #blockhash(ListItem(_) L, N, HI, A) => #blockhash(L, N, HI -Int 1, A +Int 1) [owise]
+
+

EVM OpCodes

+

EVM Control Flow

+

The JUMP* family of operations affect the current program counter.

+
    syntax NullStackOp ::= "JUMPDEST"
+ // ---------------------------------
+    rule <k> JUMPDEST => .K ... </k>
+
+    syntax UnStackOp ::= "JUMP"
+ // ---------------------------
+    rule <k> JUMP DEST => #endBasicBlock... </k>
+         <pc> _ => DEST </pc>
+         <jumpDests> DESTS </jumpDests>
+      requires DEST in DESTS
+
+    rule <k> JUMP DEST => #end EVMC_BAD_JUMP_DESTINATION ... </k>
+         <jumpDests> DESTS </jumpDests>
+      requires notBool DEST in DESTS
+
+    syntax BinStackOp ::= "JUMPI"
+ // -----------------------------
+    rule [jumpi.false]: <k> JUMPI _DEST I => .K         ... </k> requires I  ==Int 0
+    rule [jumpi.true]:  <k> JUMPI  DEST I => JUMP DEST ... </k> requires I =/=Int 0
+
+    syntax InternalOp ::= "#endBasicBlock"
+ // --------------------------------------
+    rule                    <k> #endBasicBlock ~> (_:OpCode => .K) ... </k>
+    rule [end-basic-block]: <k> (#endBasicBlock => .K) ~> #execute ... </k>
+
+

STOP, REVERT, and RETURN

+
    syntax NullStackOp ::= "STOP"
+ // -----------------------------
+    rule <k> STOP => #end EVMC_SUCCESS ... </k>
+         <output> _ => .Bytes </output>
+
+    syntax BinStackOp ::= "RETURN"
+ // ------------------------------
+    rule <k> RETURN RETSTART RETWIDTH => #end EVMC_SUCCESS ... </k>
+         <output> _ => #range(LM, RETSTART, RETWIDTH) </output>
+         <localMem> LM </localMem>
+
+    syntax BinStackOp ::= "REVERT"
+ // ------------------------------
+    rule <k> REVERT RETSTART RETWIDTH => #end EVMC_REVERT ... </k>
+         <output> _ => #range(LM, RETSTART, RETWIDTH) </output>
+         <localMem> LM </localMem>
+
+

Call Data

+

These operators query about the current CALL* state.

+
    syntax NullStackOp ::= "CALLDATASIZE"
+ // -------------------------------------
+    rule <k> CALLDATASIZE => lengthBytes(CD) ~> #push ... </k>
+         <callData> CD </callData>
+
+    syntax UnStackOp ::= "CALLDATALOAD"
+ // -----------------------------------
+    rule <k> CALLDATALOAD DATASTART => #asWord(#range(CD, DATASTART, 32)) ~> #push ... </k>
+         <callData> CD </callData>
+
+    syntax TernStackOp ::= "CALLDATACOPY"
+ // -------------------------------------
+    rule <k> CALLDATACOPY MEMSTART DATASTART DATAWIDTH => .K ... </k>
+         <localMem> LM => LM [ MEMSTART := #range(CD, DATASTART, DATAWIDTH) ] </localMem>
+         <callData> CD </callData>
+
+

Return Data

+

These operators query about the current return data buffer.

+
    syntax NullStackOp ::= "RETURNDATASIZE"
+ // ---------------------------------------
+    rule <k> RETURNDATASIZE => lengthBytes(RD) ~> #push ... </k>
+         <output> RD </output>
+
+    syntax TernStackOp ::= "RETURNDATACOPY"
+ // ----------------------------------------
+    rule <k> RETURNDATACOPY MEMSTART DATASTART DATAWIDTH => .K ... </k>
+         <localMem> LM => LM [ MEMSTART := #range(RD, DATASTART, DATAWIDTH) ] </localMem>
+         <output> RD </output>
+      requires DATASTART +Int DATAWIDTH <=Int lengthBytes(RD)
+
+    rule <k> RETURNDATACOPY _MEMSTART DATASTART DATAWIDTH => #end EVMC_INVALID_MEMORY_ACCESS ... </k>
+         <output> RD </output>
+      requires DATASTART +Int DATAWIDTH >Int lengthBytes(RD)
+
+

Log Operations

+
    syntax BinStackOp ::= LogOp
+    syntax LogOp ::= LOG ( Int ) [klabel(LOG)]
+ // ------------------------------------------
+    rule <k> LOG(N) MEMSTART MEMWIDTH => .K ... </k>
+         <id> ACCT </id>
+         <wordStack> WS => #drop(N, WS) </wordStack>
+         <localMem> LM </localMem>
+         <log> L => L ListItem({ ACCT | WordStack2List(#take(N, WS)) | #range(LM, MEMSTART, MEMWIDTH) }) </log>
+      requires #sizeWordStack(WS) >=Int N
+
+

Ethereum Network OpCodes

+

Operators that require access to the rest of the Ethereum network world-state can be taken as a first draft of a "blockchain generic" language.

+

Account Queries

+
    syntax UnStackOp ::= "BALANCE"
+ // ------------------------------
+    rule <k> BALANCE ACCT => #accessAccounts ACCT ~> BAL ~> #push ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <balance> BAL </balance>
+           ...
+         </account>
+
+    rule <k> BALANCE ACCT => #accessAccounts ACCT ~> 0 ~> #push ... </k> [owise]
+
+    syntax UnStackOp ::= "EXTCODESIZE"
+ // ----------------------------------
+    rule <k> EXTCODESIZE ACCT => #accessAccounts ACCT ~> lengthBytes(CODE) ~> #push ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <code> CODE </code>
+           ...
+         </account>
+
+    rule <k> EXTCODESIZE ACCT => #accessAccounts ACCT ~> 0 ~> #push ... </k> [owise]
+
+    syntax UnStackOp ::= "EXTCODEHASH"
+ // ----------------------------------
+    rule <k> EXTCODEHASH ACCT => #accessAccounts ACCT ~> keccak(CODE) ~> #push ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <code> CODE:Bytes </code>
+           <nonce> NONCE </nonce>
+           <balance> BAL </balance>
+           ...
+         </account>
+      requires notBool #accountEmpty(CODE, NONCE, BAL)
+
+    rule <k> EXTCODEHASH ACCT => #accessAccounts ACCT ~> 0 ~> #push ... </k> [owise]
+
+    syntax QuadStackOp ::= "EXTCODECOPY"
+ // ------------------------------------
+    rule <k> EXTCODECOPY ACCT MEMSTART PGMSTART WIDTH => #accessAccounts ACCT ... </k>
+         <localMem> LM => LM [ MEMSTART := #range(PGM, PGMSTART, WIDTH) ] </localMem>
+         <account>
+           <acctID> ACCT </acctID>
+           <code> PGM </code>
+           ...
+         </account>
+
+    rule <k> EXTCODECOPY ACCT MEMSTART _ WIDTH => #accessAccounts ACCT ... </k>
+         <localMem> LM => LM [ MEMSTART := #padToWidth(WIDTH, .Bytes) ] </localMem> [owise]
+
+

Account Storage Operations

+

These rules reach into the network state and load/store from account storage:

+
    syntax UnStackOp ::= "SLOAD"
+ // ----------------------------
+    rule [sload]:
+         <k> SLOAD INDEX => #lookup(STORAGE, INDEX) ~> #push ... </k>
+         <id> ACCT </id>
+         <account>
+           <acctID> ACCT </acctID>
+           <storage> STORAGE </storage>
+           ...
+         </account>
+
+    syntax BinStackOp ::= "SSTORE"
+ // ------------------------------
+    rule [sstore]:
+         <k> SSTORE INDEX NEW => .K ... </k>
+         <id> ACCT </id>
+         <account>
+           <acctID> ACCT </acctID>
+           <storage> STORAGE => STORAGE [ INDEX <- NEW ] </storage>
+           ...
+         </account>
+      [preserves-definedness]
+
+

Call Operations

+

The various CALL* (and other inter-contract control flow) operations will be desugared into these InternalOps.

+
    +
  • #checkCall takes the calling account and the value of the call and triggers several checks before executing the call.
  • +
  • #checkBalanceUnderflow takes the calling account and the value of the call and checks if the call value is greater than the account balance.
  • +
  • #checkDepthExceeded checks if the current call depth is greater than or equal to 1024.
  • +
  • #checkNonceExceeded takes the calling account and checks if the nonce is less than maxUInt64 (18446744073709551615).
  • +
  • #call takes the calling account, the account to execute as, the account whose code should execute, the gas limit, the amount to transfer, the arguments, and the static flag.
  • +
  • #callWithCode takes the calling account, the account to execute as, the code to execute (as a Bytes), the gas limit, the amount to transfer, the arguments, and the static flag.
  • +
  • #return is a placeholder for the calling program, specifying where to place the returned data in memory.
  • +
+
    syntax InternalOp ::= "#checkCall"             Int Int
+                        | "#checkBalanceUnderflow" Int Int
+                        | "#checkNonceExceeded"    Int
+                        | "#checkDepthExceeded"
+                        | "#call"                  Int Int Int Int Int Bytes Bool
+                        | "#callWithCode"          Int Int Int Bytes Int Int Bytes Bool
+                        | "#mkCall"                Int Int Int Bytes     Int Bytes Bool
+ // -----------------------------------------------------------------------------------
+     rule <k> #checkBalanceUnderflow ACCT VALUE => #refund GCALL ~> #pushCallStack ~> #pushWorldState ~> #end EVMC_BALANCE_UNDERFLOW ... </k>
+         <output> _ => .Bytes </output>
+         <callGas> GCALL </callGas>
+         <account>
+           <acctID> ACCT </acctID>
+           <balance> BAL </balance>
+           ...
+         </account>
+      requires VALUE >Int BAL
+
+    rule <k> #checkBalanceUnderflow ACCT VALUE => .K ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <balance> BAL </balance>
+           ...
+         </account>
+      requires VALUE <=Int BAL
+
+    rule <k> #checkDepthExceeded => #refund GCALL ~> #pushCallStack ~> #pushWorldState ~> #end EVMC_CALL_DEPTH_EXCEEDED ... </k>
+         <output> _ => .Bytes </output>
+         <callGas> GCALL </callGas>
+         <callDepth> CD </callDepth>
+      requires CD >=Int 1024
+
+    rule <k> #checkDepthExceeded => .K ... </k>
+         <callDepth> CD </callDepth>
+      requires CD <Int 1024
+
+    rule <k> #checkNonceExceeded ACCT => #refund GCALL ~> #pushCallStack ~> #pushWorldState ~> #end EVMC_NONCE_EXCEEDED ... </k>
+         <output> _ => .Bytes </output>
+         <callGas> GCALL </callGas>
+         <account>
+           <acctID> ACCT </acctID>
+           <nonce> NONCE </nonce>
+           ...
+         </account>
+      requires notBool #rangeNonce(NONCE)
+
+    rule <k> #checkNonceExceeded ACCT => .K ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <nonce> NONCE </nonce>
+           ...
+         </account>
+      requires #rangeNonce(NONCE)
+
+    rule <k> #checkCall ACCT VALUE => #checkBalanceUnderflow ACCT VALUE ~> #checkDepthExceeded ... </k>
+
+    rule <k> #call ACCTFROM ACCTTO ACCTCODE VALUE APPVALUE ARGS STATIC
+          => #callWithCode ACCTFROM ACCTTO ACCTCODE CODE VALUE APPVALUE ARGS STATIC
+         ...
+         </k>
+         <account>
+           <acctID> ACCTCODE </acctID>
+           <code> CODE </code>
+           ...
+         </account>
+
+    rule <k> #call ACCTFROM ACCTTO ACCTCODE VALUE APPVALUE ARGS STATIC
+          => #callWithCode ACCTFROM ACCTTO ACCTCODE .Bytes VALUE APPVALUE ARGS STATIC
+         ...
+         </k> [owise]
+
+    rule <k> #callWithCode ACCTFROM ACCTTO ACCTCODE BYTES VALUE APPVALUE ARGS STATIC
+          => #pushCallStack ~> #pushWorldState
+          ~> #transferFunds ACCTFROM ACCTTO VALUE
+          ~> #mkCall ACCTFROM ACCTTO ACCTCODE BYTES APPVALUE ARGS STATIC
+         ...
+         </k>
+
+    rule <k> #mkCall ACCTFROM ACCTTO ACCTCODE BYTES APPVALUE ARGS STATIC:Bool
+          => #touchAccounts ACCTFROM ACCTTO ~> #accessAccounts ACCTFROM ACCTTO ~> #loadProgram BYTES ~> #initVM ~> #precompiled?(ACCTCODE, SCHED) ~> #execute
+         ...
+         </k>
+         <useGas> USEGAS:Bool </useGas>
+         <callDepth> CD => CD +Int 1 </callDepth>
+         <callData> _ => ARGS </callData>
+         <callValue> _ => APPVALUE </callValue>
+         <id> _ => ACCTTO </id>
+         <gas> GAVAIL:Gas => #if USEGAS #then GCALL:Gas #else GAVAIL:Gas #fi </gas>
+         <callGas> GCALL:Gas => #if USEGAS #then 0:Gas #else GCALL:Gas #fi </callGas>
+         <caller> _ => ACCTFROM </caller>
+         <static> OLDSTATIC:Bool => OLDSTATIC orBool STATIC </static>
+         <schedule> SCHED </schedule>
+
+    syntax InternalOp ::= "#precompiled?" "(" Int "," Schedule ")"
+ // --------------------------------------------------------------
+    rule [precompile.true]:  <k> #precompiled?(ACCTCODE, SCHED) => #next [ #precompiled(ACCTCODE) ] ... </k> requires         #isPrecompiledAccount(ACCTCODE, SCHED) [preserves-definedness]
+    rule [precompile.false]: <k> #precompiled?(ACCTCODE, SCHED) => .K                               ... </k> requires notBool #isPrecompiledAccount(ACCTCODE, SCHED)
+
+    syntax Bool ::= #isPrecompiledAccount ( Int , Schedule ) [klabel(#isPrecompiledAccount), function, total, smtlib(isPrecompiledAccount)]
+ // ---------------------------------------------------------------------------------------------------------------------------------------
+    rule [isPrecompiledAccount]:  #isPrecompiledAccount(ACCTCODE, SCHED) => 0 <Int ACCTCODE andBool ACCTCODE <=Int #precompiledAccountsUB(SCHED)
+
+    syntax KItem ::= "#initVM"
+ // --------------------------
+    rule <k> #initVM      => .K ...      </k>
+         <pc>           _ => 0          </pc>
+         <memoryUsed>   _ => 0          </memoryUsed>
+         <output>       _ => .Bytes     </output>
+         <wordStack>    _ => .WordStack </wordStack>
+         <localMem>     _ => .Bytes     </localMem>
+
+    syntax KItem ::= "#loadProgram" Bytes
+ // -------------------------------------
+    rule <k> #loadProgram BYTES => .K ... </k>
+         <program> _ => BYTES </program>
+         <jumpDests> _ => #computeValidJumpDests(BYTES) </jumpDests>
+
+    syntax KItem ::= "#touchAccounts" Account | "#touchAccounts" Account Account
+ // ----------------------------------------------------------------------------
+    rule <k> #touchAccounts ADDR1 ADDR2 => #touchAccounts ADDR1 ~> #touchAccounts ADDR2 ... </k>
+
+    rule <k> #touchAccounts ADDR => .K ... </k>
+         <touchedAccounts> TOUCHED_ACCOUNTS => TOUCHED_ACCOUNTS |Set SetItem(ADDR) </touchedAccounts>
+
+    syntax KItem ::= "#accessStorage" Account Int
+ // ---------------------------------------------
+    rule <k> #accessStorage ACCT INDEX => .K ... </k>
+         <accessedStorage> ... ACCT |-> (TS:Set => TS |Set SetItem(INDEX)) ... </accessedStorage>
+         <schedule> SCHED </schedule>
+         requires Ghasaccesslist << SCHED >>
+         [preserves-definedness]
+
+    rule <k> #accessStorage ACCT INDEX => .K ... </k>
+         <accessedStorage> TS => TS[ACCT <- SetItem(INDEX)] </accessedStorage>
+         <schedule> SCHED </schedule>
+      requires Ghasaccesslist << SCHED >> andBool notBool ACCT in_keys(TS)
+
+    rule <k> #accessStorage _ _ => .K ... </k>
+         <schedule> SCHED </schedule>
+      requires notBool Ghasaccesslist << SCHED >>
+
+    syntax KItem ::= "#accessAccounts" Account
+                   | "#accessAccounts" Set
+                   | "#accessAccounts" Account Account
+                   | "#accessAccounts" Account Account Set
+ // ------------------------------------------------------
+    rule <k> #accessAccounts ADDR1:Account ADDR2:Account ADDRSET:Set => #accessAccounts ADDR1 ~> #accessAccounts ADDR2 ~> #accessAccounts ADDRSET ... </k>
+
+    rule <k> #accessAccounts ADDR1:Account ADDR2:Account => #accessAccounts ADDR1 ~> #accessAccounts ADDR2 ... </k>
+
+    rule <k> #accessAccounts ADDR:Account => .K ... </k>
+         <accessedAccounts> TOUCHED_ACCOUNTS => TOUCHED_ACCOUNTS |Set SetItem(ADDR) </accessedAccounts>
+
+    rule <k> #accessAccounts ADDRSET:Set => .K ... </k>
+         <accessedAccounts> TOUCHED_ACCOUNTS => TOUCHED_ACCOUNTS |Set ADDRSET </accessedAccounts>
+
+    syntax Set ::= #computeValidJumpDests(Bytes)            [klabel(#computeValidJumpDests),    function, memo, total]
+                 | #computeValidJumpDests(Bytes, Int, List) [klabel(#computeValidJumpDestsAux), function             ]
+ // ------------------------------------------------------------------------------------------------------------------
+    rule #computeValidJumpDests(PGM) => #computeValidJumpDests(PGM, 0, .List)
+
+    syntax Set ::= #computeValidJumpDestsWithinBound(Bytes, Int, List) [klabel(#computeValidJumpDestsWithinBound), function]
+ // ------------------------------------------------------------------------------------------------------------------------
+    rule #computeValidJumpDests(PGM, I, RESULT) => List2Set(RESULT) requires I >=Int lengthBytes(PGM)
+    rule #computeValidJumpDests(PGM, I, RESULT) => #computeValidJumpDestsWithinBound(PGM, I, RESULT) requires I <Int lengthBytes(PGM)
+
+    rule #computeValidJumpDestsWithinBound(PGM, I, RESULT) => #computeValidJumpDests(PGM, I +Int 1, RESULT ListItem(I)) requires PGM [ I ] ==Int 91
+    rule #computeValidJumpDestsWithinBound(PGM, I, RESULT) => #computeValidJumpDests(PGM, I +Int #widthOpCode(PGM [ I ]), RESULT) requires notBool PGM [ I ] ==Int 91
+
+
    syntax Int ::= #widthOpCode(Int) [klabel(#widthOpCode), function]
+ // -----------------------------------------------------------------
+    rule #widthOpCode(W) => W -Int 94 requires W >=Int 96 andBool W <=Int 127
+    rule #widthOpCode(_) => 1 [owise]
+
+    syntax KItem ::= "#return" Int Int
+ // ----------------------------------
+    rule [return.exception]:
+         <statusCode> _:ExceptionalStatusCode </statusCode>
+         <k> #halt ~> #return _ _
+          => #popCallStack ~> #popWorldState ~> 0 ~> #push
+         ...
+         </k>
+         <output> _ => .Bytes </output>
+
+    rule [return.revert]:
+         <statusCode> EVMC_REVERT </statusCode>
+         <k> #halt ~> #return RETSTART RETWIDTH
+          => #popCallStack ~> #popWorldState
+          ~> 0 ~> #push ~> #refund GAVAIL ~> #setLocalMem RETSTART RETWIDTH OUT
+         ...
+         </k>
+         <output> OUT </output>
+         <gas> GAVAIL </gas>
+
+    rule [return.success]:
+         <statusCode> EVMC_SUCCESS </statusCode>
+         <k> #halt ~> #return RETSTART RETWIDTH
+          => #popCallStack ~> #dropWorldState
+          ~> 1 ~> #push ~> #refund GAVAIL ~> #setLocalMem RETSTART RETWIDTH OUT
+         ...
+         </k>
+         <output> OUT </output>
+         <gas> GAVAIL </gas>
+
+    syntax InternalOp ::= "#refund" Gas
+                        | "#setLocalMem" Int Int Bytes
+ // --------------------------------------------------
+    rule [refund]: <k> #refund G:Gas => .K ... </k> <gas> GAVAIL => GAVAIL +Gas G </gas> <useGas> true </useGas>
+    rule [refund.noGas]: <k> #refund _ => .K ... </k> <useGas> false </useGas>
+
+
+    rule <k> #setLocalMem START WIDTH WS => .K ... </k>
+         <localMem> LM => LM [ START := #range(WS, 0, minInt(WIDTH, lengthBytes(WS))) ] </localMem>
+
+

Ethereum Network OpCodes

+

Call Operations

+

For each CALL* operation, we make a corresponding call to #call and a state-change to setup the custom parts of the calling environment.

+
    syntax CallOp ::= "CALL"
+ // ------------------------
+    rule [call]:
+         <k> CALL _GCAP ACCTTO VALUE ARGSTART ARGWIDTH RETSTART RETWIDTH
+          => #accessAccounts ACCTTO
+          ~> #checkCall ACCTFROM VALUE
+          ~> #call ACCTFROM ACCTTO ACCTTO VALUE VALUE #range(LM, ARGSTART, ARGWIDTH) false
+          ~> #return RETSTART RETWIDTH
+         ...
+         </k>
+         <id> ACCTFROM </id>
+         <localMem> LM </localMem>
+
+    syntax CallOp ::= "CALLCODE"
+ // ----------------------------
+    rule [callcode]:
+         <k> CALLCODE _GCAP ACCTTO VALUE ARGSTART ARGWIDTH RETSTART RETWIDTH
+          => #accessAccounts ACCTTO
+          ~> #checkCall ACCTFROM VALUE
+          ~> #call ACCTFROM ACCTFROM ACCTTO VALUE VALUE #range(LM, ARGSTART, ARGWIDTH) false
+          ~> #return RETSTART RETWIDTH
+         ...
+         </k>
+         <id> ACCTFROM </id>
+         <localMem> LM </localMem>
+
+    syntax CallSixOp ::= "DELEGATECALL"
+ // -----------------------------------
+    rule [delegatecall]:
+         <k> DELEGATECALL _GCAP ACCTTO ARGSTART ARGWIDTH RETSTART RETWIDTH
+          => #accessAccounts ACCTTO
+          ~> #checkCall ACCTFROM 0
+          ~> #call ACCTAPPFROM ACCTFROM ACCTTO 0 VALUE #range(LM, ARGSTART, ARGWIDTH) false
+          ~> #return RETSTART RETWIDTH
+         ...
+         </k>
+         <id> ACCTFROM </id>
+         <caller> ACCTAPPFROM </caller>
+         <callValue> VALUE </callValue>
+         <localMem> LM </localMem>
+
+    syntax CallSixOp ::= "STATICCALL"
+ // ---------------------------------
+    rule [staticcall]:
+         <k> STATICCALL _GCAP ACCTTO ARGSTART ARGWIDTH RETSTART RETWIDTH
+          => #accessAccounts ACCTTO
+          ~> #checkCall ACCTFROM 0
+          ~> #call ACCTFROM ACCTTO ACCTTO 0 0 #range(LM, ARGSTART, ARGWIDTH) true
+          ~> #return RETSTART RETWIDTH
+         ...
+         </k>
+         <id> ACCTFROM </id>
+         <localMem> LM </localMem>
+
+

Account Creation/Deletion

+
    +
  • #create____ transfers the endowment to the new account and triggers the execution of the initialization code.
  • +
  • #codeDeposit_ checks the result of initialization code and whether the code deposit can be paid, indicating an error if not.
  • +
  • #isValidCode_ checks if the code returned by the execution of the initialization code begins with a reserved byte. [EIP-3541]
  • +
  • #hasValidInitCode checks the length of the transaction data in a create transaction. [EIP-3860]
  • +
+
    syntax InternalOp ::= "#create"   Int Int Int Bytes
+                        | "#mkCreate" Int Int Int Bytes
+                        | "#incrementNonce" Int
+                        | "#checkCreate" Int Int
+ // --------------------------------------------
+    rule <k> #create ACCTFROM ACCTTO VALUE INITCODE
+          => #incrementNonce ACCTFROM
+          ~> #pushCallStack ~> #pushWorldState
+          ~> #newAccount ACCTTO
+          ~> #transferFunds ACCTFROM ACCTTO VALUE
+          ~> #mkCreate ACCTFROM ACCTTO VALUE INITCODE
+         ...
+         </k>
+
+    rule <k> #mkCreate ACCTFROM ACCTTO VALUE INITCODE
+          => #touchAccounts ACCTFROM ACCTTO ~> #accessAccounts ACCTFROM ACCTTO ~> #loadProgram INITCODE ~> #initVM ~> #execute
+         ...
+         </k>
+         <useGas> USEGAS </useGas>
+         <schedule> SCHED </schedule>
+         <id> _ => ACCTTO </id>
+         <gas> GAVAIL => #if USEGAS #then GCALL #else GAVAIL #fi </gas>
+         <callGas> GCALL => #if USEGAS #then 0 #else GCALL #fi </callGas>
+         <caller> _ => ACCTFROM </caller>
+         <callDepth> CD => CD +Int 1 </callDepth>
+         <callData> _ => .Bytes </callData>
+         <callValue> _ => VALUE </callValue>
+         <account>
+           <acctID> ACCTTO </acctID>
+           <nonce> NONCE => #if Gemptyisnonexistent << SCHED >> #then NONCE +Int 1 #else NONCE #fi </nonce>
+           ...
+         </account>
+
+    rule <k> #incrementNonce ACCT => .K ... </k>
+         <account>
+           <acctID> ACCT </acctID>
+           <nonce> NONCE => NONCE +Int 1 </nonce>
+           ...
+         </account>
+
+    syntax Bool ::= #hasValidInitCode ( Int , Schedule ) [klabel(#hasValidInitCode), function]
+ // ------------------------------------------------------------------------------------------
+    rule #hasValidInitCode(INITCODELEN, SCHED) => notBool Ghasmaxinitcodesize << SCHED >> orBool INITCODELEN <=Int maxInitCodeSize < SCHED >
+
+    syntax Bool ::= #isValidCode ( Bytes , Schedule ) [klabel(#isValidCode), function]
+ // ----------------------------------------------------------------------------------
+    rule #isValidCode( OUT ,  SCHED) => Ghasrejectedfirstbyte << SCHED >> impliesBool OUT[0] =/=Int 239 requires lengthBytes(OUT) >Int 0
+    rule #isValidCode(_OUT , _SCHED) => true                                                            [owise]
+
+    syntax KItem ::= "#codeDeposit" Int
+                   | "#mkCodeDeposit" Int
+                   | "#finishCodeDeposit" Int Bytes
+ // -----------------------------------------------
+    rule <statusCode> _:ExceptionalStatusCode </statusCode>
+         <k> #halt ~> #codeDeposit _ => #popCallStack ~> #popWorldState ~> 0 ~> #push ... </k> <output> _ => .Bytes </output>
+
+    rule <statusCode> EVMC_REVERT </statusCode>
+         <k> #halt ~> #codeDeposit _ => #popCallStack ~> #popWorldState ~> #refund GAVAIL ~> 0 ~> #push ... </k>
+         <gas> GAVAIL </gas>
+
+    rule <statusCode> EVMC_SUCCESS </statusCode>
+         <k> #halt ~> #codeDeposit ACCT => #mkCodeDeposit ACCT ... </k>
+
+    rule <k> #mkCodeDeposit ACCT
+          => Gcodedeposit < SCHED > *Int lengthBytes(OUT) ~> #deductGas
+          ~> #finishCodeDeposit ACCT OUT
+         ...
+         </k>
+         <schedule> SCHED </schedule>
+         <output> OUT => .Bytes </output>
+      requires lengthBytes(OUT) <=Int maxCodeSize < SCHED > andBool #isValidCode(OUT, SCHED)
+
+    rule <k> #mkCodeDeposit _ACCT => #popCallStack ~> #popWorldState ~> 0 ~> #push ... </k>
+         <schedule> SCHED </schedule>
+         <output> OUT => .Bytes </output>
+      requires notBool ( lengthBytes(OUT) <=Int maxCodeSize < SCHED > andBool #isValidCode(OUT, SCHED) )
+
+    rule <k> #finishCodeDeposit ACCT OUT
+          => #popCallStack ~> #dropWorldState
+          ~> #refund GAVAIL ~> ACCT ~> #push
+         ...
+         </k>
+         <gas> GAVAIL </gas>
+         <account>
+           <acctID> ACCT </acctID>
+           <code> _ => OUT </code>
+           ...
+         </account>
+
+    rule <statusCode> _:ExceptionalStatusCode </statusCode>
+         <k> #halt ~> #finishCodeDeposit ACCT _
+          => #popCallStack ~> #dropWorldState
+          ~> #refund GAVAIL ~> ACCT ~> #push
+         ...
+         </k>
+         <gas> GAVAIL </gas>
+         <schedule> FRONTIER </schedule>
+
+    rule <statusCode> _:ExceptionalStatusCode </statusCode>
+         <k> #halt ~> #finishCodeDeposit _ _ => #popCallStack ~> #popWorldState ~> 0 ~> #push ... </k>
+         <schedule> SCHED </schedule>
+      requires SCHED =/=K FRONTIER
+
+    rule <k> #checkCreate ACCT VALUE => #checkBalanceUnderflow ACCT VALUE ~> #checkDepthExceeded ~> #checkNonceExceeded ACCT ... </k>
+
+

CREATE will attempt to #create the account using the initialization code and cleans up the result with #codeDeposit.

+
    syntax TernStackOp ::= "CREATE"
+ // -------------------------------
+    rule [create-valid]:
+         <k> CREATE VALUE MEMSTART MEMWIDTH
+          => #accessAccounts #newAddr(ACCT, NONCE)
+          ~> #checkCreate ACCT VALUE
+          ~> #create ACCT #newAddr(ACCT, NONCE) VALUE #range(LM, MEMSTART, MEMWIDTH)
+          ~> #codeDeposit #newAddr(ACCT, NONCE)
+         ...
+         </k>
+         <id> ACCT </id>
+         <localMem> LM </localMem>
+         <account>
+           <acctID> ACCT </acctID>
+           <nonce> NONCE </nonce>
+           ...
+         </account>
+         <schedule> SCHED </schedule>
+      requires #hasValidInitCode(MEMWIDTH, SCHED)
+      [preserves-definedness]
+
+    rule [create-invalid]:
+         <k> CREATE _ _ _ => #end EVMC_OUT_OF_GAS ... </k> [owise]
+
+

CREATE2 will attempt to #create the account, but with the new scheme for choosing the account address.

+
    syntax QuadStackOp ::= "CREATE2"
+ // --------------------------------
+    rule [create2-valid]:
+         <k> CREATE2 VALUE MEMSTART MEMWIDTH SALT
+          => #accessAccounts #newAddr(ACCT, SALT, #range(LM, MEMSTART, MEMWIDTH))
+          ~> #checkCreate ACCT VALUE
+          ~> #create ACCT #newAddr(ACCT, SALT, #range(LM, MEMSTART, MEMWIDTH)) VALUE #range(LM, MEMSTART, MEMWIDTH)
+          ~> #codeDeposit #newAddr(ACCT, SALT, #range(LM, MEMSTART, MEMWIDTH))
+         ...
+         </k>
+         <id> ACCT </id>
+         <localMem> LM </localMem>
+         <schedule> SCHED </schedule>
+      requires #hasValidInitCode(MEMWIDTH, SCHED)
+
+    rule [create2-invalid]:
+         <k> CREATE2 _ _ _ _ => #end EVMC_OUT_OF_GAS ... </k> [owise]
+
+

SELFDESTRUCT marks the current account for deletion and transfers funds out of the current account. +Self destructing to yourself, unlike a regular transfer, destroys the balance in the account, irreparably losing it.

+
    syntax UnStackOp ::= "SELFDESTRUCT"
+ // -----------------------------------
+    rule <k> SELFDESTRUCT ACCTTO => #touchAccounts ACCT ACCTTO ~> #accessAccounts ACCTTO ~> #transferFunds ACCT ACCTTO BALFROM ~> #end EVMC_SUCCESS ... </k>
+         <id> ACCT </id>
+         <selfDestruct> SDS => SDS |Set SetItem(ACCT) </selfDestruct>
+         <account>
+           <acctID> ACCT </acctID>
+           <balance> BALFROM </balance>
+           ...
+         </account>
+         <output> _ => .Bytes </output>
+      requires ACCT =/=Int ACCTTO
+
+    rule <k> SELFDESTRUCT ACCT => #touchAccounts ACCT ~> #accessAccounts ACCT ~> #end EVMC_SUCCESS ... </k>
+         <id> ACCT </id>
+         <selfDestruct> SDS => SDS |Set SetItem(ACCT) </selfDestruct>
+         <account>
+           <acctID> ACCT </acctID>
+           <balance> _ => 0 </balance>
+           ...
+         </account>
+         <output> _ => .Bytes </output>
+
+

Precompiled Contracts

+
    +
  • #precompiled is a placeholder for the pre-compiled contracts of a given schedule. These contracts are located at contiguous addresses starting from 1.
  • +
  • #precompiledAccountsUB returns the highest address (upper bound) of the precompiled contract accounts
  • +
  • #precompiledAccountsSet returns the set of addresses of the precompiled contract accounts
  • +
+
    syntax NullStackOp   ::= PrecompiledOp
+    syntax PrecompiledOp ::= #precompiled ( Int ) [klabel(#precompiled), function]
+ // ------------------------------------------------------------------------------
+    rule #precompiled(1) => ECREC
+    rule #precompiled(2) => SHA256
+    rule #precompiled(3) => RIP160
+    rule #precompiled(4) => ID
+    rule #precompiled(5) => MODEXP
+    rule #precompiled(6) => ECADD
+    rule #precompiled(7) => ECMUL
+    rule #precompiled(8) => ECPAIRING
+    rule #precompiled(9) => BLAKE2F
+
+    syntax Int ::= #precompiledAccountsUB ( Schedule ) [klabel(#precompiledAccountsUB), function, total]
+ // ----------------------------------------------------------------------------------------------------
+    rule #precompiledAccountsUB(DEFAULT)           => 4
+    rule #precompiledAccountsUB(FRONTIER)          => #precompiledAccountsUB(DEFAULT)
+    rule #precompiledAccountsUB(HOMESTEAD)         => #precompiledAccountsUB(FRONTIER)
+    rule #precompiledAccountsUB(TANGERINE_WHISTLE) => #precompiledAccountsUB(HOMESTEAD)
+    rule #precompiledAccountsUB(SPURIOUS_DRAGON)   => #precompiledAccountsUB(TANGERINE_WHISTLE)
+    rule #precompiledAccountsUB(BYZANTIUM)         => 8
+    rule #precompiledAccountsUB(CONSTANTINOPLE)    => #precompiledAccountsUB(BYZANTIUM)
+    rule #precompiledAccountsUB(PETERSBURG)        => #precompiledAccountsUB(CONSTANTINOPLE)
+    rule #precompiledAccountsUB(ISTANBUL)          => 9
+    rule #precompiledAccountsUB(BERLIN)            => #precompiledAccountsUB(ISTANBUL)
+    rule #precompiledAccountsUB(LONDON)            => #precompiledAccountsUB(BERLIN)
+    rule #precompiledAccountsUB(MERGE)             => #precompiledAccountsUB(LONDON)
+    rule #precompiledAccountsUB(SHANGHAI)          => #precompiledAccountsUB(MERGE)
+
+
+    syntax Set ::= #precompiledAccountsSet    ( Schedule ) [klabel(#precompiledAccountsSet),    function, total]
+    syntax Set ::= #precompiledAccountsSetAux ( Int      ) [klabel(#precompiledAccountsSetAux), function, total]
+ // ------------------------------------------------------------------------------------------------------------
+    rule #precompiledAccountsSet(SCHED) => #precompiledAccountsSetAux(#precompiledAccountsUB(SCHED))
+
+    rule #precompiledAccountsSetAux(N)  => .Set requires N <=Int 0
+    rule #precompiledAccountsSetAux(N)  => SetItem(N) #precompiledAccountsSetAux(N -Int 1) [owise, preserves-definedness]
+
+
    +
  • ECREC performs ECDSA public key recovery.
  • +
  • SHA256 performs the SHA2-257 hash function.
  • +
  • RIP160 performs the RIPEMD-160 hash function.
  • +
  • ID is the identity function (copies input to output).
  • +
+
    syntax PrecompiledOp ::= "ECREC"
+ // --------------------------------
+    rule <k> ECREC => #end EVMC_SUCCESS ... </k>
+         <callData> DATA </callData>
+         <output> _ => #ecrec(#range(DATA, 0, 32), #range(DATA, 32, 32), #range(DATA, 64, 32), #range(DATA, 96, 32)) </output>
+
+    syntax Bytes ::= #ecrec ( Bytes , Bytes , Bytes , Bytes ) [klabel(#ecrec),    function, total, smtlib(ecrec)]
+                   | #ecrec ( Account )                       [klabel(#ecrecAux), function, total               ]
+ // -------------------------------------------------------------------------------------------------------------
+    rule [ecrec]: #ecrec(HASH, SIGV, SIGR, SIGS) => #ecrec(#sender(HASH, #asWord(SIGV), SIGR, SIGS)) [concrete]
+
+    rule #ecrec(.Account) => .Bytes
+    rule #ecrec(N:Int)    => #padToWidth(32, #asByteStack(N))
+
+    syntax PrecompiledOp ::= "SHA256"
+ // ---------------------------------
+    rule <k> SHA256 => #end EVMC_SUCCESS ... </k>
+         <callData> DATA </callData>
+         <output> _ => #parseHexBytes(Sha256(DATA)) </output>
+
+    syntax PrecompiledOp ::= "RIP160"
+ // ---------------------------------
+    rule <k> RIP160 => #end EVMC_SUCCESS ... </k>
+         <callData> DATA </callData>
+         <output> _ => #padToWidth(32, #parseHexBytes(RipEmd160(DATA))) </output>
+
+    syntax PrecompiledOp ::= "ID"
+ // -----------------------------
+    rule <k> ID => #end EVMC_SUCCESS ... </k>
+         <callData> DATA </callData>
+         <output> _ => DATA </output>
+
+    syntax PrecompiledOp ::= "MODEXP"
+ // ---------------------------------
+    rule <k> MODEXP => #end EVMC_SUCCESS ... </k>
+         <callData> DATA </callData>
+         <output> _ => #modexp1(#asWord(#range(DATA, 0, 32)), #asWord(#range(DATA, 32, 32)), #asWord(#range(DATA, 64, 32)), #range(DATA, 96, maxInt(0, lengthBytes(DATA) -Int 96))) </output>
+
+    syntax Bytes ::= #modexp1 ( Int , Int , Int , Bytes ) [klabel(#modexp1), function]
+                   | #modexp2 ( Int , Int , Int , Bytes ) [klabel(#modexp2), function]
+                   | #modexp3 ( Int , Int , Int , Bytes ) [klabel(#modexp3), function]
+                   | #modexp4 ( Int , Int , Int )         [klabel(#modexp4), function]
+ // ----------------------------------------------------------------------------------
+    rule #modexp1(BASELEN, EXPLEN,   MODLEN, DATA) => #modexp2(#asInteger(#range(DATA, 0, BASELEN)), EXPLEN, MODLEN, #range(DATA, BASELEN, maxInt(0, lengthBytes(DATA) -Int BASELEN))) requires MODLEN =/=Int 0
+    rule #modexp1(_,       _,        0,      _)    => .Bytes
+    rule #modexp2(BASE,    EXPLEN,   MODLEN, DATA) => #modexp3(BASE, #asInteger(#range(DATA, 0, EXPLEN)), MODLEN, #range(DATA, EXPLEN, maxInt(0, lengthBytes(DATA) -Int EXPLEN)))
+    rule #modexp3(BASE,    EXPONENT, MODLEN, DATA) => #padToWidth(MODLEN, #modexp4(BASE, EXPONENT, #asInteger(#range(DATA, 0, MODLEN))))
+    rule #modexp4(BASE,    EXPONENT, MODULUS)      => #asByteStack(powmod(BASE, EXPONENT, MODULUS))
+
+    syntax PrecompiledOp ::= "ECADD"
+ // --------------------------------
+    rule <k> ECADD => #ecadd((#asWord(#range(DATA, 0, 32)), #asWord(#range(DATA, 32, 32))), (#asWord(#range(DATA, 64, 32)), #asWord(#range(DATA, 96, 32)))) ... </k>
+         <callData> DATA </callData>
+
+    syntax InternalOp ::= #ecadd(G1Point, G1Point) [klabel(#ecadd)]
+ // ---------------------------------------------------------------
+    rule <k> #ecadd(P1, P2) => #end EVMC_PRECOMPILE_FAILURE ... </k>
+      requires notBool isValidPoint(P1) orBool notBool isValidPoint(P2)
+    rule <k> #ecadd(P1, P2) => #end EVMC_SUCCESS ... </k> <output> _ => #point(BN128Add(P1, P2)) </output>
+      requires isValidPoint(P1) andBool isValidPoint(P2)
+
+    syntax PrecompiledOp ::= "ECMUL"
+ // --------------------------------
+    rule <k> ECMUL => #ecmul((#asWord(#range(DATA, 0, 32)), #asWord(#range(DATA, 32, 32))), #asWord(#range(DATA, 64, 32))) ... </k>
+         <callData> DATA </callData>
+
+    syntax InternalOp ::= #ecmul(G1Point, Int) [klabel(#ecmul)]
+ // -----------------------------------------------------------
+    rule <k> #ecmul(P, _S) => #end EVMC_PRECOMPILE_FAILURE ... </k>
+      requires notBool isValidPoint(P)
+    rule <k> #ecmul(P,  S) => #end EVMC_SUCCESS ... </k> <output> _ => #point(BN128Mul(P, S)) </output>
+      requires isValidPoint(P)
+
+    syntax Bytes ::= #point ( G1Point ) [klabel(#point), function]
+ // --------------------------------------------------------------
+    rule #point((X, Y)) => #padToWidth(32, #asByteStack(X)) +Bytes #padToWidth(32, #asByteStack(Y))
+
+    syntax PrecompiledOp ::= "ECPAIRING"
+ // ------------------------------------
+    rule <k> ECPAIRING => #ecpairing(.List, .List, 0, DATA, lengthBytes(DATA)) ... </k>
+         <callData> DATA </callData>
+      requires lengthBytes(DATA) modInt 192 ==Int 0
+    rule <k> ECPAIRING => #end EVMC_PRECOMPILE_FAILURE ... </k>
+         <callData> DATA </callData>
+      requires lengthBytes(DATA) modInt 192 =/=Int 0
+
+    syntax InternalOp ::= #ecpairing(List, List, Int, Bytes, Int) [klabel(#ecpairing)]
+ // ----------------------------------------------------------------------------------
+    rule <k> (.K => #checkPoint) ~> #ecpairing((.List => ListItem((#asWord(#range(DATA, I, 32)), #asWord(#range(DATA, I +Int 32, 32))))) _, (.List => ListItem((#asWord(#range(DATA, I +Int 96, 32)) x #asWord(#range(DATA, I +Int 64, 32)) , #asWord(#range(DATA, I +Int 160, 32)) x #asWord(#range(DATA, I +Int 128, 32))))) _, I => I +Int 192, DATA, LEN) ... </k>
+      requires I =/=Int LEN
+    rule <k> #ecpairing(A, B, LEN, _, LEN) => #end EVMC_SUCCESS ... </k>
+         <output> _ => #padToWidth(32, #asByteStack(bool2Word(BN128AtePairing(A, B)))) </output>
+
+    syntax InternalOp ::= "#checkPoint"
+ // -----------------------------------
+    rule <k> (#checkPoint => .K) ~> #ecpairing(ListItem(AK::G1Point) _, ListItem(BK::G2Point) _, _, _, _) ... </k>
+      requires isValidPoint(AK) andBool isValidPoint(BK)
+    rule <k> #checkPoint ~> #ecpairing(ListItem(AK::G1Point) _, ListItem(BK::G2Point) _, _, _, _) => #end EVMC_PRECOMPILE_FAILURE ... </k>
+      requires notBool isValidPoint(AK) orBool notBool isValidPoint(BK)
+
+    syntax PrecompiledOp ::= "BLAKE2F"
+ // ----------------------------------
+    rule <k> BLAKE2F => #end EVMC_SUCCESS ... </k>
+         <output> _ => #parseByteStack( Blake2Compress( DATA ) ) </output>
+         <callData> DATA </callData>
+      requires lengthBytes( DATA ) ==Int 213
+       andBool DATA[212] <=Int 1
+
+    rule <k> BLAKE2F => #end EVMC_PRECOMPILE_FAILURE ... </k>
+         <callData> DATA </callData>
+      requires lengthBytes( DATA ) ==Int 213
+       andBool DATA[212] >Int 1
+
+    rule <k> BLAKE2F => #end EVMC_PRECOMPILE_FAILURE ... </k>
+         <callData> DATA </callData>
+      requires lengthBytes( DATA ) =/=Int 213
+
+

Ethereum Gas Calculation

+

Overall Gas

+
    +
  • #gas calculates how much gas this operation costs, and takes into account the memory consumed.
  • +
  • #deductGas is used to check that there won't be a gas underflow (throwing EVMC_OUT_OF_GAS if so), and deducts the gas if not.
  • +
  • #deductMemory checks that access to memory stay within sensible bounds (and deducts the correct amount of gas for it), throwing EVMC_INVALID_MEMORY_ACCESS if bad access happens.
  • +
+
    syntax InternalOp ::= "#gas" "[" OpCode "," OpCode "]"
+ // ------------------------------------------------------
+    rule <k> #gas [ OP , AOP ]
+          => #memory [ OP , AOP ]
+          ~> #gas [ AOP ]
+          ~> #access [ OP , AOP ]
+         ...
+        </k>
+        <useGas> true </useGas>
+
+    rule <k> #gas [ _ , _ ] => .K ...  </k> <useGas> false </useGas>
+
+    rule <k> #gas [ OP ] => #gasExec(SCHED, OP) ~> #deductGas ... </k>
+         <schedule> SCHED </schedule>
+
+    rule <k> #memory [ OP , AOP ] => #memory(AOP, MU) ~> #deductMemory ... </k>
+         <memoryUsed> MU </memoryUsed>
+      requires #usesMemory(OP)
+
+   rule <k> #memory [ _ , _ ] => .K ... </k> [owise]
+
+    syntax InternalOp ::= "#gas"    "[" OpCode "]" | "#deductGas" | "#deductMemoryGas"
+                        | "#memory" "[" OpCode "," OpCode "]" | "#deductMemory"
+ // ---------------------------------------------------------------------------
+    rule <k> MU':Int ~> #deductMemory => (Cmem(SCHED, MU') -Int Cmem(SCHED, MU)) ~> #deductMemoryGas ... </k>
+         <memoryUsed> MU => MU' </memoryUsed> <schedule> SCHED </schedule>
+
+    rule <k> _G:Gas ~> (#deductMemoryGas => #deductGas)   ... </k> //Required for verification
+    rule <k>  G:Gas ~> #deductGas => #end EVMC_OUT_OF_GAS ... </k> <gas> GAVAIL:Gas                  </gas> <useGas> true </useGas> requires GAVAIL <Gas G
+    rule <k>  G:Gas ~> #deductGas => .K                    ... </k> <gas> GAVAIL:Gas => GAVAIL -Gas G </gas> <useGas> true </useGas> requires G <=Gas GAVAIL
+    rule <k>  _:Gas ~> #deductGas => .K                    ... </k> <useGas> false </useGas>
+
+    syntax Bool ::= #inStorage     ( Map   , Account , Int ) [klabel(#inStorage), function, total]
+                  | #inStorageAux1 ( KItem ,           Int ) [klabel(#inStorageAux1), function, total]
+                  | #inStorageAux2 ( Set   ,           Int ) [klabel(#inStorageAux2), function, total]
+ // --------------------------------------------------------------------------------------------------
+    rule #inStorage(TS, ACCT, KEY) => #inStorageAux1(TS[ACCT], KEY) requires ACCT in_keys(TS)
+    rule #inStorage(_, _, _)       => false                         [owise]
+
+    rule #inStorageAux1(KEYS:Set, KEY) => #inStorageAux2(KEYS, KEY)
+    rule #inStorageAux1(_, _)          => false                     [owise]
+
+    rule #inStorageAux2(KEYS, KEY) => true  requires KEY in KEYS
+    rule #inStorageAux2(_, _)      => false [owise]
+
+

Memory Consumption

+

Memory consumed is tracked to determine the appropriate amount of gas to charge for each operation. +In the YellowPaper, each opcode is defined to consume zero gas unless specified otherwise next to the semantics of the opcode (appendix H).

+
    +
  • #memory computes the new memory size given the old size and next operator (with its arguments).
  • +
  • #memoryUsageUpdate is the function M in appendix H of the YellowPaper which helps track the memory used.
  • +
+
    syntax Int ::= #memory ( OpCode , Int ) [klabel(#memory), function, total]
+ // --------------------------------------------------------------------------
+    rule #memory ( MLOAD INDEX     , MU ) => #memoryUsageUpdate(MU, INDEX, 32)
+    rule #memory ( MSTORE INDEX _  , MU ) => #memoryUsageUpdate(MU, INDEX, 32)
+    rule #memory ( MSTORE8 INDEX _ , MU ) => #memoryUsageUpdate(MU, INDEX, 1)
+
+    rule #memory ( SHA3 START WIDTH   , MU ) => #memoryUsageUpdate(MU, START, WIDTH)
+    rule #memory ( LOG(_) START WIDTH , MU ) => #memoryUsageUpdate(MU, START, WIDTH)
+
+    rule #memory ( CODECOPY START _ WIDTH       , MU ) => #memoryUsageUpdate(MU, START, WIDTH)
+    rule #memory ( EXTCODECOPY _ START _ WIDTH  , MU ) => #memoryUsageUpdate(MU, START, WIDTH)
+    rule #memory ( CALLDATACOPY START _ WIDTH   , MU ) => #memoryUsageUpdate(MU, START, WIDTH)
+    rule #memory ( RETURNDATACOPY START _ WIDTH , MU ) => #memoryUsageUpdate(MU, START, WIDTH)
+
+    rule #memory ( CREATE  _ START WIDTH   , MU ) => #memoryUsageUpdate(MU, START, WIDTH)
+    rule #memory ( CREATE2 _ START WIDTH _ , MU ) => #memoryUsageUpdate(MU, START, WIDTH)
+    rule #memory ( RETURN START WIDTH      , MU ) => #memoryUsageUpdate(MU, START, WIDTH)
+    rule #memory ( REVERT START WIDTH      , MU ) => #memoryUsageUpdate(MU, START, WIDTH)
+
+    rule #memory ( _COP:CallOp     _ _ _ ARGSTART ARGWIDTH RETSTART RETWIDTH , MU ) => #memoryUsageUpdate(#memoryUsageUpdate(MU, ARGSTART, ARGWIDTH), RETSTART, RETWIDTH)
+    rule #memory ( _CSOP:CallSixOp _ _   ARGSTART ARGWIDTH RETSTART RETWIDTH , MU ) => #memoryUsageUpdate(#memoryUsageUpdate(MU, ARGSTART, ARGWIDTH), RETSTART, RETWIDTH)
+
+    rule #memory ( _ , MU ) => MU [owise]
+
+    syntax Bool ::= #usesMemory ( OpCode ) [klabel(#usesMemory), function, total]
+ // -----------------------------------------------------------------------------
+    rule #usesMemory(_:LogOp)        => true
+    rule #usesMemory(_:CallOp)       => true
+    rule #usesMemory(_:CallSixOp)    => true
+    rule #usesMemory(MLOAD)          => true
+    rule #usesMemory(MSTORE)         => true
+    rule #usesMemory(MSTORE8)        => true
+    rule #usesMemory(SHA3)           => true
+    rule #usesMemory(CODECOPY)       => true
+    rule #usesMemory(EXTCODECOPY)    => true
+    rule #usesMemory(CALLDATACOPY)   => true
+    rule #usesMemory(RETURNDATACOPY) => true
+    rule #usesMemory(CREATE)         => true
+    rule #usesMemory(CREATE2)        => true
+    rule #usesMemory(RETURN)         => true
+    rule #usesMemory(REVERT)         => true
+    rule #usesMemory(_)              => false [owise]
+
+    syntax Int ::= #memoryUsageUpdate ( Int , Int , Int ) [klabel(#memoryUsageUpdate), function, total]
+ // ---------------------------------------------------------------------------------------------------
+    rule #memoryUsageUpdate(MU,     _, WIDTH) => MU                                       requires notBool 0 <Int WIDTH [concrete]
+    rule #memoryUsageUpdate(MU, START, WIDTH) => maxInt(MU, (START +Int WIDTH) up/Int 32) requires         0 <Int WIDTH [concrete]
+
+

Access List Gas

+
    syntax Bool ::= #usesAccessList ( OpCode ) [klabel(#usesAccessList), function, total]
+ // -------------------------------------------------------------------------------------
+    rule #usesAccessList(OP)     => true  requires isAddr1Op(OP)
+    rule #usesAccessList(OP)     => true  requires isAddr2Op(OP)
+    rule #usesAccessList(SLOAD)  => true
+    rule #usesAccessList(SSTORE) => true
+    rule #usesAccessList(_)      => false [owise]
+
+    syntax InternalOp ::= "#access" "[" OpCode "," OpCode "]"
+ // ---------------------------------------------------------
+    rule <k> #access [ OP , AOP ] => #gasAccess(SCHED, AOP) ~> #deductGas ... </k>
+         <schedule> SCHED </schedule>
+      requires Ghasaccesslist << SCHED >> andBool #usesAccessList(OP)
+
+    rule <k> #access [ _ , _ ] => .K ... </k> <schedule> _ </schedule> [owise]
+
+    syntax InternalOp ::= #gasAccess ( Schedule, OpCode ) [klabel(#gasAccess)]
+ // --------------------------------------------------------------------------
+    rule <k> #gasAccess(SCHED, EXTCODESIZE ACCT)       => Caddraccess(SCHED, ACCT in ACCTS)                                                                   ... </k> <accessedAccounts> ACCTS </accessedAccounts>
+    rule <k> #gasAccess(SCHED, EXTCODECOPY ACCT _ _ _) => Caddraccess(SCHED, ACCT in ACCTS)                                                                   ... </k> <accessedAccounts> ACCTS </accessedAccounts>
+    rule <k> #gasAccess(SCHED, EXTCODEHASH ACCT)       => Caddraccess(SCHED, ACCT in ACCTS)                                                                   ... </k> <accessedAccounts> ACCTS </accessedAccounts>
+    rule <k> #gasAccess(SCHED, BALANCE ACCT)           => Caddraccess(SCHED, ACCT in ACCTS)                                                                   ... </k> <accessedAccounts> ACCTS </accessedAccounts>
+    rule <k> #gasAccess(SCHED, SELFDESTRUCT ACCT)      => #if ACCT in ACCTS #then 0 #else Gcoldaccountaccess < SCHED > #fi                                    ... </k> <accessedAccounts> ACCTS </accessedAccounts>
+    rule <k> #gasAccess(_    , SLOAD INDEX )           => #accessStorage ACCT INDEX ~> 0                                                                      ... </k> <id> ACCT </id>
+    rule <k> #gasAccess(SCHED, SSTORE INDEX _)         => #accessStorage ACCT INDEX ~> #if #inStorage(TS, ACCT, INDEX) #then 0 #else Gcoldsload < SCHED > #fi ... </k> <id> ACCT </id> <accessedStorage> TS </accessedStorage>
+    rule <k> #gasAccess(_    , _ )                     => 0                                                                                                   ... </k> [owise]
+
+
+

Execution Gas

+

The intrinsic gas calculation mirrors the style of the YellowPaper (appendix H).

+
    +
  • #gasExec loads all the relevant surrounding state and uses that to compute the intrinsic execution gas of each opcode.
  • +
+
    syntax InternalOp ::= #gasExec ( Schedule , OpCode ) [klabel(#gasExec)]
+ // -----------------------------------------------------------------------
+    rule <k> #gasExec(SCHED, SSTORE INDEX NEW) => Csstore(SCHED, NEW, #lookup(STORAGE, INDEX), #lookup(ORIGSTORAGE, INDEX)) ... </k>
+         <id> ACCT </id>
+         <gas> GAVAIL </gas>
+         <account>
+           <acctID> ACCT </acctID>
+           <storage> STORAGE </storage>
+           <origStorage> ORIGSTORAGE </origStorage>
+           ...
+         </account>
+         <refund> R => R +Int Rsstore(SCHED, NEW, #lookup(STORAGE, INDEX), #lookup(ORIGSTORAGE, INDEX)) </refund>
+      requires notBool Ghassstorestipend << SCHED >>
+        orBool notBool GAVAIL <=Gas Gcallstipend < SCHED >
+
+    rule <k> #gasExec(SCHED, SSTORE _ _ ) => #end EVMC_OUT_OF_GAS ... </k>
+         <gas> GAVAIL </gas>
+      requires Ghassstorestipend << SCHED >>
+       andBool GAVAIL <=Gas Gcallstipend < SCHED >
+
+    rule <k> #gasExec(SCHED, EXP _ W1) => Gexp < SCHED > ... </k>                                                         requires W1 <=Int 0
+    rule <k> #gasExec(SCHED, EXP _ W1) => Gexp < SCHED > +Int (Gexpbyte < SCHED > *Int (1 +Int (log256Int(W1)))) ... </k> requires 0 <Int W1 [preserves-definedness]
+
+    rule <k> #gasExec(SCHED, CALLDATACOPY    _ _ WIDTH) => Gverylow < SCHED > +Int (Gcopy < SCHED > *Int (WIDTH up/Int 32)) ... </k>
+    rule <k> #gasExec(SCHED, RETURNDATACOPY  _ _ WIDTH) => Gverylow < SCHED > +Int (Gcopy < SCHED > *Int (WIDTH up/Int 32)) ... </k>
+    rule <k> #gasExec(SCHED, CODECOPY        _ _ WIDTH) => Gverylow < SCHED > +Int (Gcopy < SCHED > *Int (WIDTH up/Int 32)) ... </k>
+
+    rule <k> #gasExec(SCHED, LOG(N) _ WIDTH) => (Glog < SCHED > +Int (Glogdata < SCHED > *Int WIDTH) +Int (N *Int Glogtopic < SCHED >)) ... </k>
+
+    rule <k> #gasExec(SCHED, CALL GCAP ACCTTO VALUE _ _ _ _)
+          => Ccallgas(SCHED, #accountNonexistent(ACCTTO), GCAP, GAVAIL, VALUE, ACCTTO in ACCTS) ~> #allocateCallGas
+          ~> Ccall(SCHED, #accountNonexistent(ACCTTO), GCAP, GAVAIL, VALUE, ACCTTO in ACCTS)
+         ...
+         </k>
+         <gas> GAVAIL </gas>
+         <accessedAccounts> ACCTS </accessedAccounts>
+
+    rule <k> #gasExec(SCHED, CALLCODE GCAP ACCTTO VALUE _ _ _ _)
+          => Ccallgas(SCHED, #accountNonexistent(ACCTFROM), GCAP, GAVAIL, VALUE, ACCTTO in ACCTS) ~> #allocateCallGas
+          ~> Ccall(SCHED, #accountNonexistent(ACCTFROM), GCAP, GAVAIL, VALUE, ACCTTO in ACCTS)
+         ...
+         </k>
+         <id> ACCTFROM </id>
+         <gas> GAVAIL </gas>
+         <accessedAccounts> ACCTS </accessedAccounts>
+
+    rule <k> #gasExec(SCHED, DELEGATECALL GCAP ACCTTO _ _ _ _)
+          => Ccallgas(SCHED, #accountNonexistent(ACCTFROM), GCAP, GAVAIL, 0, ACCTTO in ACCTS) ~> #allocateCallGas
+          ~> Ccall(SCHED, #accountNonexistent(ACCTFROM), GCAP, GAVAIL, 0, ACCTTO in ACCTS)
+         ...
+         </k>
+         <id> ACCTFROM </id>
+         <gas> GAVAIL </gas>
+         <accessedAccounts> ACCTS </accessedAccounts>
+
+    rule <k> #gasExec(SCHED, STATICCALL GCAP ACCTTO _ _ _ _)
+          => Ccallgas(SCHED, #accountNonexistent(ACCTTO), GCAP, GAVAIL, 0, ACCTTO in ACCTS) ~> #allocateCallGas
+          ~> Ccall(SCHED, #accountNonexistent(ACCTTO), GCAP, GAVAIL, 0, ACCTTO in ACCTS)
+         ...
+         </k>
+         <gas> GAVAIL </gas>
+         <accessedAccounts> ACCTS </accessedAccounts>
+
+    rule <k> #gasExec(SCHED, SELFDESTRUCT ACCTTO) => Cselfdestruct(SCHED, #accountNonexistent(ACCTTO), BAL) ... </k>
+         <id> ACCTFROM </id>
+         <selfDestruct> SDS </selfDestruct>
+         <refund> RF => #if ACCTFROM in SDS #then RF #else RF +Word Rselfdestruct < SCHED > #fi </refund>
+         <account>
+           <acctID> ACCTFROM </acctID>
+           <balance> BAL </balance>
+           ...
+         </account>
+
+    rule <k> #gasExec(SCHED, CREATE _ _ WIDTH)
+          => Gcreate < SCHED > +Int Cinitcode(SCHED, WIDTH) ~> #deductGas
+          ~> #allocateCreateGas ~> 0
+         ...
+         </k>
+
+    rule <k> #gasExec(SCHED, CREATE2 _ _ WIDTH _)
+          => Gcreate < SCHED > +Int Gsha3word < SCHED > *Int (WIDTH up/Int 32) +Int Cinitcode(SCHED, WIDTH) ~> #deductGas
+          ~> #allocateCreateGas ~> 0
+         ...
+         </k>
+
+    rule <k> #gasExec(SCHED, SHA3 _ WIDTH) => Gsha3 < SCHED > +Int (Gsha3word < SCHED > *Int (WIDTH up/Int 32)) ... </k>
+
+    rule <k> #gasExec(SCHED, JUMPDEST)    => Gjumpdest < SCHED >                        ... </k>
+    rule <k> #gasExec(SCHED, SLOAD INDEX) => Csload(SCHED, #inStorage(TS, ACCT, INDEX)) ... </k>
+         <id> ACCT </id>
+         <accessedStorage> TS </accessedStorage>
+
+    // Wzero
+    rule <k> #gasExec(SCHED, STOP)       => Gzero < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, RETURN _ _) => Gzero < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, REVERT _ _) => Gzero < SCHED > ... </k>
+
+    // Wbase
+    rule <k> #gasExec(SCHED, ADDRESS)        => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, ORIGIN)         => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, CALLER)         => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, CALLVALUE)      => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, CALLDATASIZE)   => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, RETURNDATASIZE) => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, CODESIZE)       => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, GASPRICE)       => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, COINBASE)       => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, TIMESTAMP)      => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, NUMBER)         => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, DIFFICULTY)     => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, PREVRANDAO)     => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, GASLIMIT)       => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, BASEFEE)        => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, POP _)          => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, PC)             => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, PUSHZERO)       => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, MSIZE)          => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, GAS)            => Gbase < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, CHAINID)        => Gbase < SCHED > ... </k>
+
+    // Wverylow
+    rule <k> #gasExec(SCHED, ADD _ _)        => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, SUB _ _)        => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, NOT _)          => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, LT _ _)         => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, GT _ _)         => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, SLT _ _)        => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, SGT _ _)        => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, EQ _ _)         => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, ISZERO _)       => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, AND _ _)        => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, EVMOR _ _)      => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, XOR _ _)        => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, BYTE _ _)       => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, SHL _ _)        => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, SHR _ _)        => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, SAR _ _)        => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, CALLDATALOAD _) => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, MLOAD _)        => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, MSTORE _ _)     => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, MSTORE8 _ _)    => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, PUSH(_))        => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, DUP(_) _)       => Gverylow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, SWAP(_) _)      => Gverylow < SCHED > ... </k>
+
+    // Wlow
+    rule <k> #gasExec(SCHED, MUL _ _)        => Glow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, DIV _ _)        => Glow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, SDIV _ _)       => Glow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, MOD _ _)        => Glow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, SMOD _ _)       => Glow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, SIGNEXTEND _ _) => Glow < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, SELFBALANCE)    => Glow < SCHED > ... </k>
+
+    // Wmid
+    rule <k> #gasExec(SCHED, ADDMOD _ _ _) => Gmid < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, MULMOD _ _ _) => Gmid < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, JUMP _) => Gmid < SCHED > ... </k>
+
+    // Whigh
+    rule <k> #gasExec(SCHED, JUMPI _ _) => Ghigh < SCHED > ... </k>
+
+    rule <k> #gasExec(SCHED, EXTCODECOPY _ _ _ WIDTH) => Cextcodecopy(SCHED, WIDTH) ... </k>
+    rule <k> #gasExec(SCHED, EXTCODESIZE _)           => Cextcodesize(SCHED)        ... </k>
+    rule <k> #gasExec(SCHED, BALANCE _)               => Cbalance(SCHED)            ... </k>
+    rule <k> #gasExec(SCHED, EXTCODEHASH _)           => Cextcodehash(SCHED)        ... </k>
+    rule <k> #gasExec(SCHED, BLOCKHASH _)             => Gblockhash < SCHED >       ... </k>
+
+    // Precompiled
+    rule <k> #gasExec(_, ECREC)  => 3000 ... </k>
+    rule <k> #gasExec(_, SHA256) =>  60 +Int  12 *Int (lengthBytes(DATA) up/Int 32) ... </k> <callData> DATA </callData>
+    rule <k> #gasExec(_, RIP160) => 600 +Int 120 *Int (lengthBytes(DATA) up/Int 32) ... </k> <callData> DATA </callData>
+    rule <k> #gasExec(_, ID)     =>  15 +Int   3 *Int (lengthBytes(DATA) up/Int 32) ... </k> <callData> DATA </callData>
+
+    rule <k> #gasExec(SCHED, MODEXP) => Cmodexp(SCHED, DATA, #asWord(#range(DATA, 0, 32) ), #asWord(#range(DATA, 32, 32)), #asWord(#range(DATA, 64, 32))) ... </k>
+         <callData> DATA </callData>
+
+    rule <k> #gasExec(SCHED, ECADD)     => Gecadd < SCHED>  ... </k>
+    rule <k> #gasExec(SCHED, ECMUL)     => Gecmul < SCHED > ... </k>
+    rule <k> #gasExec(SCHED, ECPAIRING) => Gecpairconst < SCHED > +Int (lengthBytes(DATA) /Int 192) *Int Gecpaircoeff < SCHED > ... </k> <callData> DATA </callData>
+    rule <k> #gasExec(SCHED, BLAKE2F)   => Gfround < SCHED > *Int #asWord(#range(DATA, 0, 4) ) ... </k> <callData> DATA </callData>
+
+    syntax InternalOp ::= "#allocateCallGas"
+ // ----------------------------------------
+    rule <k> GCALL:Gas ~> #allocateCallGas => .K ... </k>
+         <callGas> _ => GCALL </callGas>
+
+    syntax InternalOp ::= "#allocateCreateGas"
+ // ------------------------------------------
+    rule <schedule> SCHED </schedule>
+         <k> #allocateCreateGas => .K ... </k>
+         <gas>     GAVAIL => #if Gstaticcalldepth << SCHED >> #then 0      #else GAVAIL /Gas 64      #fi </gas>
+         <callGas> _      => #if Gstaticcalldepth << SCHED >> #then GAVAIL #else #allBut64th(GAVAIL) #fi </callGas>
+      [preserves-definedness]
+
+

There are several helpers for calculating gas (most of them also specified in the YellowPaper).

+
    syntax Exp     ::= Int | Gas
+    syntax KResult ::= Int
+    syntax Exp ::= Ccall         ( Schedule , BExp , Gas , Gas , Int , Bool ) [klabel(Ccall), strict(2)]
+                 | Ccallgas      ( Schedule , BExp , Gas , Gas , Int , Bool ) [klabel(Ccallgas), strict(2)]
+                 | Cselfdestruct ( Schedule , BExp , Int )                    [klabel(Cselfdestruct), strict(2)]
+ // ------------------------------------------------------------------------------------------------------------
+    rule <k> Ccall(SCHED, ISEMPTY:Bool, GCAP, GAVAIL, VALUE, ISWARM)
+          => Cextra(SCHED, ISEMPTY, VALUE, ISWARM) +Gas Cgascap(SCHED, GCAP, GAVAIL, Cextra(SCHED, ISEMPTY, VALUE, ISWARM)) ... </k>
+
+    rule <k> Ccallgas(SCHED, ISEMPTY:Bool, GCAP, GAVAIL, VALUE, ISWARM)
+          => Cgascap(SCHED, GCAP, GAVAIL, Cextra(SCHED, ISEMPTY, VALUE, ISWARM)) +Gas #if VALUE ==Int 0 #then 0 #else Gcallstipend < SCHED > #fi ... </k>
+
+    rule <k> Cselfdestruct(SCHED, ISEMPTY:Bool, BAL)
+          => Gselfdestruct < SCHED > +Int Cnew(SCHED, ISEMPTY andBool Gselfdestructnewaccount << SCHED >>, BAL) ... </k>
+
+    syntax BExp    ::= Bool
+    syntax KResult ::= Bool
+    syntax BExp ::= #accountNonexistent ( Int ) [klabel(#accountNonexistent)]
+ // -------------------------------------------------------------------------
+    rule <k> #accountNonexistent(ACCT) => #accountEmpty(CODE, NONCE, BAL) andBool Gemptyisnonexistent << SCHED >> ... </k>
+         <schedule> SCHED </schedule>
+         <account>
+           <acctID>  ACCT  </acctID>
+           <balance> BAL   </balance>
+           <nonce>   NONCE </nonce>
+           <code>    CODE  </code>
+           ...
+         </account>
+
+   rule <k> #accountNonexistent(_) => true ... </k> [owise]
+
+

EVM Program Representations

+

EVM programs are represented algebraically in K, but programs can load and manipulate program data directly. +The opcodes CODECOPY and EXTCODECOPY rely on the assembled form of the programs being present. +The opcode CREATE relies on being able to interperet EVM data as a program.

+

This is a program representation dependence, which we might want to avoid. +Perhaps the only program representation dependence we should have is the hash of the program; doing so achieves:

+
    +
  • Program representation independence (different analysis tools on the language don't have to ensure they have a common representation of programs, just a common interperetation of the data-files holding programs).
  • +
  • Programming language independence (we wouldn't even have to commit to a particular language or interperetation of the data-file).
  • +
  • Only depending on the hash allows us to know that we have exactly the correct data-file (program), and nothing more.
  • +
+

Disassembler

+

After interpreting the strings representing programs as a WordStack, it should be changed into an OpCodes for use by the EVM semantics.

+
    +
  • #dasmOpCode interperets a Int as an OpCode.
  • +
+
    syntax OpCode ::= #dasmOpCode ( Int , Schedule ) [klabel(#dasmOpCode), function, memo, total]
+ // ---------------------------------------------------------------------------------------------
+    rule #dasmOpCode(   0,     _ ) => STOP
+    rule #dasmOpCode(   1,     _ ) => ADD
+    rule #dasmOpCode(   2,     _ ) => MUL
+    rule #dasmOpCode(   3,     _ ) => SUB
+    rule #dasmOpCode(   4,     _ ) => DIV
+    rule #dasmOpCode(   5,     _ ) => SDIV
+    rule #dasmOpCode(   6,     _ ) => MOD
+    rule #dasmOpCode(   7,     _ ) => SMOD
+    rule #dasmOpCode(   8,     _ ) => ADDMOD
+    rule #dasmOpCode(   9,     _ ) => MULMOD
+    rule #dasmOpCode(  10,     _ ) => EXP
+    rule #dasmOpCode(  11,     _ ) => SIGNEXTEND
+    rule #dasmOpCode(  16,     _ ) => LT
+    rule #dasmOpCode(  17,     _ ) => GT
+    rule #dasmOpCode(  18,     _ ) => SLT
+    rule #dasmOpCode(  19,     _ ) => SGT
+    rule #dasmOpCode(  20,     _ ) => EQ
+    rule #dasmOpCode(  21,     _ ) => ISZERO
+    rule #dasmOpCode(  22,     _ ) => AND
+    rule #dasmOpCode(  23,     _ ) => EVMOR
+    rule #dasmOpCode(  24,     _ ) => XOR
+    rule #dasmOpCode(  25,     _ ) => NOT
+    rule #dasmOpCode(  26,     _ ) => BYTE
+    rule #dasmOpCode(  27, SCHED ) => SHL requires Ghasshift << SCHED >>
+    rule #dasmOpCode(  28, SCHED ) => SHR requires Ghasshift << SCHED >>
+    rule #dasmOpCode(  29, SCHED ) => SAR requires Ghasshift << SCHED >>
+    rule #dasmOpCode(  32,     _ ) => SHA3
+    rule #dasmOpCode(  48,     _ ) => ADDRESS
+    rule #dasmOpCode(  49,     _ ) => BALANCE
+    rule #dasmOpCode(  50,     _ ) => ORIGIN
+    rule #dasmOpCode(  51,     _ ) => CALLER
+    rule #dasmOpCode(  52,     _ ) => CALLVALUE
+    rule #dasmOpCode(  53,     _ ) => CALLDATALOAD
+    rule #dasmOpCode(  54,     _ ) => CALLDATASIZE
+    rule #dasmOpCode(  55,     _ ) => CALLDATACOPY
+    rule #dasmOpCode(  56,     _ ) => CODESIZE
+    rule #dasmOpCode(  57,     _ ) => CODECOPY
+    rule #dasmOpCode(  58,     _ ) => GASPRICE
+    rule #dasmOpCode(  59,     _ ) => EXTCODESIZE
+    rule #dasmOpCode(  60,     _ ) => EXTCODECOPY
+    rule #dasmOpCode(  61, SCHED ) => RETURNDATASIZE requires Ghasreturndata  << SCHED >>
+    rule #dasmOpCode(  62, SCHED ) => RETURNDATACOPY requires Ghasreturndata  << SCHED >>
+    rule #dasmOpCode(  63, SCHED ) => EXTCODEHASH    requires Ghasextcodehash << SCHED >>
+    rule #dasmOpCode(  64,     _ ) => BLOCKHASH
+    rule #dasmOpCode(  65,     _ ) => COINBASE
+    rule #dasmOpCode(  66,     _ ) => TIMESTAMP
+    rule #dasmOpCode(  67,     _ ) => NUMBER
+    rule #dasmOpCode(  68, SCHED ) => PREVRANDAO  requires         Ghasprevrandao << SCHED >>
+    rule #dasmOpCode(  68, SCHED ) => DIFFICULTY  requires notBool Ghasprevrandao << SCHED >>
+    rule #dasmOpCode(  69,     _ ) => GASLIMIT
+    rule #dasmOpCode(  70, SCHED ) => CHAINID     requires Ghaschainid     << SCHED >>
+    rule #dasmOpCode(  71, SCHED ) => SELFBALANCE requires Ghasselfbalance << SCHED >>
+    rule #dasmOpCode(  72, SCHED ) => BASEFEE     requires Ghasbasefee     << SCHED >>
+    rule #dasmOpCode(  80,     _ ) => POP
+    rule #dasmOpCode(  81,     _ ) => MLOAD
+    rule #dasmOpCode(  82,     _ ) => MSTORE
+    rule #dasmOpCode(  83,     _ ) => MSTORE8
+    rule #dasmOpCode(  84,     _ ) => SLOAD
+    rule #dasmOpCode(  85,     _ ) => SSTORE
+    rule #dasmOpCode(  86,     _ ) => JUMP
+    rule #dasmOpCode(  87,     _ ) => JUMPI
+    rule #dasmOpCode(  88,     _ ) => PC
+    rule #dasmOpCode(  89,     _ ) => MSIZE
+    rule #dasmOpCode(  90,     _ ) => GAS
+    rule #dasmOpCode(  91,     _ ) => JUMPDEST
+    rule #dasmOpCode(  95, SCHED ) => PUSHZERO requires Ghaspushzero << SCHED >>
+    rule #dasmOpCode(  96,     _ ) => PUSH(1)
+    rule #dasmOpCode(  97,     _ ) => PUSH(2)
+    rule #dasmOpCode(  98,     _ ) => PUSH(3)
+    rule #dasmOpCode(  99,     _ ) => PUSH(4)
+    rule #dasmOpCode( 100,     _ ) => PUSH(5)
+    rule #dasmOpCode( 101,     _ ) => PUSH(6)
+    rule #dasmOpCode( 102,     _ ) => PUSH(7)
+    rule #dasmOpCode( 103,     _ ) => PUSH(8)
+    rule #dasmOpCode( 104,     _ ) => PUSH(9)
+    rule #dasmOpCode( 105,     _ ) => PUSH(10)
+    rule #dasmOpCode( 106,     _ ) => PUSH(11)
+    rule #dasmOpCode( 107,     _ ) => PUSH(12)
+    rule #dasmOpCode( 108,     _ ) => PUSH(13)
+    rule #dasmOpCode( 109,     _ ) => PUSH(14)
+    rule #dasmOpCode( 110,     _ ) => PUSH(15)
+    rule #dasmOpCode( 111,     _ ) => PUSH(16)
+    rule #dasmOpCode( 112,     _ ) => PUSH(17)
+    rule #dasmOpCode( 113,     _ ) => PUSH(18)
+    rule #dasmOpCode( 114,     _ ) => PUSH(19)
+    rule #dasmOpCode( 115,     _ ) => PUSH(20)
+    rule #dasmOpCode( 116,     _ ) => PUSH(21)
+    rule #dasmOpCode( 117,     _ ) => PUSH(22)
+    rule #dasmOpCode( 118,     _ ) => PUSH(23)
+    rule #dasmOpCode( 119,     _ ) => PUSH(24)
+    rule #dasmOpCode( 120,     _ ) => PUSH(25)
+    rule #dasmOpCode( 121,     _ ) => PUSH(26)
+    rule #dasmOpCode( 122,     _ ) => PUSH(27)
+    rule #dasmOpCode( 123,     _ ) => PUSH(28)
+    rule #dasmOpCode( 124,     _ ) => PUSH(29)
+    rule #dasmOpCode( 125,     _ ) => PUSH(30)
+    rule #dasmOpCode( 126,     _ ) => PUSH(31)
+    rule #dasmOpCode( 127,     _ ) => PUSH(32)
+    rule #dasmOpCode( 128,     _ ) => DUP(1)
+    rule #dasmOpCode( 129,     _ ) => DUP(2)
+    rule #dasmOpCode( 130,     _ ) => DUP(3)
+    rule #dasmOpCode( 131,     _ ) => DUP(4)
+    rule #dasmOpCode( 132,     _ ) => DUP(5)
+    rule #dasmOpCode( 133,     _ ) => DUP(6)
+    rule #dasmOpCode( 134,     _ ) => DUP(7)
+    rule #dasmOpCode( 135,     _ ) => DUP(8)
+    rule #dasmOpCode( 136,     _ ) => DUP(9)
+    rule #dasmOpCode( 137,     _ ) => DUP(10)
+    rule #dasmOpCode( 138,     _ ) => DUP(11)
+    rule #dasmOpCode( 139,     _ ) => DUP(12)
+    rule #dasmOpCode( 140,     _ ) => DUP(13)
+    rule #dasmOpCode( 141,     _ ) => DUP(14)
+    rule #dasmOpCode( 142,     _ ) => DUP(15)
+    rule #dasmOpCode( 143,     _ ) => DUP(16)
+    rule #dasmOpCode( 144,     _ ) => SWAP(1)
+    rule #dasmOpCode( 145,     _ ) => SWAP(2)
+    rule #dasmOpCode( 146,     _ ) => SWAP(3)
+    rule #dasmOpCode( 147,     _ ) => SWAP(4)
+    rule #dasmOpCode( 148,     _ ) => SWAP(5)
+    rule #dasmOpCode( 149,     _ ) => SWAP(6)
+    rule #dasmOpCode( 150,     _ ) => SWAP(7)
+    rule #dasmOpCode( 151,     _ ) => SWAP(8)
+    rule #dasmOpCode( 152,     _ ) => SWAP(9)
+    rule #dasmOpCode( 153,     _ ) => SWAP(10)
+    rule #dasmOpCode( 154,     _ ) => SWAP(11)
+    rule #dasmOpCode( 155,     _ ) => SWAP(12)
+    rule #dasmOpCode( 156,     _ ) => SWAP(13)
+    rule #dasmOpCode( 157,     _ ) => SWAP(14)
+    rule #dasmOpCode( 158,     _ ) => SWAP(15)
+    rule #dasmOpCode( 159,     _ ) => SWAP(16)
+    rule #dasmOpCode( 160,     _ ) => LOG(0)
+    rule #dasmOpCode( 161,     _ ) => LOG(1)
+    rule #dasmOpCode( 162,     _ ) => LOG(2)
+    rule #dasmOpCode( 163,     _ ) => LOG(3)
+    rule #dasmOpCode( 164,     _ ) => LOG(4)
+    rule #dasmOpCode( 240,     _ ) => CREATE
+    rule #dasmOpCode( 241,     _ ) => CALL
+    rule #dasmOpCode( 242,     _ ) => CALLCODE
+    rule #dasmOpCode( 243,     _ ) => RETURN
+    rule #dasmOpCode( 244, SCHED ) => DELEGATECALL requires SCHED =/=K FRONTIER
+    rule #dasmOpCode( 245, SCHED ) => CREATE2      requires Ghascreate2    << SCHED >>
+    rule #dasmOpCode( 250, SCHED ) => STATICCALL   requires Ghasstaticcall << SCHED >>
+    rule #dasmOpCode( 253, SCHED ) => REVERT       requires Ghasrevert     << SCHED >>
+    rule #dasmOpCode( 254,     _ ) => INVALID
+    rule #dasmOpCode( 255,     _ ) => SELFDESTRUCT
+    rule #dasmOpCode(   W,     _ ) => UNDEFINED(W) [owise]
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/gas.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/gas.md deleted file mode 100644 index 5b6653e7f9..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/gas.md +++ /dev/null @@ -1,266 +0,0 @@ -KEVM Gas -======== - -Here is a representation of `Gas`. This sort is used by ``, ``, and `` cells of the EVM configuration. As is in this file, `Gas` is a super-sort of `Int` with no differing behaviour. However the distinction at this level allows for an extension of infinite gas later, see `infinite-gas.md`. - -```k -requires "schedule.md" - -module GAS-SYNTAX - imports INT-SYNTAX - - syntax Gas ::= Int - syntax Int ::= "gas2Int" "(" Gas ")" [function, total] - - syntax Gas ::= "minGas" "(" Gas "," Gas ")" [function, total] - > left: - Gas "*Gas" Gas [function, total] - | Gas "/Gas" Gas [function] - > left: - Gas "+Gas" Gas [function, total] - | Gas "-Gas" Gas [function, total] - - syntax Bool ::= Gas " I1 *Int I2 - rule I1:Int /Gas I2:Int => I1 /Int I2 - rule I1:Int +Gas I2:Int => I1 +Int I2 - rule I1:Int -Gas I2:Int => I1 -Int I2 - - rule I1:Int I1 I1 <=Int I2 - - rule minGas(I1:Int, I2:Int) => minInt(I1, I2) - rule gas2Int(G:Int) => G -endmodule -``` - -KEVM Infinite Gas -================= - -Here we use the construct `#gas` to represent positive infinity, while tracking the gas formula through execution. -This allows (i) computing final gas used, and (ii) never stopping because of out-of-gas. -Note that the argument to `#gas(_)` is just metadata tracking the current gas usage, and is not meant to be compared to other values. -As such, any `#gas(G)` and `#gas(G')` are the _same_ positive infinite, regardless of the values `G` and `G'`. -In particular, this means that `#gas(_) false`, and `#gas(_) <=Gas #gas(_) => true`, regardless of the values contained in the `#gas(_)`. - -```k -module INFINITE-GAS - imports GAS - - syntax Gas ::= #gas(Int) [klabel(infGas), symbol, smtlib(infGas)] - - rule #gas(G) +Gas G' => #gas(G +Int G') - rule #gas(G) -Gas G' => #gas(G -Int G') - rule #gas(G) *Gas G' => #gas(G *Int G') - rule #gas(G) /Gas G' => #gas(G /Int G') requires G' =/=Int 0 - rule G +Gas #gas(G') => #gas(G +Int G') - rule G -Gas #gas(G') => #gas(G -Int G') - rule G *Gas #gas(G') => #gas(G *Int G') - rule G /Gas #gas(G') => #gas(G /Int G') requires G' =/=Int 0 - rule #gas(G) +Gas #gas(G') => #gas(G +Int G') - rule #gas(G) -Gas #gas(G') => #gas(G -Int G') - rule #gas(G) *Gas #gas(G') => #gas(G *Int G') - rule #gas(G) /Gas #gas(G') => #gas(G /Int G') requires G' =/=Int 0 - - rule _:Int true - rule #gas(_) false [simplification] - rule #gas(_) <=Gas _:Int => false - rule _ <=Gas #gas(_) => true [simplification] - - rule minGas(#gas(G), #gas(G')) => #gas(minInt(G, G')) - rule minGas(G:Int , #gas(G')) => #gas(minInt(G, G')) - rule minGas(#gas(G), G':Int) => #gas(minInt(G, G')) - - rule gas2Int(#gas(G)) => G - - rule #allBut64th(#gas(G)) => #gas(#allBut64th(G)) - rule Cgascap(SCHED, #gas(GCAP), #gas(GAVAIL), GEXTRA) => #gas(Cgascap(SCHED, GCAP, GAVAIL, GEXTRA)) [simplification] - rule Cgascap(SCHED, #gas(GCAP), GAVAIL:Int, GEXTRA) => #gas(Cgascap(SCHED, GCAP, GAVAIL, GEXTRA)) [simplification] - rule Cgascap(SCHED, GCAP:Int, #gas(GAVAIL), GEXTRA) => #gas(Cgascap(SCHED, GCAP, GAVAIL, GEXTRA)) [simplification] - - rule #if B #then #gas(G) #else #gas(G') #fi => #gas(#if B #then G #else G' #fi) [simplification] -endmodule -``` - -KEVM Gas Fees -============= - -Here are some internal helper functions for calculating gas. Most of these functions are specified in the YellowPaper. - -```k -module GAS-FEES - imports GAS-SYNTAX - imports SCHEDULE - - syntax Gas ::= Cgascap ( Schedule , Gas , Gas , Int ) [symbol(Cgascap_Gas), overload(Cgascap), function, total, smtlib(gas_Cgascap_Gas)] - syntax Int ::= Cgascap ( Schedule , Int , Int , Int ) [symbol(Cgascap_Int), overload(Cgascap), function, total, smtlib(gas_Cgascap_Int)] - - syntax Int ::= Csstore ( Schedule , Int , Int , Int ) [klabel(Csstore), function, total, smtlib(gas_Csstore) ] - | Rsstore ( Schedule , Int , Int , Int ) [klabel(Rsstore), function, total, smtlib(gas_Rsstore) ] - | Cextra ( Schedule , Bool , Int , Bool ) [klabel(Cextra), function, total, smtlib(gas_Cextra) ] - | Cnew ( Schedule , Bool , Int ) [klabel(Cnew), function, total, smtlib(gas_Cnew) ] - | Cxfer ( Schedule , Int ) [klabel(Cxfer), function, total, smtlib(gas_Cxfer) ] - | Cmem ( Schedule , Int ) [klabel(Cmem), function, total, smtlib(gas_Cmem), memo ] - | Caddraccess ( Schedule , Bool ) [klabel(Caddraccess), function, total, smtlib(gas_Caddraccess) ] - | Cstorageaccess ( Schedule , Bool ) [klabel(Cstorageaccess), function, total, smtlib(gas_Cstorageaccess)] - | Csload ( Schedule , Bool ) [klabel(Csload), function, total, smtlib(gas_Csload) ] - | Cextcodesize ( Schedule ) [klabel(Cextcodesize), function, total, smtlib(gas_Cextcodesize) ] - | Cextcodecopy ( Schedule , Int ) [klabel(Cextcodecopy), function, total, smtlib(gas_Cextcodecopy) ] - | Cextcodehash ( Schedule ) [klabel(Cextcodehash), function, total, smtlib(gas_Cextcodehash) ] - | Cbalance ( Schedule ) [klabel(Cbalance), function, total, smtlib(gas_Cbalance) ] - | Cmodexp ( Schedule , Bytes , Int , Int , Int ) [klabel(Cmodexp), function, total, smtlib(gas_Cmodexp) ] - | Cinitcode ( Schedule , Int ) [klabel(Cinitcode), function, total, smtlib(gas_Cinitcode) ] - // ------------------------------------------------------------------------------------------------------------------------------------------ - rule [Cgascap]: - Cgascap(SCHED, GCAP:Int, GAVAIL:Int, GEXTRA) - => #if GAVAIL > #then GCAP #else minInt(#allBut64th(GAVAIL -Int GEXTRA), GCAP) #fi - requires 0 <=Int GCAP - [concrete] - - rule Cgascap(_, GCAP, _, _) => 0 requires GCAP #if CURR ==Int NEW orBool ORIG =/=Int CURR #then Gsload < SCHED > #else #if ORIG ==Int 0 #then Gsstoreset < SCHED > #else Gsstorereset < SCHED > #fi #fi - requires Ghasdirtysstore << SCHED >> - [concrete] - - rule [Csstore.old]: - Csstore(SCHED, NEW, CURR, _ORIG) - => #if CURR ==Int 0 andBool NEW =/=Int 0 #then Gsstoreset < SCHED > #else Gsstorereset < SCHED > #fi - requires notBool Ghasdirtysstore << SCHED >> - [concrete] - - rule [Rsstore.new]: - Rsstore(SCHED, NEW, CURR, ORIG) - => #if CURR =/=Int NEW andBool ORIG ==Int CURR andBool NEW ==Int 0 #then - Rsstoreclear < SCHED > - #else - #if CURR =/=Int NEW andBool ORIG =/=Int CURR andBool ORIG =/=Int 0 #then - #if CURR ==Int 0 #then 0 -Int Rsstoreclear < SCHED > #else #if NEW ==Int 0 #then Rsstoreclear < SCHED > #else 0 #fi #fi - #else - 0 - #fi +Int - #if CURR =/=Int NEW andBool ORIG ==Int NEW #then - #if ORIG ==Int 0 #then Gsstoreset < SCHED > #else Gsstorereset < SCHED > #fi -Int Gsload < SCHED > - #else - 0 - #fi - #fi - requires Ghasdirtysstore << SCHED >> - [concrete] - - rule [Rsstore.old]: - Rsstore(SCHED, NEW, CURR, _ORIG) - => #if CURR =/=Int 0 andBool NEW ==Int 0 #then Rsstoreclear < SCHED > #else 0 #fi - requires notBool Ghasdirtysstore << SCHED >> - [concrete] - - rule [Cextra.new]: Cextra(SCHED, ISEMPTY, VALUE, ISWARM) => Caddraccess(SCHED, ISWARM) +Int Cnew(SCHED, ISEMPTY, VALUE) +Int Cxfer(SCHED, VALUE) requires Ghasaccesslist << SCHED >> - rule [Cextra.old]: Cextra(SCHED, ISEMPTY, VALUE, _ISWARM) => Gcall < SCHED > +Int Cnew(SCHED, ISEMPTY, VALUE) +Int Cxfer(SCHED, VALUE) requires notBool Ghasaccesslist << SCHED >> - - rule [Cnew]: - Cnew(SCHED, ISEMPTY:Bool, VALUE) - => #if ISEMPTY andBool (VALUE =/=Int 0 orBool Gzerovaluenewaccountgas << SCHED >>) #then Gnewaccount < SCHED > #else 0 #fi - - rule [Cxfer.none]: Cxfer(_SCHED, 0) => 0 - rule [Cxfer.some]: Cxfer( SCHED, N) => Gcallvalue < SCHED > requires N =/=Int 0 - - rule [Cmem]: Cmem(SCHED, N) => (N *Int Gmemory < SCHED >) +Int ((N *Int N) /Int Gquadcoeff < SCHED >) [concrete] - - rule [Caddraccess]: Caddraccess(SCHED, ISWARM) => #if ISWARM #then Gwarmstorageread < SCHED > #else Gcoldaccountaccess < SCHED > #fi - rule [Cstorageaccess]: Cstorageaccess(SCHED, ISWARM) => #if ISWARM #then Gwarmstorageread < SCHED > #else Gcoldsload < SCHED > #fi - - rule [Csload.new]: Csload(SCHED, ISWARM) => Cstorageaccess(SCHED, ISWARM) requires Ghasaccesslist << SCHED >> - rule [Csload.old]: Csload(SCHED, _ISWARM) => Gsload < SCHED > requires notBool Ghasaccesslist << SCHED >> - - rule [Cextcodesize.new]: Cextcodesize(SCHED) => 0 requires Ghasaccesslist << SCHED >> - rule [Cextcodesize.old]: Cextcodesize(SCHED) => Gextcodesize < SCHED > requires notBool Ghasaccesslist << SCHED >> - - rule [Cextcodehash.new]: Cextcodehash(SCHED) => 0 requires Ghasaccesslist << SCHED >> - rule [Cextcodehash.old]: Cextcodehash(SCHED) => Gbalance < SCHED > requires notBool Ghasaccesslist << SCHED >> - - rule [Cbalance.new]: Cbalance(SCHED) => 0 requires Ghasaccesslist << SCHED >> - rule [Cbalance.old]: Cbalance(SCHED) => Gbalance < SCHED > requires notBool Ghasaccesslist << SCHED >> - - rule [Cextcodecopy.new]: Cextcodecopy(SCHED, WIDTH) => Gcopy < SCHED > *Int (WIDTH up/Int 32) requires Ghasaccesslist << SCHED >> [concrete] - rule [Cextcodecopy.old]: Cextcodecopy(SCHED, WIDTH) => Gextcodecopy < SCHED > +Int (Gcopy < SCHED > *Int (WIDTH up/Int 32)) requires notBool Ghasaccesslist << SCHED >> [concrete] - - rule [Cmodexp.old]: Cmodexp(SCHED, DATA, BASELEN, EXPLEN, MODLEN) => #multComplexity(maxInt(BASELEN, MODLEN)) *Int maxInt(#adjustedExpLength(BASELEN, EXPLEN, DATA), 1) /Int Gquaddivisor < SCHED > - requires notBool Ghasaccesslist << SCHED >> - [concrete] - - rule [Cmodexp.new]: Cmodexp(SCHED, DATA, BASELEN, EXPLEN, MODLEN) => maxInt(200, (#newMultComplexity(maxInt(BASELEN, MODLEN)) *Int maxInt(#adjustedExpLength(BASELEN, EXPLEN, DATA), 1)) /Int Gquaddivisor < SCHED > ) - requires Ghasaccesslist << SCHED >> - [concrete] - - rule [Cinitcode.new]: Cinitcode(SCHED, INITCODELEN) => Ginitcodewordcost < SCHED > *Int ( INITCODELEN up/Int 32 ) requires Ghasmaxinitcodesize << SCHED >> [concrete] - rule [Cinitcode.old]: Cinitcode(SCHED, _) => 0 requires notBool Ghasmaxinitcodesize << SCHED >> [concrete] - - syntax Bool ::= #accountEmpty ( AccountCode , Int , Int ) [function, total, klabel(accountEmpty), symbol] - // --------------------------------------------------------------------------------------------------------- - rule #accountEmpty(CODE, NONCE, BAL) => CODE ==K .Bytes andBool NONCE ==Int 0 andBool BAL ==Int 0 - - syntax Gas ::= #allBut64th ( Gas ) [symbol(#allBut64th_Gas), overload(#allBut64th), function, total, smtlib(gas_allBut64th_Gas)] - syntax Int ::= #allBut64th ( Int ) [symbol(#allBut64th_Int), overload(#allBut64th), function, total, smtlib(gas_allBut64th_Int)] - // -------------------------------------------------------------------------------------------------------------------------------- - rule [allBut64th.pos]: #allBut64th(N) => N -Int (N /Int 64) requires 0 <=Int N - rule [allBut64th.neg]: #allBut64th(N) => 0 requires N G0(SCHED, WS, 0, lengthBytes(WS), 0) +Int Gtransaction < SCHED > - rule G0(SCHED, WS, true) => G0(SCHED, WS, 0, lengthBytes(WS), 0) +Int Gtxcreate < SCHED > +Int Cinitcode(SCHED, lengthBytes(WS)) - - rule G0( _, _, I, I, R) => R - rule G0(SCHED, WS, I, J, R) => G0(SCHED, WS, I +Int 1, J, R +Int #if WS[I] ==Int 0 #then Gtxdatazero < SCHED > #else Gtxdatanonzero < SCHED > #fi) [owise] - - syntax Gas ::= "G*" "(" Gas "," Int "," Int "," Schedule ")" [function] - // ----------------------------------------------------------------------- - rule G*(GAVAIL, GLIMIT, REFUND, SCHED) => GAVAIL +Gas minGas((GLIMIT -Gas GAVAIL) /Gas Rmaxquotient < SCHED >, REFUND) - - syntax Int ::= #multComplexity(Int) [klabel(#multComplexity), function] - | #newMultComplexity(Int) [klabel(#newMultComplexity), function] - // ----------------------------------------------------------------------------- - rule #multComplexity(X) => X *Int X requires X <=Int 64 - rule #multComplexity(X) => X *Int X /Int 4 +Int 96 *Int X -Int 3072 requires X >Int 64 andBool X <=Int 1024 - rule #multComplexity(X) => X *Int X /Int 16 +Int 480 *Int X -Int 199680 requires X >Int 1024 - - rule #newMultComplexity(X) => (X up/Int 8) ^Int 2 - - syntax Int ::= #adjustedExpLength(Int, Int, Bytes) [klabel(#adjustedExpLength), function] - | #adjustedExpLength(Int) [klabel(#adjustedExpLengthAux), function] - // -------------------------------------------------------------------------------------------- - rule #adjustedExpLength(BASELEN, EXPLEN, DATA) => #if EXPLEN <=Int 32 #then 0 #else 8 *Int (EXPLEN -Int 32) #fi +Int #adjustedExpLength(#asInteger(#range(DATA, 96 +Int BASELEN, minInt(EXPLEN, 32)))) - - rule #adjustedExpLength(0) => 0 - rule #adjustedExpLength(1) => 0 - rule #adjustedExpLength(N) => 1 +Int #adjustedExpLength(N /Int 2) requires N >Int 1 -endmodule -``` - -KEVM Gas Simplifications -======================== - -Here are simplification rules related to gas that the haskell backend uses. - -```k -module GAS-SIMPLIFICATION [symbolic] - imports GAS-SYNTAX - imports INT - imports BOOL - - rule A false requires B <=Gas A [simplification] -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/gas/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/gas/index.html new file mode 100644 index 0000000000..42ae3be9b2 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/gas/index.html @@ -0,0 +1,458 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

KEVM Gas

+

Here is a representation of Gas. This sort is used by <gas>, <callGas>, and <gasUsed> cells of the EVM configuration. As is in this file, Gas is a super-sort of Int with no differing behaviour. However the distinction at this level allows for an extension of infinite gas later, see infinite-gas.md.

+
requires "schedule.md"
+
+module GAS-SYNTAX
+    imports INT-SYNTAX
+
+    syntax Gas ::= Int
+    syntax Int ::= "gas2Int" "(" Gas ")" [function, total]
+
+    syntax Gas ::= "minGas" "(" Gas "," Gas ")" [function, total]
+                 > left:
+                   Gas "*Gas" Gas [function, total]
+                 | Gas "/Gas" Gas [function]
+                 > left:
+                   Gas "+Gas" Gas [function, total]
+                 | Gas "-Gas" Gas [function, total]
+
+    syntax Bool ::= Gas  "<Gas" Gas [function, total]
+                  | Gas "<=Gas" Gas [function, total]
+endmodule
+
+module GAS
+    imports INT
+    imports BOOL
+    imports GAS-SYNTAX
+    imports GAS-SIMPLIFICATION
+    imports GAS-FEES
+
+    rule I1:Int *Gas I2:Int => I1 *Int I2
+    rule I1:Int /Gas I2:Int => I1 /Int I2
+    rule I1:Int +Gas I2:Int => I1 +Int I2
+    rule I1:Int -Gas I2:Int => I1 -Int I2
+
+    rule I1:Int  <Gas I2:Int => I1  <Int I2
+    rule I1:Int <=Gas I2:Int => I1 <=Int I2
+
+    rule minGas(I1:Int, I2:Int) => minInt(I1, I2)
+    rule gas2Int(G:Int) => G
+endmodule
+
+

KEVM Infinite Gas

+

Here we use the construct #gas to represent positive infinity, while tracking the gas formula through execution. +This allows (i) computing final gas used, and (ii) never stopping because of out-of-gas. +Note that the argument to #gas(_) is just metadata tracking the current gas usage, and is not meant to be compared to other values. +As such, any #gas(G) and #gas(G') are the same positive infinite, regardless of the values G and G'. +In particular, this means that #gas(_) <Gas #gas(_) => false, and #gas(_) <=Gas #gas(_) => true, regardless of the values contained in the #gas(_).

+
module INFINITE-GAS
+    imports GAS
+
+    syntax Gas ::= #gas(Int) [klabel(infGas), symbol, smtlib(infGas)]
+
+    rule #gas(G) +Gas G'       => #gas(G +Int G')
+    rule #gas(G) -Gas G'       => #gas(G -Int G')
+    rule #gas(G) *Gas G'       => #gas(G *Int G')
+    rule #gas(G) /Gas G'       => #gas(G /Int G')  requires G' =/=Int 0
+    rule      G  +Gas #gas(G') => #gas(G +Int G')
+    rule      G  -Gas #gas(G') => #gas(G -Int G')
+    rule      G  *Gas #gas(G') => #gas(G *Int G')
+    rule      G  /Gas #gas(G') => #gas(G /Int G')  requires G' =/=Int 0
+    rule #gas(G) +Gas #gas(G') => #gas(G +Int G')
+    rule #gas(G) -Gas #gas(G') => #gas(G -Int G')
+    rule #gas(G) *Gas #gas(G') => #gas(G *Int G')
+    rule #gas(G) /Gas #gas(G') => #gas(G /Int G')  requires G' =/=Int 0
+
+    rule _:Int    <Gas #gas(_) => true
+    rule #gas(_)  <Gas _       => false [simplification]
+    rule #gas(_) <=Gas _:Int   => false
+    rule _       <=Gas #gas(_) => true  [simplification]
+
+    rule minGas(#gas(G), #gas(G')) => #gas(minInt(G, G'))
+    rule minGas(G:Int  , #gas(G')) => #gas(minInt(G, G'))
+    rule minGas(#gas(G), G':Int)   => #gas(minInt(G, G'))
+
+    rule gas2Int(#gas(G)) => G
+
+    rule #allBut64th(#gas(G)) => #gas(#allBut64th(G))
+    rule Cgascap(SCHED, #gas(GCAP), #gas(GAVAIL), GEXTRA) => #gas(Cgascap(SCHED, GCAP, GAVAIL, GEXTRA)) [simplification]
+    rule Cgascap(SCHED, #gas(GCAP), GAVAIL:Int, GEXTRA)   => #gas(Cgascap(SCHED, GCAP, GAVAIL, GEXTRA)) [simplification]
+    rule Cgascap(SCHED, GCAP:Int, #gas(GAVAIL), GEXTRA)   => #gas(Cgascap(SCHED, GCAP, GAVAIL, GEXTRA)) [simplification]
+
+    rule #if B #then #gas(G) #else #gas(G') #fi => #gas(#if B #then G #else G' #fi) [simplification]
+endmodule
+
+

KEVM Gas Fees

+

Here are some internal helper functions for calculating gas. Most of these functions are specified in the YellowPaper.

+
module GAS-FEES
+    imports GAS-SYNTAX
+    imports SCHEDULE
+
+    syntax Gas ::= Cgascap        ( Schedule , Gas , Gas , Int ) [symbol(Cgascap_Gas), overload(Cgascap), function, total, smtlib(gas_Cgascap_Gas)]
+    syntax Int ::= Cgascap        ( Schedule , Int , Int , Int ) [symbol(Cgascap_Int), overload(Cgascap), function, total, smtlib(gas_Cgascap_Int)]
+
+    syntax Int ::= Csstore        ( Schedule , Int , Int , Int )         [klabel(Csstore),        function, total, smtlib(gas_Csstore)       ]
+                 | Rsstore        ( Schedule , Int , Int , Int )         [klabel(Rsstore),        function, total, smtlib(gas_Rsstore)       ]
+                 | Cextra         ( Schedule , Bool , Int , Bool )       [klabel(Cextra),         function, total, smtlib(gas_Cextra)        ]
+                 | Cnew           ( Schedule , Bool , Int )              [klabel(Cnew),           function, total, smtlib(gas_Cnew)          ]
+                 | Cxfer          ( Schedule , Int )                     [klabel(Cxfer),          function, total, smtlib(gas_Cxfer)         ]
+                 | Cmem           ( Schedule , Int )                     [klabel(Cmem),           function, total, smtlib(gas_Cmem), memo    ]
+                 | Caddraccess    ( Schedule , Bool )                    [klabel(Caddraccess),    function, total, smtlib(gas_Caddraccess)   ]
+                 | Cstorageaccess ( Schedule , Bool )                    [klabel(Cstorageaccess), function, total, smtlib(gas_Cstorageaccess)]
+                 | Csload         ( Schedule , Bool )                    [klabel(Csload),         function, total, smtlib(gas_Csload)        ]
+                 | Cextcodesize   ( Schedule )                           [klabel(Cextcodesize),   function, total, smtlib(gas_Cextcodesize)  ]
+                 | Cextcodecopy   ( Schedule , Int )                     [klabel(Cextcodecopy),   function, total, smtlib(gas_Cextcodecopy)  ]
+                 | Cextcodehash   ( Schedule )                           [klabel(Cextcodehash),   function, total, smtlib(gas_Cextcodehash)  ]
+                 | Cbalance       ( Schedule )                           [klabel(Cbalance),       function, total, smtlib(gas_Cbalance)      ]
+                 | Cmodexp        ( Schedule , Bytes , Int , Int , Int ) [klabel(Cmodexp),        function, total, smtlib(gas_Cmodexp)       ]
+                 | Cinitcode      ( Schedule , Int )                     [klabel(Cinitcode),      function, total, smtlib(gas_Cinitcode)     ]
+ // ------------------------------------------------------------------------------------------------------------------------------------------
+    rule [Cgascap]:
+         Cgascap(SCHED, GCAP:Int, GAVAIL:Int, GEXTRA)
+      => #if GAVAIL <Int GEXTRA orBool Gstaticcalldepth << SCHED >> #then GCAP #else minInt(#allBut64th(GAVAIL -Int GEXTRA), GCAP) #fi
+      requires 0 <=Int GCAP
+      [concrete]
+
+    rule Cgascap(_, GCAP, _, _) => 0 requires GCAP <Gas 0 [concrete]
+
+    rule [Csstore.new]:
+         Csstore(SCHED, NEW, CURR, ORIG)
+      => #if CURR ==Int NEW orBool ORIG =/=Int CURR #then Gsload < SCHED > #else #if ORIG ==Int 0 #then Gsstoreset < SCHED > #else Gsstorereset < SCHED > #fi #fi
+      requires Ghasdirtysstore << SCHED >>
+      [concrete]
+
+    rule [Csstore.old]:
+         Csstore(SCHED, NEW, CURR, _ORIG)
+      => #if CURR ==Int 0 andBool NEW =/=Int 0 #then Gsstoreset < SCHED > #else Gsstorereset < SCHED > #fi
+      requires notBool Ghasdirtysstore << SCHED >>
+      [concrete]
+
+    rule [Rsstore.new]:
+         Rsstore(SCHED, NEW, CURR, ORIG)
+      => #if CURR =/=Int NEW andBool ORIG ==Int CURR andBool NEW ==Int 0 #then
+             Rsstoreclear < SCHED >
+         #else
+             #if CURR =/=Int NEW andBool ORIG =/=Int CURR andBool ORIG =/=Int 0 #then
+                 #if CURR ==Int 0 #then 0 -Int Rsstoreclear < SCHED > #else #if NEW ==Int 0 #then Rsstoreclear < SCHED > #else 0 #fi #fi
+             #else
+                 0
+             #fi +Int
+             #if CURR =/=Int NEW andBool ORIG ==Int NEW #then
+                 #if ORIG ==Int 0 #then Gsstoreset < SCHED > #else Gsstorereset < SCHED > #fi -Int Gsload < SCHED >
+             #else
+                 0
+             #fi
+         #fi
+      requires Ghasdirtysstore << SCHED >>
+      [concrete]
+
+    rule [Rsstore.old]:
+         Rsstore(SCHED, NEW, CURR, _ORIG)
+      => #if CURR =/=Int 0 andBool NEW ==Int 0 #then Rsstoreclear < SCHED > #else 0 #fi
+      requires notBool Ghasdirtysstore << SCHED >>
+      [concrete]
+
+    rule [Cextra.new]: Cextra(SCHED, ISEMPTY, VALUE, ISWARM)  => Caddraccess(SCHED, ISWARM) +Int Cnew(SCHED, ISEMPTY, VALUE) +Int Cxfer(SCHED, VALUE) requires         Ghasaccesslist << SCHED >>
+    rule [Cextra.old]: Cextra(SCHED, ISEMPTY, VALUE, _ISWARM) => Gcall < SCHED > +Int Cnew(SCHED, ISEMPTY, VALUE) +Int Cxfer(SCHED, VALUE)            requires notBool Ghasaccesslist << SCHED >>
+
+    rule [Cnew]:
+         Cnew(SCHED, ISEMPTY:Bool, VALUE)
+      => #if ISEMPTY andBool (VALUE =/=Int 0 orBool Gzerovaluenewaccountgas << SCHED >>) #then Gnewaccount < SCHED > #else 0 #fi
+
+    rule [Cxfer.none]: Cxfer(_SCHED, 0) => 0
+    rule [Cxfer.some]: Cxfer( SCHED, N) => Gcallvalue < SCHED > requires N =/=Int 0
+
+    rule [Cmem]: Cmem(SCHED, N) => (N *Int Gmemory < SCHED >) +Int ((N *Int N) /Int Gquadcoeff < SCHED >) [concrete]
+
+    rule [Caddraccess]:    Caddraccess(SCHED, ISWARM)    => #if ISWARM #then Gwarmstorageread < SCHED > #else Gcoldaccountaccess < SCHED > #fi
+    rule [Cstorageaccess]: Cstorageaccess(SCHED, ISWARM) => #if ISWARM #then Gwarmstorageread < SCHED > #else Gcoldsload < SCHED >         #fi
+
+    rule [Csload.new]: Csload(SCHED, ISWARM)  => Cstorageaccess(SCHED, ISWARM) requires         Ghasaccesslist << SCHED >>
+    rule [Csload.old]: Csload(SCHED, _ISWARM) => Gsload < SCHED >              requires notBool Ghasaccesslist << SCHED >>
+
+    rule [Cextcodesize.new]: Cextcodesize(SCHED) => 0                      requires         Ghasaccesslist << SCHED >>
+    rule [Cextcodesize.old]: Cextcodesize(SCHED) => Gextcodesize < SCHED > requires notBool Ghasaccesslist << SCHED >>
+
+    rule [Cextcodehash.new]: Cextcodehash(SCHED) => 0                  requires         Ghasaccesslist << SCHED >>
+    rule [Cextcodehash.old]: Cextcodehash(SCHED) => Gbalance < SCHED > requires notBool Ghasaccesslist << SCHED >>
+
+    rule [Cbalance.new]: Cbalance(SCHED) => 0                  requires         Ghasaccesslist << SCHED >>
+    rule [Cbalance.old]: Cbalance(SCHED) => Gbalance < SCHED > requires notBool Ghasaccesslist << SCHED >>
+
+    rule [Cextcodecopy.new]: Cextcodecopy(SCHED, WIDTH) => Gcopy < SCHED > *Int (WIDTH up/Int 32)                               requires         Ghasaccesslist << SCHED >> [concrete]
+    rule [Cextcodecopy.old]: Cextcodecopy(SCHED, WIDTH) => Gextcodecopy < SCHED > +Int (Gcopy < SCHED > *Int (WIDTH up/Int 32)) requires notBool Ghasaccesslist << SCHED >> [concrete]
+
+    rule [Cmodexp.old]: Cmodexp(SCHED, DATA, BASELEN, EXPLEN, MODLEN) => #multComplexity(maxInt(BASELEN, MODLEN)) *Int maxInt(#adjustedExpLength(BASELEN, EXPLEN, DATA), 1) /Int Gquaddivisor < SCHED >
+      requires notBool Ghasaccesslist << SCHED >>
+      [concrete]
+
+    rule [Cmodexp.new]: Cmodexp(SCHED, DATA, BASELEN, EXPLEN, MODLEN) => maxInt(200, (#newMultComplexity(maxInt(BASELEN, MODLEN)) *Int maxInt(#adjustedExpLength(BASELEN, EXPLEN, DATA), 1)) /Int Gquaddivisor < SCHED > )
+      requires Ghasaccesslist << SCHED >>
+      [concrete]
+
+    rule [Cinitcode.new]: Cinitcode(SCHED, INITCODELEN) => Ginitcodewordcost < SCHED > *Int ( INITCODELEN up/Int 32 ) requires         Ghasmaxinitcodesize << SCHED >> [concrete]
+    rule [Cinitcode.old]: Cinitcode(SCHED, _)           => 0                                                          requires notBool Ghasmaxinitcodesize << SCHED >> [concrete]
+
+    syntax Bool ::= #accountEmpty ( AccountCode , Int , Int ) [function, total, klabel(accountEmpty), symbol]
+ // ---------------------------------------------------------------------------------------------------------
+    rule #accountEmpty(CODE, NONCE, BAL) => CODE ==K .Bytes andBool NONCE ==Int 0 andBool BAL ==Int 0
+
+    syntax Gas ::= #allBut64th ( Gas ) [symbol(#allBut64th_Gas), overload(#allBut64th), function, total, smtlib(gas_allBut64th_Gas)]
+    syntax Int ::= #allBut64th ( Int ) [symbol(#allBut64th_Int), overload(#allBut64th), function, total, smtlib(gas_allBut64th_Int)]
+ // --------------------------------------------------------------------------------------------------------------------------------
+    rule [allBut64th.pos]: #allBut64th(N) => N -Int (N /Int 64) requires 0 <=Int N
+    rule [allBut64th.neg]: #allBut64th(N) => 0                  requires N  <Int 0
+
+    syntax Int ::= G0 ( Schedule , Bytes , Bool )           [function, klabel(G0base)]
+                 | G0 ( Schedule , Bytes , Int , Int, Int ) [function, klabel(G0data)]
+ // ----------------------------------------------------------------------------------
+    rule G0(SCHED, WS, false) => G0(SCHED, WS, 0, lengthBytes(WS), 0) +Int Gtransaction < SCHED >
+    rule G0(SCHED, WS, true)  => G0(SCHED, WS, 0, lengthBytes(WS), 0) +Int Gtxcreate < SCHED > +Int Cinitcode(SCHED, lengthBytes(WS))
+
+    rule G0(    _,  _, I, I, R) => R
+    rule G0(SCHED, WS, I, J, R) => G0(SCHED, WS, I +Int 1, J, R +Int #if WS[I] ==Int 0 #then Gtxdatazero < SCHED > #else Gtxdatanonzero < SCHED > #fi) [owise]
+
+    syntax Gas ::= "G*" "(" Gas "," Int "," Int "," Schedule ")" [function]
+ // -----------------------------------------------------------------------
+    rule G*(GAVAIL, GLIMIT, REFUND, SCHED) => GAVAIL +Gas minGas((GLIMIT -Gas GAVAIL) /Gas Rmaxquotient < SCHED >, REFUND)
+
+    syntax Int ::= #multComplexity(Int)    [klabel(#multComplexity),    function]
+                 | #newMultComplexity(Int) [klabel(#newMultComplexity), function]
+ // -----------------------------------------------------------------------------
+    rule #multComplexity(X) => X *Int X                                     requires X <=Int 64
+    rule #multComplexity(X) => X *Int X /Int 4 +Int 96 *Int X -Int 3072     requires X >Int 64 andBool X <=Int 1024
+    rule #multComplexity(X) => X *Int X /Int 16 +Int 480 *Int X -Int 199680 requires X >Int 1024
+
+    rule #newMultComplexity(X) => (X up/Int 8) ^Int 2
+
+    syntax Int ::= #adjustedExpLength(Int, Int, Bytes) [klabel(#adjustedExpLength),    function]
+                 | #adjustedExpLength(Int)             [klabel(#adjustedExpLengthAux), function]
+ // --------------------------------------------------------------------------------------------
+    rule #adjustedExpLength(BASELEN, EXPLEN, DATA) => #if EXPLEN <=Int 32 #then 0 #else 8 *Int (EXPLEN -Int 32) #fi +Int #adjustedExpLength(#asInteger(#range(DATA, 96 +Int BASELEN, minInt(EXPLEN, 32))))
+
+    rule #adjustedExpLength(0) => 0
+    rule #adjustedExpLength(1) => 0
+    rule #adjustedExpLength(N) => 1 +Int #adjustedExpLength(N /Int 2) requires N >Int 1
+endmodule
+
+

KEVM Gas Simplifications

+

Here are simplification rules related to gas that the haskell backend uses.

+
module GAS-SIMPLIFICATION [symbolic]
+    imports GAS-SYNTAX
+    imports INT
+    imports BOOL
+
+    rule A <Gas B => false requires B <=Gas A [simplification]
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/hashed-locations.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/hashed-locations.md deleted file mode 100644 index 51977f681e..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/hashed-locations.md +++ /dev/null @@ -1,95 +0,0 @@ -Hashed Storage Locations -======================== - -```k -requires "evm.md" -requires "buf.md" - -module HASHED-LOCATIONS - imports EVM - imports BUF -``` - -### Hashed Location for Storage - -The storage accommodates permanent data such as the `balances` map. -A map is laid out in the storage where the map entries are scattered over the entire storage space using the (256-bit) hash of each key to determine the location. -The detailed mechanism of calculating the location varies by compilers. -In Vyper, for example, `map[key1][key2]` is stored at the location: - -``` - hash(hash(key1 +Bytes slot(map)) +Bytes key2) -``` - -where `slot(map)` is the position index of `map` in the program, and `+Bytes` is byte-array concatenation, while in Solidity, it is stored at: - -``` - hash(key2 +Bytes hash(key1 +Bytes slot(map))) -``` - -The eDSL provides `#hashedLocation` that allows to uniformly specify the locations in a form parameterized by the underlying compilers. -For maps, the location of `map[key1][key2]` can be specified as follows, where `{COMPILER}` is a place-holder to be replaced by the name of the compiler. -Note that the keys are separated by the white spaces instead of commas. - -``` - #hashedLocation({COMPILER}, slot(map), key1 key2) -``` - -This notation makes the specification independent of the underlying compilers, enabling it to be reused for differently compiled programs. - -For dynamically sized arrays in Solidity, and both statically and dynamically sized arrays in Vyper, the length of the array is stored at: - -``` - hash(slot(array)) -``` - -and the element at index `i` is stored at: - -``` - hash(slot(array)) + i -``` - -More information about how storage locations are defined in Solidity can be found [here](https://solidity.readthedocs.io/en/v0.5.11/miscellaneous.html#layout-of-state-variables-in-storage). - -Specifically, `#hashedLocation` is defined as follows, capturing the storage layout schemes of Solidity and Vyper. - -```k - syntax Int ::= #hashedLocation( String , Int , IntList ) [klabel(hashLoc), function, smtlib(hashLoc)] - // ----------------------------------------------------------------------------------------------------- - rule #hashedLocation(_LANG, BASE, .IntList ) => BASE - rule #hashedLocation( LANG, BASE, OFFSET OFFSETS) => #hashedLocation(LANG, #hashedLocation(LANG, BASE, OFFSET .IntList), OFFSETS) requires OFFSETS =/=K .IntList - - rule #hashedLocation("Vyper", BASE, OFFSET .IntList) => keccak(#bufStrict(32, BASE) +Bytes #bufStrict(32, OFFSET)) requires #rangeUInt(256, BASE) andBool #rangeUInt(256, OFFSET) - rule #hashedLocation("Solidity", BASE, OFFSET .IntList) => keccak(#bufStrict(32, OFFSET) +Bytes #bufStrict(32, BASE)) requires #rangeUInt(256, BASE) andBool #rangeUInt(256, OFFSET) [simplification] - rule #hashedLocation("Array", BASE, OFFSET .IntList) => keccak(#bufStrict(32, BASE)) +Word OFFSET requires #rangeUInt(256, BASE) andBool #rangeUInt(256, OFFSET) - - syntax IntList ::= List{Int, ""} [symbol(intList), smtlib(intList)] - // ------------------------------------------------------------------- -``` - -```k -endmodule -``` - -```k -module SOLIDITY-FIELDS - imports HASHED-LOCATIONS - - syntax Contract - syntax Field - syntax ContractAccess ::= Contract - | ContractAccess "." Field [klabel(contract_access_field), symbol] - | ContractAccess "[" Int "]" [klabel(contract_access_index), symbol] - // -------------------------------------------------------------------------------------------- - - syntax Int ::= #loc ( ContractAccess ) [klabel(contract_access_loc), function, symbol] - // -------------------------------------------------------------------------------------- - rule #loc(_:Contract) => 0 - rule #loc(C [ I ]) => #hash(#loc(C), I) - - syntax Int ::= #hash ( Int , Int ) [klabel(contract_access_hash), function, symbol] - // ----------------------------------------------------------------------------------- - rule #hash(I1, I2) => keccak(#bufStrict(32, I2) +Bytes #bufStrict(32, I1)) - -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/hashed-locations/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/hashed-locations/index.html new file mode 100644 index 0000000000..819968cf24 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/hashed-locations/index.html @@ -0,0 +1,257 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Hashed Storage Locations

+
requires "evm.md"
+requires "buf.md"
+
+module HASHED-LOCATIONS
+    imports EVM
+    imports BUF
+
+

Hashed Location for Storage

+

The storage accommodates permanent data such as the balances map. +A map is laid out in the storage where the map entries are scattered over the entire storage space using the (256-bit) hash of each key to determine the location. +The detailed mechanism of calculating the location varies by compilers. +In Vyper, for example, map[key1][key2] is stored at the location:

+
  hash(hash(key1 +Bytes slot(map)) +Bytes key2)
+
+

where slot(map) is the position index of map in the program, and +Bytes is byte-array concatenation, while in Solidity, it is stored at:

+
  hash(key2 +Bytes hash(key1 +Bytes slot(map)))
+
+

The eDSL provides #hashedLocation that allows to uniformly specify the locations in a form parameterized by the underlying compilers. +For maps, the location of map[key1][key2] can be specified as follows, where {COMPILER} is a place-holder to be replaced by the name of the compiler. +Note that the keys are separated by the white spaces instead of commas.

+
  #hashedLocation({COMPILER}, slot(map), key1 key2)
+
+

This notation makes the specification independent of the underlying compilers, enabling it to be reused for differently compiled programs.

+

For dynamically sized arrays in Solidity, and both statically and dynamically sized arrays in Vyper, the length of the array is stored at:

+
  hash(slot(array))
+
+

and the element at index i is stored at:

+
  hash(slot(array)) + i
+
+

More information about how storage locations are defined in Solidity can be found here.

+

Specifically, #hashedLocation is defined as follows, capturing the storage layout schemes of Solidity and Vyper.

+
    syntax Int ::= #hashedLocation( String , Int , IntList ) [klabel(hashLoc), function, smtlib(hashLoc)]
+ // -----------------------------------------------------------------------------------------------------
+    rule #hashedLocation(_LANG, BASE, .IntList      ) => BASE
+    rule #hashedLocation( LANG, BASE, OFFSET OFFSETS) => #hashedLocation(LANG, #hashedLocation(LANG, BASE, OFFSET .IntList), OFFSETS) requires OFFSETS =/=K .IntList
+
+    rule #hashedLocation("Vyper",    BASE, OFFSET .IntList) => keccak(#bufStrict(32, BASE)   +Bytes #bufStrict(32, OFFSET)) requires #rangeUInt(256, BASE) andBool #rangeUInt(256, OFFSET)
+    rule #hashedLocation("Solidity", BASE, OFFSET .IntList) => keccak(#bufStrict(32, OFFSET) +Bytes #bufStrict(32, BASE))   requires #rangeUInt(256, BASE) andBool #rangeUInt(256, OFFSET) [simplification]
+    rule #hashedLocation("Array",    BASE, OFFSET .IntList) => keccak(#bufStrict(32, BASE))  +Word OFFSET                   requires #rangeUInt(256, BASE) andBool #rangeUInt(256, OFFSET)
+
+    syntax IntList ::= List{Int, ""} [symbol(intList), smtlib(intList)]
+ // -------------------------------------------------------------------
+
+
endmodule
+
+
module SOLIDITY-FIELDS
+    imports HASHED-LOCATIONS
+
+    syntax Contract
+    syntax Field
+    syntax ContractAccess ::= Contract
+                            | ContractAccess "." Field   [klabel(contract_access_field), symbol]
+                            | ContractAccess "[" Int "]" [klabel(contract_access_index), symbol]
+ // --------------------------------------------------------------------------------------------
+
+    syntax Int ::= #loc ( ContractAccess ) [klabel(contract_access_loc), function, symbol]
+ // --------------------------------------------------------------------------------------
+    rule #loc(_:Contract) => 0
+    rule #loc(C [ I ])    => #hash(#loc(C), I)
+
+    syntax Int ::= #hash ( Int , Int ) [klabel(contract_access_hash), function, symbol]
+ // -----------------------------------------------------------------------------------
+    rule #hash(I1, I2) => keccak(#bufStrict(32, I2) +Bytes #bufStrict(32, I1))
+
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/issues.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/issues.md deleted file mode 100644 index 206b038154..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/issues.md +++ /dev/null @@ -1,131 +0,0 @@ -EVM Design Issues -================= - -The EVM was the first successful general-purpose distributed programmable blockchain platform, but that doesn't make it without fault. -There are several issues with both the specification of the EVM (in the Yellow Paper), and with the general design of the EVM. -Most of these issues are written from the perspective of someone trying to do formal verification of the EVM. - -Issues with description of EVM ------------------------------- - -These can be ambiguities/confusing wording in the [Yellow Paper](https://github.com/ethereum/yellowpaper). - -- In section 9.4.2, exceptions are described as if they are all catchable before an opcode is executed. - While you may be able to implement EVM in this way, it's not clear that it's best (you have to duplicate computation), and we also are pretty sure no implementation even does this (including the C++ one). - Instead they throw exceptions when they happen and roll-back the state (which is what you would expect to happen). - Our original implementation tried to do it the way the Yellow Paper described, and it made everything harder/slower. - -- Again in section 9.4.2, it specifies that "these are the only ways exceptions can happen when executing". - This doesn't help with building implementations, because there is at least one other case that isn't described. - For example, if the memory is overflown, then the existing semantics doesn't do anything. - Should it throw an exception? - -- Some operators which access data of other accounts don't specify explicitly what to do if the other account doesn't exist. - `EXTCODESIZE` and `EXTCODECOPY` examples, though strangely enough `BALANCE` does specify what to do. - We think the community has reached agreement on this though, "non-existing accounts are empty accounts" or something along those lines. - -- What about contracts that have "junk bytes" in them? - We've seen a contract with "junk bytes", and use cases of contracts with junk bytes do exist. - For example, if you want to use some large chunk of data to be used in your contract but don't want to perform a sequences of `PUSH`, `CODECOPY` can be used to move the junk bytes into memory. - -- The description in Appendix H of the `CALLCODE` instruction describes it as like `CALL` except for the fourth argument to the Theta function. - However, it does not mention that this change from `Mu_s[1]` to `I_a` also applies to the specification of `C_NEW`. - -- The description in Appendix H of the `DELEGATECALL` instruction describes the gas provided to the caller as equal to `Mu_s[0]`. - However, this is clearly not the correct behavior, since `Mu_s[0]` is a user-provided value, and the user could set it equal to 2^256 - 1, leading to the user having an infinite amount of gas. - It's clear from the test suite that the intended behavior is to use `Ccallgas` but with the value for the value transfer equal to 0. - It also describes the exceptional condition of not enough balance in terms of `I_v`, but in fact no value transfer occurs so this condition should never occur. - -Issues with design of EVM -------------------------- - -More broadly, many features of the EVM seem to be poorly designed. -These can be issues from simple "why did they do it that way?" to "this makes doing formal reasoning about EVM harder". - -- Precompiled contracts: Why are there 4 precompiled contracts? - Calls into address 1 - 4 result in a "precompiled" contract being called (most of them some sort of cryptographic function). - There are plenty of opcodes free, we should just have those precompiled contracts be accessed through primitives (like how `SHA3` is done). - Another (albeit unlikely problem) is that of address-space collisions. - -- The byte-aligned local memory makes reasoning about EVM programs much more difficult. - Say, for instance, that you write two Words (256-bit) contiguously to local memory (which takes up addresses 0 - 64), then shift between them and read a word (say between addresses 16 - 48). - If one of those words was symbolic, the resulting symbolic word is a mess of an expression involving the original words. - Of course, in theory this is possible to reason about, but effectively this allows taking one symbolic value and turning it into 32 symbolic values. - This makes symbolic execution much slower/more painful. - Note also that attempting to use bit-vectors, where you have one symbolic boolean variable per bit, is currently infeasible with the existing SMT solvers like [Z3](https://github.com/Z3Prover/z3); while it works with 32-bit words in some program verifiers, it is disarmingly slow with 64-bit words and we failed to prove anything with 256-bit words. - -- Program representation is important in EVM (that is, you must be able to represent a program as a byte-array of opcodes). - When doing program analysis/abstract verification, you ideally would be allowed to make transformations on the program representation (e.g., convert it to a control-flow graph) without having to maintain a translation back. - Currently in EVM, the `*CODECOPY` opcodes allow regarding program pieces as data, meaning that a translation back must always be maintained, because using `CREATE` with `DELEGATECALL` allows executing arbitrary code. - For this reason, we had to build a parser/unparser and an assembler/disassembler into our semantics. - Putting a symbolic value through the process of disassembling -> unparsing loses a lot of semantic information about the original value. - While self-modifying code is nice and powerful in principle, we are not aware of any programming languages for the blockchain that encourage or even allow that. - -- In section H.2, the Yellow Paper states "All arithmetic is modulo 2^256 unless otherwise noted." - Reasoning "modulo" is very complex with the current SMT provers and it was indeed a, if not the most major difficulty in our [EVM verification efforts](proofs). - Additionally, the programs (smart contracts) we verified turned out to be wrong, in the sense that they showed unintended behavior, in the presence of arithmetic overflows anyway. - That is, arithmetic overflows were not expected to happen by the developers, so adding code to deal with the "modulo 2^256" behavior in case of arithmetic overflow was not even considered. - In such situations, it would be a lot better to simply throw an exception when arithmetic overflow occurs, thus indicating that something bad happened, than to default to "modulo 2^256" and ending up with a program computing wrong values. - We conjecture that words of 256 bits should be long enough for the current smart contract needs to afford to abruptly terminate computations when the limit is reached. - -Recommendations for the Future ------------------------------- - -In addition to the above mentioned issues, there are several things that could be improved about EVM in general as a distributed computation language. -Here we mention some. - -### Deterministic vs. Nondeterministic (and Proof of Work and Scalability) - -Because EVM is deterministic, it takes as long to verify a computation as it takes to run a computation. -In both cases, the entire program must be executed; there is no choice about what the next step to take is. - -In a nondeterministic language, execution is finding one execution path among many which "solves" the program. -For example, any logical language where there are several possible next inference steps is nondeterministic (eg. Prolog, Maude, K, Coq). -However, once a solution is found, presenting it is telling which choices were made at each nondeterministic step; verifying it is following that same sequence of steps. -If at each step there are a choice from `M` inference rules, and it takes `n` steps to reach a solution, then the speedup in verifying is `M^n`. - -One of the goals in a consensus-driven distributed store is scalability, which means as more resources are added to the network the network gets stronger. -Using a deterministic language means that we lose at least one dimension of this scalability; everyone verifying the state of the world must do as much work as it took to compute the state of the world. -Even many functional languages, by having evaluation strategies settled ahead of time, are deterministic (though they may have elegant ways of encoding nondeterministic systems). - -On the other hand, what secures many of these blockchain-consensus systems is proof of work. -Proof of work is the ultimate non-deterministic programming language; the programs are the blocks (before adding the nonce), and the solutions are the nonce added to the blocks so that it hashes low enough. -When using a nonce of size `2^N`, there are exactly `M = 2^N` next "inference steps", and they all must be searched uniformly to find a solution. -If instead the underlying programming language had some nondeterminism, some of the proof of work could be done *just by executing the transactions going into the block*. -Perhaps the two can be used to augment each other, allowing for some of the proof of work to be provided via finding a solution to the program and the rest via hashing. - -If such a system were implemented, it may be important to incentivize miners to supply solutions to programs/proofs on the blockchain. -Perhaps a system where the time between when a specification/theorem is submitted to the blockchain and when it is solved determines the reward for the computation could be used. -Natural incentive to place proofs of theorems on the blockchain would be provided in the form of the reward; this means it's against the miners interests to ignore transactions. -The hard part is incentivizing placing theorems on the blockchain early (as it may be advantageous to hoard theorems so that you can submit solutions early to collect the reward). - -### Termination - -The gas mechanic in EVM is designed to ensure that every program terminates so that users can't DOS the miners by submitting infinite computations. -However, there is no such guarantee that the proof of work computation done by miners terminates; there may be no combination of ordering of transactions and a nonce that yields a solution (though this is incredibly improbable). -Instead, we can leave it up to the miner to decide if pursuing a computation is worth the time lost in the pursuit. -Indeed, this directly increases the amount of work possible behind a proof of work, as much more useless work has been added to the system (via computations that don't terminate). - -In many sufficiently powerful nondeterministic languages, there will be plenty of execution search paths which do not terminate. -However, automated provers (execution engines) for these languages don't throw up their hands, instead they design better search tactics for the language. -It's not clear that leaving the burden of which transactions to attempt to the miner is entirely bad, especially when coupled with a system which rewards more for longer-standing transactions. - -The problem with this, it turns out, is not that users may DOS miners, but that miners may DOS other miners (by presenting blocks that they purport terminate). - -### Language Independence - -Language independence is difficult to achieve in a distributed system because everyone must agree on how programs are to be executed. -Two approaches are the *language-building language* approach and the *consensus-based* approach. - -In the language-building language approach, the underlying language of the blockchain is a language-building language. -Thus, contracts are free to introduce new languages simply as specifications (programs) in the underlying language, and other contracts may use those languages by referring to the language definition contract. -As a very simple example, if the underlying language was K, then you could submit a contract that is just a K definition giving semantics to the language you want to use in the future. -Along this line, we should use a logical framework as the underlying language. -Logical frameworks exhibit both non-determinism and language independence, making two improvements to EVM at the same time. - -The consensus-based approach is more flexible in the interpretation of "correct" executions of programs. -Essentially, everyone would vote on which execution is correct by rejecting ill-formed blocks (ill-formed here includes blocks which do not report a correct execution). -This lets the definition of the underlying languages evolve out of band; major changes to the semantics would essentially require widespread network agreement or a fork. -Indeed, the only thing that should be stored on the blockchain would be a hash of the program. - -These two techniques could perhaps be combined. diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/issues/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/issues/index.html new file mode 100644 index 0000000000..03ce103162 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/issues/index.html @@ -0,0 +1,353 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

EVM Design Issues

+

The EVM was the first successful general-purpose distributed programmable blockchain platform, but that doesn't make it without fault. +There are several issues with both the specification of the EVM (in the Yellow Paper), and with the general design of the EVM. +Most of these issues are written from the perspective of someone trying to do formal verification of the EVM.

+

Issues with description of EVM

+

These can be ambiguities/confusing wording in the Yellow Paper.

+
    +
  • +

    In section 9.4.2, exceptions are described as if they are all catchable before an opcode is executed. +While you may be able to implement EVM in this way, it's not clear that it's best (you have to duplicate computation), and we also are pretty sure no implementation even does this (including the C++ one). +Instead they throw exceptions when they happen and roll-back the state (which is what you would expect to happen). +Our original implementation tried to do it the way the Yellow Paper described, and it made everything harder/slower.

    +
  • +
  • +

    Again in section 9.4.2, it specifies that "these are the only ways exceptions can happen when executing". +This doesn't help with building implementations, because there is at least one other case that isn't described. +For example, if the memory is overflown, then the existing semantics doesn't do anything. +Should it throw an exception?

    +
  • +
  • +

    Some operators which access data of other accounts don't specify explicitly what to do if the other account doesn't exist. +EXTCODESIZE and EXTCODECOPY examples, though strangely enough BALANCE does specify what to do. +We think the community has reached agreement on this though, "non-existing accounts are empty accounts" or something along those lines.

    +
  • +
  • +

    What about contracts that have "junk bytes" in them? +We've seen a contract with "junk bytes", and use cases of contracts with junk bytes do exist. +For example, if you want to use some large chunk of data to be used in your contract but don't want to perform a sequences of PUSH, CODECOPY can be used to move the junk bytes into memory.

    +
  • +
  • +

    The description in Appendix H of the CALLCODE instruction describes it as like CALL except for the fourth argument to the Theta function. +However, it does not mention that this change from Mu_s[1] to I_a also applies to the specification of C_NEW.

    +
  • +
  • +

    The description in Appendix H of the DELEGATECALL instruction describes the gas provided to the caller as equal to Mu_s[0]. +However, this is clearly not the correct behavior, since Mu_s[0] is a user-provided value, and the user could set it equal to 2^256 - 1, leading to the user having an infinite amount of gas. +It's clear from the test suite that the intended behavior is to use Ccallgas but with the value for the value transfer equal to 0. +It also describes the exceptional condition of not enough balance in terms of I_v, but in fact no value transfer occurs so this condition should never occur.

    +
  • +
+

Issues with design of EVM

+

More broadly, many features of the EVM seem to be poorly designed. +These can be issues from simple "why did they do it that way?" to "this makes doing formal reasoning about EVM harder".

+
    +
  • +

    Precompiled contracts: Why are there 4 precompiled contracts? +Calls into address 1 - 4 result in a "precompiled" contract being called (most of them some sort of cryptographic function). +There are plenty of opcodes free, we should just have those precompiled contracts be accessed through primitives (like how SHA3 is done). +Another (albeit unlikely problem) is that of address-space collisions.

    +
  • +
  • +

    The byte-aligned local memory makes reasoning about EVM programs much more difficult. +Say, for instance, that you write two Words (256-bit) contiguously to local memory (which takes up addresses 0 - 64), then shift between them and read a word (say between addresses 16 - 48). +If one of those words was symbolic, the resulting symbolic word is a mess of an expression involving the original words. +Of course, in theory this is possible to reason about, but effectively this allows taking one symbolic value and turning it into 32 symbolic values. +This makes symbolic execution much slower/more painful. +Note also that attempting to use bit-vectors, where you have one symbolic boolean variable per bit, is currently infeasible with the existing SMT solvers like Z3; while it works with 32-bit words in some program verifiers, it is disarmingly slow with 64-bit words and we failed to prove anything with 256-bit words.

    +
  • +
  • +

    Program representation is important in EVM (that is, you must be able to represent a program as a byte-array of opcodes). +When doing program analysis/abstract verification, you ideally would be allowed to make transformations on the program representation (e.g., convert it to a control-flow graph) without having to maintain a translation back. +Currently in EVM, the *CODECOPY opcodes allow regarding program pieces as data, meaning that a translation back must always be maintained, because using CREATE with DELEGATECALL allows executing arbitrary code. +For this reason, we had to build a parser/unparser and an assembler/disassembler into our semantics. +Putting a symbolic value through the process of disassembling -> unparsing loses a lot of semantic information about the original value. +While self-modifying code is nice and powerful in principle, we are not aware of any programming languages for the blockchain that encourage or even allow that.

    +
  • +
  • +

    In section H.2, the Yellow Paper states "All arithmetic is modulo 2^256 unless otherwise noted." +Reasoning "modulo" is very complex with the current SMT provers and it was indeed a, if not the most major difficulty in our EVM verification efforts. +Additionally, the programs (smart contracts) we verified turned out to be wrong, in the sense that they showed unintended behavior, in the presence of arithmetic overflows anyway. +That is, arithmetic overflows were not expected to happen by the developers, so adding code to deal with the "modulo 2^256" behavior in case of arithmetic overflow was not even considered. +In such situations, it would be a lot better to simply throw an exception when arithmetic overflow occurs, thus indicating that something bad happened, than to default to "modulo 2^256" and ending up with a program computing wrong values. +We conjecture that words of 256 bits should be long enough for the current smart contract needs to afford to abruptly terminate computations when the limit is reached.

    +
  • +
+

Recommendations for the Future

+

In addition to the above mentioned issues, there are several things that could be improved about EVM in general as a distributed computation language. +Here we mention some.

+

Deterministic vs. Nondeterministic (and Proof of Work and Scalability)

+

Because EVM is deterministic, it takes as long to verify a computation as it takes to run a computation. +In both cases, the entire program must be executed; there is no choice about what the next step to take is.

+

In a nondeterministic language, execution is finding one execution path among many which "solves" the program. +For example, any logical language where there are several possible next inference steps is nondeterministic (eg. Prolog, Maude, K, Coq). +However, once a solution is found, presenting it is telling which choices were made at each nondeterministic step; verifying it is following that same sequence of steps. +If at each step there are a choice from M inference rules, and it takes n steps to reach a solution, then the speedup in verifying is M^n.

+

One of the goals in a consensus-driven distributed store is scalability, which means as more resources are added to the network the network gets stronger. +Using a deterministic language means that we lose at least one dimension of this scalability; everyone verifying the state of the world must do as much work as it took to compute the state of the world. +Even many functional languages, by having evaluation strategies settled ahead of time, are deterministic (though they may have elegant ways of encoding nondeterministic systems).

+

On the other hand, what secures many of these blockchain-consensus systems is proof of work. +Proof of work is the ultimate non-deterministic programming language; the programs are the blocks (before adding the nonce), and the solutions are the nonce added to the blocks so that it hashes low enough. +When using a nonce of size 2^N, there are exactly M = 2^N next "inference steps", and they all must be searched uniformly to find a solution. +If instead the underlying programming language had some nondeterminism, some of the proof of work could be done just by executing the transactions going into the block. +Perhaps the two can be used to augment each other, allowing for some of the proof of work to be provided via finding a solution to the program and the rest via hashing.

+

If such a system were implemented, it may be important to incentivize miners to supply solutions to programs/proofs on the blockchain. +Perhaps a system where the time between when a specification/theorem is submitted to the blockchain and when it is solved determines the reward for the computation could be used. +Natural incentive to place proofs of theorems on the blockchain would be provided in the form of the reward; this means it's against the miners interests to ignore transactions. +The hard part is incentivizing placing theorems on the blockchain early (as it may be advantageous to hoard theorems so that you can submit solutions early to collect the reward).

+

Termination

+

The gas mechanic in EVM is designed to ensure that every program terminates so that users can't DOS the miners by submitting infinite computations. +However, there is no such guarantee that the proof of work computation done by miners terminates; there may be no combination of ordering of transactions and a nonce that yields a solution (though this is incredibly improbable). +Instead, we can leave it up to the miner to decide if pursuing a computation is worth the time lost in the pursuit. +Indeed, this directly increases the amount of work possible behind a proof of work, as much more useless work has been added to the system (via computations that don't terminate).

+

In many sufficiently powerful nondeterministic languages, there will be plenty of execution search paths which do not terminate. +However, automated provers (execution engines) for these languages don't throw up their hands, instead they design better search tactics for the language. +It's not clear that leaving the burden of which transactions to attempt to the miner is entirely bad, especially when coupled with a system which rewards more for longer-standing transactions.

+

The problem with this, it turns out, is not that users may DOS miners, but that miners may DOS other miners (by presenting blocks that they purport terminate).

+

Language Independence

+

Language independence is difficult to achieve in a distributed system because everyone must agree on how programs are to be executed. +Two approaches are the language-building language approach and the consensus-based approach.

+

In the language-building language approach, the underlying language of the blockchain is a language-building language. +Thus, contracts are free to introduce new languages simply as specifications (programs) in the underlying language, and other contracts may use those languages by referring to the language definition contract. +As a very simple example, if the underlying language was K, then you could submit a contract that is just a K definition giving semantics to the language you want to use in the future. +Along this line, we should use a logical framework as the underlying language. +Logical frameworks exhibit both non-determinism and language independence, making two improvements to EVM at the same time.

+

The consensus-based approach is more flexible in the interpretation of "correct" executions of programs. +Essentially, everyone would vote on which execution is correct by rejecting ill-formed blocks (ill-formed here includes blocks which do not report a correct execution). +This lets the definition of the underlying languages evolve out of band; major changes to the semantics would essentially require widespread network agreement or a fork. +Indeed, the only thing that should be stored on the blockchain would be a hash of the program.

+

These two techniques could perhaps be combined.

+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/json-rpc.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/json-rpc.md deleted file mode 100644 index 78491f535c..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/json-rpc.md +++ /dev/null @@ -1,126 +0,0 @@ -JSON RPC -======== - -```k -requires "json.md" -``` - -JSON Extensions ---------------- - -Some common functions and extensions of JSON are provided here. - -```k -module JSON-EXT - imports JSON - imports STRING - imports BOOL -``` - -- `+JSONs` appends two JSON lists. -- `reverseJSONs` reverses a JSON list. - -```k - syntax JSONs ::= JSONs "+JSONs" JSONs [function] - // ------------------------------------------------ - rule .JSONs +JSONs JS' => JS' - rule (J , JS) +JSONs JS' => J , (JS +JSONs JS') - - syntax JSONs ::= reverseJSONs ( JSONs ) [klabel(reverseJSONs), function] - | reverseJSONsAux ( JSONs , JSONs ) [klabel(reverseJSONsAux), function] - // -------------------------------------------------------------------------------------- - rule reverseJSONs(JS) => reverseJSONsAux(JS, .JSONs) - - rule reverseJSONsAux(.JSONs, JS') => JS' - rule reverseJSONsAux((J, JS:JSONs), JS') => reverseJSONsAux(JS, (J, JS')) -``` - -- `qsortJSONs` quick-sorts a list of key-value pairs. -- `sortedJSONs` is a predicate saying whether a given list of JSONs is sorted or not. - -```k - syntax JSONs ::= qsortJSONs ( JSONs ) [klabel(qsortJSONs), function] - | #entriesLT ( String , JSONs ) [klabel(#entriesLT), function] - | #entriesGE ( String , JSONs ) [klabel(#entriesGE), function] - // ----------------------------------------------------------------------------- - rule qsortJSONs(.JSONs) => .JSONs - rule qsortJSONs(KEY : VALUE, REST) => qsortJSONs(#entriesLT(KEY, REST)) +JSONs (KEY : VALUE , qsortJSONs(#entriesGE(KEY, REST))) - - rule #entriesLT(_KEY, .JSONs) => .JSONs - rule #entriesLT( KEY, (KEY': VALUE, REST)) => KEY': VALUE , #entriesLT(KEY, REST) requires KEY' #entriesLT(KEY, REST) requires notBool KEY' .JSONs - rule #entriesGE( KEY, (KEY': VALUE, REST)) => KEY': VALUE , #entriesGE(KEY, REST) requires KEY' >=String KEY - rule #entriesGE( KEY, (KEY': _, REST)) => #entriesGE(KEY, REST) requires notBool KEY' >=String KEY - - syntax Bool ::= sortedJSONs ( JSONs ) [klabel(sortedJSONs), function] - // --------------------------------------------------------------------- - rule sortedJSONs( .JSONs ) => true - rule sortedJSONs( _KEY : _ ) => true - rule sortedJSONs( (KEY : _) , (KEY' : VAL) , REST ) => KEY <=String KEY' andThenBool sortedJSONs((KEY' : VAL) , REST) -``` - -**TODO**: Adding `Int` to `JSONKey` is a hack to make certain parts of semantics easier. - -```k - syntax JSONKey ::= Int - // ---------------------- -``` - -```k -endmodule -``` - -JSON-RPC --------- - -```k -module JSON-RPC - imports K-IO - imports LIST - imports JSON-EXT - - configuration - - $INPUT:Int - $OUTPUT:Int - - "":JSON - 0:JSON - "":JSON - [ .JSONs ] - undef - - .List - - - syntax JSON ::= "undef" [klabel(JSON-RPCundef), symbol] - // ------------------------------------------------------- - - syntax Bool ::= isProperJson ( JSON ) [klabel(isProperJson), function] - | isProperJsonList ( JSONs ) [klabel(isProperJsonList), function] - // ------------------------------------------------------------------------------- - rule isProperJson(_) => false [owise] - - rule isProperJson(null) => true - - rule isProperJson(_:Int) => true - rule isProperJson(_:Bool) => true - rule isProperJson(_:String) => true - - rule isProperJson(_:JSONKey : J) => isProperJson(J) - - rule isProperJson([ JS ]) => isProperJsonList(JS) - rule isProperJson({ JS }) => isProperJsonList(JS) - - rule isProperJsonList(.JSONs) => true - rule isProperJsonList(J, JS) => isProperJson(J) andBool isProperJsonList(JS) - - syntax JSONs ::= flattenJSONs ( JSONs ) [klabel(flattenJSONs), function] - // ------------------------------------------------------------------------ - rule flattenJSONs(.JSONs ) => .JSONs - rule flattenJSONs([.JSONs], JL) => flattenJSONs(JL) - rule flattenJSONs([J,JS] , JL) => J, flattenJSONs([JS], JL) -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/json-rpc/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/json-rpc/index.html new file mode 100644 index 0000000000..d3a876a6e1 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/json-rpc/index.html @@ -0,0 +1,312 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

JSON RPC

+
requires "json.md"
+
+

JSON Extensions

+

Some common functions and extensions of JSON are provided here.

+
module JSON-EXT
+    imports JSON
+    imports STRING
+    imports BOOL
+
+
    +
  • +JSONs appends two JSON lists.
  • +
  • reverseJSONs reverses a JSON list.
  • +
+
    syntax JSONs ::= JSONs "+JSONs" JSONs [function]
+ // ------------------------------------------------
+    rule .JSONs   +JSONs JS' => JS'
+    rule (J , JS) +JSONs JS' => J , (JS +JSONs JS')
+
+    syntax JSONs ::= reverseJSONs    ( JSONs         ) [klabel(reverseJSONs), function]
+                   | reverseJSONsAux ( JSONs , JSONs ) [klabel(reverseJSONsAux), function]
+ // --------------------------------------------------------------------------------------
+    rule reverseJSONs(JS) => reverseJSONsAux(JS, .JSONs)
+
+    rule reverseJSONsAux(.JSONs, JS') => JS'
+    rule reverseJSONsAux((J, JS:JSONs), JS') => reverseJSONsAux(JS, (J, JS'))
+
+
    +
  • qsortJSONs quick-sorts a list of key-value pairs.
  • +
  • sortedJSONs is a predicate saying whether a given list of JSONs is sorted or not.
  • +
+
    syntax JSONs ::= qsortJSONs ( JSONs )          [klabel(qsortJSONs), function]
+                   | #entriesLT ( String , JSONs ) [klabel(#entriesLT), function]
+                   | #entriesGE ( String , JSONs ) [klabel(#entriesGE), function]
+ // -----------------------------------------------------------------------------
+    rule qsortJSONs(.JSONs)            => .JSONs
+    rule qsortJSONs(KEY : VALUE, REST) => qsortJSONs(#entriesLT(KEY, REST)) +JSONs (KEY : VALUE , qsortJSONs(#entriesGE(KEY, REST)))
+
+    rule #entriesLT(_KEY, .JSONs)              => .JSONs
+    rule #entriesLT( KEY, (KEY': VALUE, REST)) => KEY': VALUE , #entriesLT(KEY, REST) requires         KEY' <String KEY
+    rule #entriesLT( KEY, (KEY':     _, REST)) =>               #entriesLT(KEY, REST) requires notBool KEY' <String KEY
+
+    rule #entriesGE(_KEY, .JSONs)              => .JSONs
+    rule #entriesGE( KEY, (KEY': VALUE, REST)) => KEY': VALUE , #entriesGE(KEY, REST) requires         KEY' >=String KEY
+    rule #entriesGE( KEY, (KEY':     _, REST)) =>               #entriesGE(KEY, REST) requires notBool KEY' >=String KEY
+
+    syntax Bool ::= sortedJSONs ( JSONs ) [klabel(sortedJSONs), function]
+ // ---------------------------------------------------------------------
+    rule sortedJSONs( .JSONs   ) => true
+    rule sortedJSONs( _KEY : _ ) => true
+    rule sortedJSONs( (KEY : _) , (KEY' : VAL) , REST ) => KEY <=String KEY' andThenBool sortedJSONs((KEY' : VAL) , REST)
+
+

TODO: Adding Int to JSONKey is a hack to make certain parts of semantics easier.

+
    syntax JSONKey ::= Int
+ // ----------------------
+
+
endmodule
+
+

JSON-RPC

+
module JSON-RPC
+    imports K-IO
+    imports LIST
+    imports JSON-EXT
+
+    configuration
+      <json-rpc>
+        <web3input> $INPUT:Int </web3input>
+        <web3output> $OUTPUT:Int </web3output>
+        <web3request>
+          <jsonrpc> "":JSON </jsonrpc>
+          <callid> 0:JSON </callid>
+          <method> "":JSON </method>
+          <params> [ .JSONs ] </params>
+          <batch> undef </batch>
+        </web3request>
+        <web3response> .List </web3response>
+      </json-rpc>
+
+    syntax JSON ::= "undef" [klabel(JSON-RPCundef), symbol]
+ // -------------------------------------------------------
+
+    syntax Bool ::= isProperJson     ( JSON  ) [klabel(isProperJson), function]
+                  | isProperJsonList ( JSONs ) [klabel(isProperJsonList), function]
+ // -------------------------------------------------------------------------------
+    rule isProperJson(_) => false [owise]
+
+    rule isProperJson(null) => true
+
+    rule isProperJson(_:Int)    => true
+    rule isProperJson(_:Bool)   => true
+    rule isProperJson(_:String) => true
+
+    rule isProperJson(_:JSONKey : J) => isProperJson(J)
+
+    rule isProperJson([ JS ]) => isProperJsonList(JS)
+    rule isProperJson({ JS }) => isProperJsonList(JS)
+
+    rule isProperJsonList(.JSONs) => true
+    rule isProperJsonList(J, JS)  => isProperJson(J) andBool isProperJsonList(JS)
+
+    syntax JSONs ::= flattenJSONs ( JSONs ) [klabel(flattenJSONs), function]
+ // ------------------------------------------------------------------------
+    rule flattenJSONs(.JSONs      ) => .JSONs
+    rule flattenJSONs([.JSONs], JL) => flattenJSONs(JL)
+    rule flattenJSONs([J,JS]  , JL) => J, flattenJSONs([JS], JL)
+endmodule
+
+
+
+ + +
+ + + +
+
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/bitwise-simplification.k b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/bitwise-simplification.k deleted file mode 100644 index 7b8215f825..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/bitwise-simplification.k +++ /dev/null @@ -1,120 +0,0 @@ -requires "word.md" - -module BITWISE-SIMPLIFICATION [symbolic] - imports EVM-TYPES - imports INT-SYMBOLIC - imports WORD - - // ########################################################################### - // bit-or - // ########################################################################### - - rule 0 |Int A => A [simplification] - rule A |Int 0 => A [simplification] - rule A |Int A => A [simplification] - - rule A |Int B => B |Int A [simplification(40), concrete(B), symbolic(A)] - - rule X |Int _ ==Int 0 => false requires 0 true [simplification, smt-lemma] - - // ########################################################################### - // bit-and - // ########################################################################### - - rule A &Int B => B &Int A [symbolic(A), concrete(B), simplification] - - rule 0 &Int _ => 0 [simplification] - rule _ &Int 0 => 0 [simplification] - rule A &Int A => A [simplification] - - rule chop ( ( maxUInt48 &Int X:Int ) *Int Y:Int ) => ( maxUInt48 &Int X:Int ) *Int Y - requires 0 <=Int X andBool 0 <=Int Y andBool Y <=Int pow208 [simplification] - - rule maxUInt8 &Int X true requires 0 <=Int X [simplification, smt-lemma] - rule maxUInt48 &Int X true requires 0 <=Int X [simplification, smt-lemma] - rule maxUInt160 &Int X true requires 0 <=Int X [simplification, smt-lemma] - - rule [bitwise-or-geq-zero]: 0 <=Int (X |Int Y) => true requires 0 <=Int X andBool 0 <=Int Y [simplification, smt-lemma] - rule [bitwise-and-geq-zero]: 0 <=Int (X &Int Y) => true requires 0 <=Int X andBool 0 <=Int Y [simplification, smt-lemma] - - rule [bitwise-or-lt-zero]: (X |Int Y) false requires 0 <=Int X andBool 0 <=Int Y andBool Z <=Int 0 [concrete(Z), simplification] - rule [bitwise-and-lt-zero]: (X &Int Y) false requires 0 <=Int X andBool 0 <=Int Y andBool Z <=Int 0 [concrete(Z), simplification] - - rule [bitwise-and-lt]: (X &Int Y) true requires 0 <=Int X andBool 0 <=Int Y andBool (X true requires 0 <=Int X andBool 0 <=Int Y andBool X Y requires #rangeUInt(XXX, Y) - rule [bitwise-and-maxUInt-identity]: - X &Int Y => Y - requires 0 <=Int X - andBool X +Int 1 ==Int 2 ^Int log2Int(X +Int 1) - andBool 0 <=Int Y andBool Y 0 requires #rangeUInt(XXX, Y) - rule [bitwise-and-notMaxUInt-zero]: - X &Int Y => 0 - requires #rangeUInt(256, X) - andBool pow256 -Int X ==Int 2 ^Int ( log2Int ( pow256 -Int X ) ) - andBool 0 <=Int Y andBool Y #asWord ( #range(BA, 32 -Int (log2Int(X +Int 1) /Int 8), log2Int(X +Int 1) /Int 8) ) - requires #rangeUInt(256, X) - andBool X +Int 1 ==Int 2 ^Int log2Int(X +Int 1) - andBool log2Int (X +Int 1) modInt 8 ==Int 0 - andBool lengthBytes(BA) ==Int 32 - [simplification, concrete(X), preserves-definedness] - - // Generalization of: notMaxUIntXXX &Int #asWord ( BA ) - rule X &Int #asWord ( BA ) => #asWord ( #range ( BA, 0, 32 -Int log2Int(pow256 -Int X) /Int 8 ) +Bytes padRightBytes(.Bytes, log2Int(pow256 -Int X) /Int 8, 0 ) ) - requires #rangeUInt(256, X) - andBool pow256 -Int X ==Int 2 ^Int ( log2Int ( pow256 -Int X ) ) - andBool log2Int ( pow256 -Int X ) modInt 8 ==Int 0 - andBool lengthBytes(BA) ==Int 32 - [simplification, concrete(X), preserves-definedness] - - // Generalization of: notMaxUIntXXX &Int (Y < Y < Y < maxUIntXXX &Int Y - // and notMaxUIntXXX &Int (Y |Int ( maxUIntXXX &Int T)) => notMaxUIntXXX &Int Y - rule X &Int (Y |Int (Z &Int T)) => X &Int Y - requires 0 <=Int X andBool 0 <=Int Y andBool 0 <=Int Z andBool 0 <=Int T - andBool ( X +Int 1 ==Int 2 ^Int log2Int ( X +Int 1 ) orBool // X is a maxUInt - pow256 -Int X ==Int 2 ^Int log2Int ( pow256 -Int X ) ) // X is a notMaxUInt - andBool X +Int Z ==Int maxUInt256 - [simplification, concrete(X, Z), comm] - - rule [notMaxUInt5-bit-and-nested]: - notMaxUInt5 &Int ( ( notMaxUInt5 &Int X ) +Int Y ) => chop ( ( notMaxUInt5 &Int X ) +Int ( notMaxUInt5 &Int Y ) ) - requires 0 <=Int X andBool 0 <=Int Y - [simplification, concrete(Y)] - - rule [lengthBytes-upInt-32-lower-bound]: - lengthBytes(X) <=Int notMaxUInt5 &Int ( lengthBytes(X) +Int 31 ) => true - requires lengthBytes(X) +Int 31 Int notMaxUInt5 &Int ( lengthBytes(X) +Int 31 ) => true - [simplification, smt-lemma] - - // ########################################################################### - // shift - // ########################################################################### - - rule (X < true - requires 0 <=Int X andBool 0 <=Int Y andBool Y true requires 0 <=Int X andBool 0 <=Int Y [simplification] - -endmodule diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/bytes-simplification.k b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/bytes-simplification.k deleted file mode 100644 index cc53b5cfbf..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/bytes-simplification.k +++ /dev/null @@ -1,318 +0,0 @@ -module BYTES-SIMPLIFICATION [symbolic] - imports INT-SYMBOLIC - imports EVM - imports BUF - - // ######################## - // Buffer Reasoning - // ######################## - - rule [bytes-not-equal-length]: - BA1:Bytes ==K BA2:Bytes => false - requires lengthBytes(BA1) =/=Int lengthBytes(BA2) - [simplification] - - rule [bytes-equal-concat-split-k]: - A:Bytes +Bytes B:Bytes ==K C:Bytes +Bytes D:Bytes => A ==K C andBool B ==K D - requires lengthBytes(A) ==Int lengthBytes(C) - orBool lengthBytes(B) ==Int lengthBytes(D) - [simplification] - - rule [bytes-equal-concat-split-ml]: - { A:Bytes +Bytes B:Bytes #Equals C:Bytes +Bytes D:Bytes } => { A #Equals C } #And { B #Equals D } - requires lengthBytes(A) ==Int lengthBytes(C) - orBool lengthBytes(B) ==Int lengthBytes(D) - [simplification] - - rule [signextend-min]: (signextend( _ , W:Int) s 0 requires W 0 requires W B [simplification] - rule [bytes-concat-empty-left]: .Bytes +Bytes B:Bytes => B [simplification] - - rule [bytes-concat-right-assoc-symb-l]: (B1:Bytes +Bytes B2:Bytes) +Bytes B3:Bytes => B1 +Bytes (B2 +Bytes B3) [symbolic(B1), simplification(40)] - rule [bytes-concat-right-assoc-symb-r]: (B1:Bytes +Bytes B2:Bytes) +Bytes B3:Bytes => B1 +Bytes (B2 +Bytes B3) [symbolic(B2), simplification(40)] - rule [bytes-concat-left-assoc-conc]: B1:Bytes +Bytes (B2:Bytes +Bytes B3:Bytes) => (B1 +Bytes B2) +Bytes B3 [concrete(B1, B2), symbolic(B3), simplification(40)] - - // #buf - - rule [buf-inject-k]: - #buf(W:Int, X:Int) ==K #buf(W:Int, Y:Int) => X ==Int Y - requires 0 <=Int W - andBool 0 <=Int X andBool X { X #Equals Y } - requires 0 <=Int W - andBool 0 <=Int X andBool X X ==Int #asInteger(B) - requires lengthBytes(B) <=Int 32 - andBool #rangeUInt(256, X) [simplification, concrete(B), comm] - - rule [buf-as-int-ml]: - { B:Bytes #Equals #buf(32, X:Int) } => { X #Equals #asInteger(B) } - requires lengthBytes(B) <=Int 32 - andBool #rangeUInt(256, X) [simplification, concrete(B), comm] - - rule [buf-asWord-invert-lr-len-leq]: - #buf (W:Int , #asWord(B:Bytes)) => #buf(W -Int lengthBytes(B), 0) +Bytes B - requires lengthBytes(B) <=Int W andBool W <=Int 32 - [simplification, concrete(W)] - - rule [buf-asWord-invert-lr-len-gt]: - #buf (W:Int , #asWord(B:Bytes)) => #range(B, lengthBytes(B) -Int W, W) - requires 0 <=Int W andBool W X - requires 0 <=Int WB andBool 0 <=Int X andBool - ( ( WB <=Int 32 andBool X Int 32 andBool X X - requires 0 <=Int WB andBool 0 <=Int X andBool 0 <=Int S andBool 0 <=Int WR - andBool S +Int WR ==Int WB - andBool X #buf(W1 +Int W2, 0) - requires 0 <=Int W1 andBool 0 <=Int W2 - [simplification] - - rule [buf-zero-concat-conc]: - #buf(W1:Int, 0) +Bytes #buf(W2:Int, 0) +Bytes B => #buf(W1 +Int W2, 0) +Bytes B - requires 0 <=Int W1 andBool 0 <=Int W2 - [simplification] - - rule [shift-as-asWord]: - X < #asWord ( #buf ( 32 -Int (Y /Int 8) , X ) +Bytes #buf ( Y /Int 8 , 0 ) ) - requires 0 <=Int X andBool X .Bytes - requires S B +Bytes #buf(W -Int lengthBytes(B), 0) - requires lengthBytes(B) <=Int W - [simplification] - - rule [range-params-equal-ml]: - { #range (B1:Bytes, S1:Int, W1:Int) #Equals #range (B2:Bytes, S2:Int, W2:Int) } => #Top - requires B1 ==K B2 andBool S1 ==Int S2 andBool W1 ==Int W2 - [simplification] - - rule [range-included-in-cHead]: - #range(B1:Bytes +Bytes _:Bytes, S:Int, W:Int) => #range(B1, S, W) - requires S +Int W <=Int lengthBytes(B1) - [simplification] - - rule [range-outside-cHead]: - #range(B1:Bytes +Bytes B2:Bytes, S:Int, W:Int) => #range(B2, S -Int lengthBytes(B1), W) - requires lengthBytes(B1) <=Int S - [simplification] - - rule [range-includes-cHead]: - #range(B1:Bytes +Bytes B2:Bytes, 0, W:Int) => B1 +Bytes #range(B2, 0, W -Int lengthBytes(B1)) - requires lengthBytes(B1) <=Int W - [simplification] - - rule [range-inside-cHead-base-conc]: - #range(B:Bytes, S1:Int +Int S2:Int, W:Int) => #range(#range(B, S2, lengthBytes(B) -Int S2), S1, W) - requires 0 <=Int S1 andBool 0 <=Int S2 andBool 0 #range(#range(B1, S, lengthBytes(B1) -Int S) +Bytes B2, 0, W) - requires 0 - #range(B, S1 +Int S2, minInt(W2, W1 -Int S2)) +Bytes #buf(maxInt(0, W2 -Int (W1 -Int S2)), 0) - requires 0 <=Int S1 andBool 0 <=Int W1 andBool 0 <=Int S2 andBool 0 <=Int W2 - [simplification] - - rule [range-join-base]: - #range(B, S1, W1) +Bytes #range(B, S2, W2) => #range(B, S1, W1 +Int W2) - requires S2 ==Int S1 +Int W1 - andBool 0 <=Int S1 andBool 0 <=Int W1 andBool 0 <=Int S2 andBool 0 <=Int W2 - [simplification] - - rule [range-join-concat]: - #range(B1, S1, W1) +Bytes ( #range(B1, S2, W2) +Bytes B2 ) => #range(B1, S1, W1 +Int W2) +Bytes B2 - requires S2 ==Int S1 +Int W1 - andBool 0 <=Int S1 andBool 0 <=Int W1 andBool 0 <=Int S2 andBool 0 <=Int W2 - [simplification] - - rule [range-reform-base]: - #range(B:Bytes, S:Int, minInt(W1:Int, W2:Int)) +Bytes #buf(maxInt(0, W3:Int), 0) => #range (B, S, W1) - requires W1 ==Int W2 +Int W3 - andBool W2 ==Int lengthBytes(B) -Int S - andBool 0 <=Int S andBool 0 <=Int W1 andBool 0 <=Int W2 - [simplification] - - rule [range-reform-concat]: - #range(B1:Bytes, S:Int, minInt(W1:Int, W2:Int)) +Bytes ( #buf(maxInt(0, W3:Int), 0) +Bytes B2:Bytes ) => #range (B1, S, W1) +Bytes B2 - requires W1 ==Int W2 +Int W3 - andBool W2 ==Int lengthBytes(B1) -Int S - andBool 0 <=Int S andBool 0 <=Int W1 andBool 0 <=Int W2 - [simplification] - - rule [range-buf-zero-symb]: - #range(#buf(W:Int, 0), S1:Int, W1:Int) => #buf(W1, 0) - requires 0 <=Int W andBool 0 <=Int S1 andBool 0 <=Int W1 - [simplification] - - rule [range-buf-zero-conc]: - #range(B, S1:Int, W1:Int) => #buf(W1, 0) - requires 0 <=Int S1 andBool 0 <=Int W1 - andBool #asInteger(B) ==Int 0 - [concrete(B), simplification] - - rule [range-buf-zero-concat]: - B:Bytes +Bytes #buf(W:Int, X:Int) => #buf(lengthBytes(B) +Int W, X) - requires 0 <=Int W andBool 0 <=Int X andBool X #buf(lengthBytes(B1) +Int W, X) +Bytes B2 - requires 0 <=Int W andBool 0 <=Int X andBool X - #let W = minInt(W2, S1 -Int S2) #in - #range(B1, S2, W) +Bytes #range(B1 [ S1 := B2 ], S1, W2 -Int W) - requires 0 <=Int S2 andBool S2 - #let S = S2 -Int S1 #in - #let W = minInt(W2, lengthBytes(B2) -Int S) #in - #range(B2, S, W) +Bytes #range(B1, S1 +Int lengthBytes(B2), W2 -Int W) - requires 0 <=Int S1 andBool S1 <=Int S2 andBool S2 <=Int S1 +Int lengthBytes(B2) - [simplification] - - rule [range-memUpdate-outside]: - #range(B1:Bytes [ S1:Int := B2:Bytes ], S2:Int, W2:Int) => #range(B1, S2, W2) - requires 0 <=Int S1 andBool 0 <=Int W2 andBool S1 +Int lengthBytes(B2) <=Int S2 [simplification] - - rule [range-buf-zero]: - #range (#buf(W1:Int, X:Int), S2:Int, W2:Int) => #buf(W2, 0) - requires 0 <=Int X andBool X #buf(W2, X) - requires 0 <=Int X andBool X BUF - requires lengthBytes(BUF) ==Int WIDTH [simplification] - - rule [range-eq-check]: - BZ +Bytes #range ( B, S, W ) ==K B => true - requires 0 <=Int S andBool 0 <=Int W - andBool lengthBytes( B ) ==Int S +Int W - andBool #asInteger( BZ ) ==Int 0 - andBool lengthBytes( BZ ) ==Int S - andBool #asWord ( B ) #Top - requires 0 <=Int S andBool 0 <=Int W - andBool lengthBytes( B ) ==Int S +Int W - andBool #asInteger( BZ ) ==Int 0 - andBool lengthBytes( BZ ) ==Int S - andBool #asWord ( B ) .Bytes - requires S - #range(B1, 0, S) +Bytes B2 +Bytes #range (B1 , S +Int lengthBytes(B2), lengthBytes(B1) -Int (S +Int lengthBytes(B2))) - requires 0 <=Int S andBool S +Int lengthBytes(B2) #range(B1, 0, S) +Bytes B2 - requires 0 <=Int S andBool lengthBytes(B1) <=Int S +Int lengthBytes(B2) - [simplification(60)] - - rule [memUpdate-reorder]: - B:Bytes [ S1:Int := B1:Bytes] [ S2:Int := B2:Bytes ] => B [ S2 := B2 ] [ S1 := B1 ] - requires 0 <=Int S2 andBool S2 B [ S2 := B2 ] - requires 0 <=Int S2 andBool S2 <=Int S1 andBool S1 +Int lengthBytes(B1) <=Int S2 +Int lengthBytes(B2) - [simplification] - - // lengthBytes - - rule [lengthBytes-geq-zero]: 0 <=Int lengthBytes ( _ ) => true [simplification, smt-lemma] - rule [lengthBytes-geq-nonPos]: X <=Int lengthBytes ( _ ) => true requires X <=Int 0 [simplification, concrete(X)] - rule [lengthBytes-concat]: lengthBytes(BUF1 +Bytes BUF2) => lengthBytes(BUF1) +Int lengthBytes(BUF2) [simplification] - rule [lengthBytes-buf]: lengthBytes(#buf(S, _)) => S requires 0 <=Int S [simplification] - rule [lengthBytes-range]: lengthBytes(#range(_, S:Int, W:Int)) => maxInt(0, W) requires 0 <=Int S [simplification] - rule [lengthBytes-prtw]: lengthBytes(#padRightToWidth(W:Int, B:Bytes)) => maxInt(lengthBytes(B), W) [simplification] - - rule [lengthBytes-leq-zero]: lengthBytes(B:Bytes) <=Int 0 => B ==K .Bytes [simplification] - - // #asWord - - rule #asWord(WS) >>Int M => #asWord(#range(WS, 0, lengthBytes(WS) -Int (M /Int 8) )) - requires 0 <=Int M andBool M modInt 8 ==Int 0 - [simplification, preserves-definedness] - - // This simplification needs to be generalised properly - rule notMaxUInt224 &Int #asWord(#padRightToWidth(32, BUF)) => #asWord(#padRightToWidth(32, BUF)) - requires lengthBytes(BUF) <=Int 4 [simplification] - - rule #padToWidth(32, #asByteStack(V)) => #buf(32, V) requires #rangeUInt(256, V) [simplification] - - // #padRightToWidth - - rule #padRightToWidth ( X:Int, B:Bytes ) => B +Bytes padRightBytes(.Bytes, X -Int lengthBytes(B), 0 ) - requires lengthBytes(B) <=Int X - [simplification, concrete(X)] - - // #ecrec - - rule lengthBytes ( #ecrec ( _ , _ , _ , _ ) ) <=Int 32 => true - [simplification, smt-lemma] - - rule #asWord ( #ecrec ( _ , _ , _ , _ ) ) true - [simplification, smt-lemma] - -endmodule diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/evm-int-simplification.k b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/evm-int-simplification.k deleted file mode 100644 index b8793ee89f..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/evm-int-simplification.k +++ /dev/null @@ -1,97 +0,0 @@ -requires "evm-types.md" - -module EVM-INT-SIMPLIFICATION - imports EVM-INT-SIMPLIFICATION-HASKELL -endmodule - -module EVM-INT-SIMPLIFICATION-HASKELL [symbolic] - imports EVM-INT-SIMPLIFICATION-COMMON -endmodule - -module EVM-INT-SIMPLIFICATION-COMMON - imports INT - imports BOOL - imports EVM-TYPES - imports WORD - - // ########################################################################### - // up/Int - // ########################################################################### - - rule [upInt-lt-true]: - ((X up/Int Y) *Int Y) true - requires X +Int Y <=Int Z andBool 0 false - requires Z <=Int X andBool 0 X modInt Y ==Int 0 - requires 0 X modInt Y =/=Int 0 - requires 0 true - requires 0 X modInt Y ==Int 0 - requires 0 X modInt Y =/=Int 0 - requires 0 true [simplification, smt-lemma] - rule [asWord-ub]: #asWord(_WS) true [simplification, smt-lemma] - - rule [asWord-lt]: - #asWord ( BA ) true - requires 2 ^Int ( lengthBytes(BA) *Int 8) <=Int X - [concrete(X), simplification] - - rule [asWord-lt-concat]: - #asWord ( BA1 +Bytes BA2 ) #asWord ( BA1 ) true - requires 0 <=Int S andBool 0 <=Int W - andBool 2 ^Int ( 8 *Int W ) <=Int X - [simplification, concrete(S, W, X), preserves-definedness] - - rule [lt-asWord-range]: - X X I requires #rangeUInt( 256 , I ) [simplification] - rule [chop-upper-bound]: 0 <=Int chop(_V) => true [simplification, smt-lemma] - rule [chop-lower-bound]: chop(_V) true [simplification, smt-lemma] - - rule [chop-sum-left]: chop ( chop ( X:Int ) +Int Y:Int ) => chop ( X +Int Y ) [simplification] - rule [chop-sum-right]: chop ( X:Int +Int chop ( Y:Int ) ) => chop ( X +Int Y ) [simplification] - -endmodule diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/int-simplification.k b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/int-simplification.k deleted file mode 100644 index 66f345089b..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/int-simplification.k +++ /dev/null @@ -1,218 +0,0 @@ -module INT-SIMPLIFICATION - imports INT-SIMPLIFICATION-HASKELL -endmodule - -module INT-SIMPLIFICATION-HASKELL [symbolic] - imports INT-SIMPLIFICATION-COMMON - - // ########################################################################### - // add, sub - // ########################################################################### - - // associativity normalization - - rule A +Int (B +Int C) => (A +Int B) +Int C [symbolic(A, B), concrete(C), simplification(40)] - rule A +Int (B -Int C) => (A +Int B) -Int C [symbolic(A, B), concrete(C), simplification(40)] - rule A -Int (B +Int C) => (A -Int B) -Int C [symbolic(A, B), concrete(C), simplification(40)] - rule A -Int (B -Int C) => (A -Int B) +Int C [symbolic(A, B), concrete(C), simplification(40)] - - rule A +Int (B -Int C) => (A -Int C) +Int B [symbolic(A, C), concrete(B), simplification(40)] - rule A -Int (B -Int C) => (A +Int C) -Int B [symbolic(A, C), concrete(B), simplification(40)] - - rule (A +Int B) +Int C => (A +Int C) +Int B [concrete(B), symbolic(A, C), simplification(40)] - rule (A +Int B) -Int C => (A -Int C) +Int B [concrete(B), symbolic(A, C), simplification(40)] - rule (A -Int B) +Int C => (A +Int C) -Int B [concrete(B), symbolic(A, C), simplification(40)] - rule (A -Int B) -Int C => (A -Int C) -Int B [concrete(B), symbolic(A, C), simplification(40)] - - rule (A +Int B) +Int C => A +Int (B +Int C) [concrete(B, C), symbolic(A), simplification(40)] - rule (A +Int B) -Int C => A +Int (B -Int C) [concrete(B, C), symbolic(A), simplification(40)] - rule (A -Int B) +Int C => A +Int (C -Int B) [concrete(B, C), symbolic(A), simplification(40)] - rule (A -Int B) -Int C => A -Int (B +Int C) [concrete(B, C), symbolic(A), simplification(40)] - - // ########################################################################### - // comparison normalization - // ########################################################################### - - rule A +Int B A A <=Int C -Int B [concrete(B, C), symbolic(A), simplification(45)] - rule A +Int B >Int C => A >Int C -Int B [concrete(B, C), symbolic(A), simplification(45)] - rule A +Int B >=Int C => A >=Int C -Int B [concrete(B, C), symbolic(A), simplification(45)] - - rule A +Int B B B <=Int C -Int A [concrete(A, C), symbolic(B), simplification(45)] - rule A +Int B >Int C => B >Int C -Int A [concrete(A, C), symbolic(B), simplification(45)] - rule A +Int B >=Int C => B >=Int C -Int A [concrete(A, C), symbolic(B), simplification(45)] - - rule A -Int B A A <=Int C +Int B [concrete(B, C), symbolic(A), simplification(45)] - rule A -Int B >Int C => A >Int C +Int B [concrete(B, C), symbolic(A), simplification(45)] - rule A -Int B >=Int C => A >=Int C +Int B [concrete(B, C), symbolic(A), simplification(45)] - - rule A -Int B A -Int C A -Int C <=Int B [concrete(A, C), symbolic(B), simplification(45)] - rule A -Int B >Int C => A -Int C >Int B [concrete(A, C), symbolic(B), simplification(45)] - rule A -Int B >=Int C => A -Int C >=Int B [concrete(A, C), symbolic(B), simplification(45)] - - rule A A -Int B A -Int B <=Int C [concrete(A, B), symbolic(C), simplification(45)] - rule A >Int B +Int C => A -Int B >Int C [concrete(A, B), symbolic(C), simplification(45)] - rule A >=Int B +Int C => A -Int B >=Int C [concrete(A, B), symbolic(C), simplification(45)] - - rule A A -Int C A -Int C <=Int B [concrete(A, C), symbolic(B), simplification(45)] - rule A >Int B +Int C => A -Int C >Int B [concrete(A, C), symbolic(B), simplification(45)] - rule A >=Int B +Int C => A -Int C >=Int B [concrete(A, C), symbolic(B), simplification(45)] - - rule A C C <=Int B -Int A [concrete(A, B), symbolic(C), simplification(45)] - rule A >Int B -Int C => C >Int B -Int A [concrete(A, B), symbolic(C), simplification(45)] - rule A >=Int B -Int C => C >=Int B -Int A [concrete(A, B), symbolic(C), simplification(45)] - - rule A A +Int C A +Int C <=Int B [concrete(A, C), symbolic(B), simplification(45)] - rule A >Int B -Int C => A +Int C >Int B [concrete(A, C), symbolic(B), simplification(45)] - rule A >=Int B -Int C => A +Int C >=Int B [concrete(A, C), symbolic(B), simplification(45)] - - rule A +Int B ==Int C => A ==Int C -Int B [concrete(B, C), symbolic(A), simplification(45), comm] - rule A +Int B ==Int C => B ==Int C -Int A [concrete(A, C), symbolic(B), simplification(45), comm] - rule A -Int B ==Int C => A ==Int C +Int B [concrete(B, C), symbolic(A), simplification(45), comm] - rule A -Int B ==Int C => A -Int C ==Int B [concrete(A, C), symbolic(B), simplification(45), comm] - - rule { A +Int B #Equals C } => { A #Equals C -Int B } [concrete(B, C), symbolic(A), simplification(45), comm] - rule { A +Int B #Equals C } => { B #Equals C -Int A } [concrete(A, C), symbolic(B), simplification(45), comm] - rule { A -Int B #Equals C } => { A #Equals C +Int B } [concrete(B, C), symbolic(A), simplification(45), comm] - rule { A -Int B #Equals C } => { A -Int C #Equals B } [concrete(A, C), symbolic(B), simplification(45), comm] - - rule A +Int B A -Int C A -Int C <=Int D -Int B [concrete(B, D), symbolic(A, C), simplification(45)] - rule A +Int B >Int C +Int D => A -Int C >Int D -Int B [concrete(B, D), symbolic(A, C), simplification(45)] - rule A +Int B >=Int C +Int D => A -Int C >=Int D -Int B [concrete(B, D), symbolic(A, C), simplification(45)] - - rule A +Int B ==Int C +Int D => A -Int C ==Int D -Int B [concrete(B, D), symbolic(A, C), simplification(45)] - - rule { A +Int B #Equals C +Int D } => { A -Int C #Equals D -Int B } [concrete(B, D), symbolic(A, C), simplification(45)] - -endmodule - -module INT-SIMPLIFICATION-COMMON - imports INT - imports BOOL - - // ########################################################################### - // add, sub - // ########################################################################### - - // 2 terms - rule A -Int A => 0 [simplification] - rule A -Int 0 => A [simplification] - rule 0 +Int A => A [simplification] - rule A +Int 0 => A [simplification] - - // 3 terms - rule (A +Int B) -Int B => A [simplification] - rule (A -Int B) +Int B => A [simplification] - rule A -Int (A -Int B) => B [simplification] - rule A +Int (B -Int A) => B [simplification] - rule (A +Int B) -Int A => B [simplification] - - // 4 terms - // NOTE: these rules appear to be necessary for tests/specs/benchmarks/ecrecoverloop02-sig1-invalid-spec.k - rule (A +Int B) +Int (C -Int A) => B +Int C [simplification] - rule (A +Int B) -Int (A +Int C) => B -Int C [simplification] - rule (A +Int B) -Int (C +Int A) => B -Int C [simplification] - rule (A +Int B) +Int (C -Int B) => A +Int C [simplification] - rule (A -Int B) -Int (C -Int B) => A -Int C [simplification] - rule ((A -Int B) -Int C) +Int B => A -Int C [simplification] - - // 5 terms - // NOTE: required for `tests/specs/functional/infinite-gas-spec.k.prove` (haskell) - rule (A +Int B +Int C) -Int (A +Int D) => B +Int (C -Int D) [simplification] - rule (C +Int (A -Int D)) +Int (B -Int A) => C +Int (B -Int D) [simplification] - rule (((A -Int B) -Int C) -Int D) +Int B => (A -Int C) -Int D [simplification] - - // ########################################################################### - // mul - // ########################################################################### - - rule 1 *Int A => A [simplification] - rule A *Int 1 => A [simplification] - rule 0 *Int _ => 0 [simplification] - rule _ *Int 0 => 0 [simplification] - - rule (A *Int C) +Int (B *Int C) => (A +Int B) *Int C [simplification] - rule (A *Int C) -Int (B *Int C) => (A -Int B) *Int C [simplification] - - rule (E *Int A) +Int B +Int C +Int D +Int (F *Int A) => ((E +Int F) *Int A) +Int B +Int C +Int D [simplification] - - // ########################################################################### - // div - // ########################################################################### - - rule A /Int 1 => A [simplification, preserves-definedness] - - // safeMath mul check c / a == b where c == a * b - rule (A *Int B) /Int A => B requires A =/=Int 0 [simplification, preserves-definedness] - - rule ((A *Int B) /Int C) /Int B => A /Int C requires B =/=Int 0 andBool C =/=Int 0 [simplification, preserves-definedness] - - rule (A /Int 32) *Int 32 => A requires A modInt 32 ==Int 0 [simplification, preserves-definedness] - - rule (A *Int B) /Int C <=Int D => true - requires 0 <=Int A andBool 0 <=Int B andBool 0 A requires 0 <=Int A andBool A A requires A <=Int B [simplification] - rule [minint-right]: minInt(A, B) => B requires B <=Int A [simplification] - - rule [minint-lt]: minInt(A, B) A A <=Int C orBool B <=Int C [simplification] - rule [minint-gt]: A A A <=Int B andBool A <=Int C [simplification] - - rule [minInt-factor-left]: minInt ( A:Int +Int B:Int, A:Int +Int C:Int ) => A +Int minInt ( B, C ) [simplification] - rule [minInt-factor-right]: minInt ( A:Int +Int B:Int, C:Int +Int B:Int ) => minInt ( A, C ) +Int B [simplification] - - rule [maxint-left]: maxInt(A:Int, B:Int) => B requires A <=Int B [simplification] - rule [maxint-right]: maxInt(A:Int, B:Int) => A requires B <=Int A [simplification] - - rule [maxint-lt]: maxInt(A:Int, B:Int) A A <=Int C andBool B <=Int C [simplification] - rule [maxint-gt]: A:Int A A <=Int B orBool A <=Int C [simplification] - - rule [maxInt-factor-left]: maxInt ( A:Int +Int B:Int, A:Int +Int C:Int ) => A +Int maxInt ( B, C ) [simplification] - rule [maxInt-factor-right]: maxInt ( A:Int +Int B:Int, C:Int +Int B:Int ) => maxInt ( A, C ) +Int B [simplification] - - // ########################################################################### - // inequality - // ########################################################################### - - rule A +Int B false requires 0 <=Int B [simplification] - rule A +Int B false requires 0 <=Int A [simplification] - - rule A false requires 0 <=Int B [simplification] - - rule 0 true requires 0 <=Int A [simplification, preserves-definedness] - - // inequality sign normalization - rule A >Int B => B =Int B => B <=Int A [simplification] - rule notBool (A B <=Int A [simplification] - rule notBool (A <=Int B) => B true requires 0 <=Int A andBool 0 <=Int B [simplification] - rule 0 <=Int A *Int B => true requires 0 <=Int A andBool 0 <=Int B [simplification] - - rule A -Int B +Int C <=Int D => false requires D true requires 0 <=Int I [simplification, smt-lemma] - rule 0 <=Int #ceil32(I) -Int I => true requires 0 <=Int I [simplification] - - rule X *Int Y true requires Y <=Int maxUInt256 /Int X [simplification] - rule #if B #then C +Int C1 #else C +Int C2 #fi => C +Int #if B #then C1 #else C2 #fi [simplification] - - // ######################## - // Set Reasoning - // ######################## - - rule X in (SetItem(Y) _ ) => true requires X ==Int Y [simplification] - rule X in (SetItem(Y) REST) => X in REST requires X =/=Int Y [simplification] - - rule ( S:Set |Set SetItem ( X ) ) |Set SetItem( X ) => ( S:Set |Set SetItem ( X ) ) [simplification] - rule ( ( S:Set |Set SetItem ( X ) ) |Set SetItem ( Y ) ) |Set SetItem( X ) => ( ( S:Set |Set SetItem ( X ) ) |Set SetItem ( Y ) ) [simplification] - - // ######################## - // Word Reasoning - // ######################## - - rule 0 <=Int #sizeWordStack ( _ , N ) => true requires 0 <=Int N [simplification, smt-lemma] - - // bool2Word range & simplification - rule 0 <=Int bool2Word(_B) => true [simplification] - rule bool2Word(_B) true [simplification] - - rule bool2Word(A) |Int bool2Word(B) => bool2Word(A orBool B) [simplification] - rule bool2Word(A) &Int bool2Word(B) => bool2Word(A andBool B) [simplification] - - rule 1 |Int bool2Word(_B) => 1 [simplification] - rule 1 &Int bool2Word( B) => bool2Word(B) [simplification] - - rule bool2Word(_B) |Int 1 => 1 [simplification] - rule bool2Word( B) &Int 1 => bool2Word(B) [simplification] - - // #newAddr range - rule 0 <=Int #newAddr(_,_) => true [simplification] - rule #newAddr(_,_) true [simplification] - rule #newAddr(_,_) true [simplification] - - rule #isPrecompiledAccount(#newAddr(_, _), _) => false [simplification] - - // ######################## - // Keccak - // ######################## - - // Required for #Ceil(#buf) - rule 0 <=Int keccak( _ ) => true [simplification] - rule keccak( _ ) true [simplification] - - // ######################## - // Map Reasoning - // ######################## - - rule 0 <=Int #lookup( _M:Map , _ ) => true [simplification, smt-lemma] - rule #lookup( _M:Map , _ ) true [simplification, smt-lemma] - - rule #lookup ( _M:Map [ K1 <- V1 ] , K2 ) => #lookup ( K1 |-> V1 , K1 ) requires K1 ==Int K2 [simplification] - rule #lookup ( M:Map [ K1 <- _ ] , K2 ) => #lookup ( M , K2 ) requires K1 =/=Int K2 [simplification] - rule #lookup ( (K1:Int |-> _) M:Map, K2:Int) => #lookup ( M , K2 ) requires K1 =/=Int K2 [simplification] - - rule M:Map [ I1:Int <- V1:Int ] [ I2:Int <- V2:Int ] ==K M:Map [ I2 <- V2 ] [ I1 <- V1 ] => true - requires I1 =/=Int I2 - [simplification] - - // Hardcoded #addrFromPrivateKey simplifications, see: https://github.com/runtimeverification/haskell-backend/issues/3573 - rule #addrFromPrivateKey("0x0000000000000000000000000000000000000000000000000000000000000001") => 721457446580647751014191829380889690493307935711 [priority(40), concrete] - - // ######################## - // Memory - // ######################## - - rule #memoryUsageUpdate(MU, _, WIDTH) => MU requires WIDTH <=Int 0 [simplification] - - rule 0 <=Int #memoryUsageUpdate(MU, START, WIDTH) => true requires 0 <=Int MU andBool 0 <=Int START andBool 0 <=Int WIDTH [simplification] - - rule #memoryUsageUpdate(#memoryUsageUpdate(MU, START1, WIDTH1), START2, WIDTH2) => #memoryUsageUpdate(MU, START1, WIDTH1) - requires #rangeUInt(256, MU) andBool 0 #memoryUsageUpdate(MU, START2, WIDTH2) - requires #rangeUInt(256, MU) andBool 0 true [simplification] - rule 0 <=Int Cmem(_, N) => true requires 0 <=Int N [simplification] - rule 0 <=Int Caddraccess(_, _) => true [simplification] - rule 0 <=Int Csstore(_, _, _, _) => true [simplification] - rule 0 <=Int Cgascap(_, _:Int, _:Int, _) => true [simplification] - rule 0 <=Int #allBut64th(_:Int) => true [simplification] - rule 0 <=Int Cextra(_, _, _, _) => true [simplification] - rule 0 <=Int _:ScheduleConst < _:Schedule > => true [simplification] - rule 0 <=Int G up/Int I => true requires 0 <=Int G andBool 0 true [simplification] - - rule G false - requires Gsload < SCHED > <=Int G - andBool Gsstoreset < SCHED > <=Int G - andBool Gsstorereset < SCHED > <=Int G - [simplification] - - rule Csstore(SCHED, _:Int, _:Int, _) <=Int G => true - requires Gsload < SCHED > <=Int G - andBool Gsstoreset < SCHED > <=Int G - andBool Gsstorereset < SCHED > <=Int G - [simplification] - - rule G <=Int Csstore(SCHED, _:Int, _:Int, _) => false - requires Gsload < SCHED > true - requires Gsload < SCHED > #asWord(#range(BUF, 0, lengthBytes(BUF) -Int log256Int(D))) - requires D ==Int 256 ^Int log256Int(D) andBool D >=Int 0 - andBool lengthBytes(BUF) >=Int log256Int(D) [simplification, preserves-definedness] - - rule notBool (X ==Int 0) => X ==Int 1 requires #rangeBool(X) [simplification] - rule notBool (X ==Int 1) => X ==Int 0 requires #rangeBool(X) [simplification] - rule bool2Word(X ==Int 1) => X requires #rangeBool(X) [simplification] - - //Simplification of bool2Word() ==Int CONCRETE, #buf() ==K CONCRETE - rule I ==Int bool2Word( B:Bool ) => bool2Word(B) ==Int I [simplification, concrete(I)] - rule bool2Word( B:Bool ) ==Int I => B ==K word2Bool(I) [simplification, concrete(I)] - - // ######################## - // Arithmetic - // ######################## - - rule N modInt pow160 => N requires #rangeUInt(160, N) [simplification] - - // ; Z3 version 4.8.12 - // (set-option :smt.mbqi true) - // - // ; 2^256 - // (declare-const pow256 Int) - // (assert (= pow256 115792089237316195423570985008687907853269984665640564039457584007913129639936)) - // - // (define-fun chop ((x Int)) Int (mod x pow256)) - // (define-fun range256 ((x Int)) Bool (and (>= x 0) (< x pow256))) - - // (push) - // (assert (forall ((x Int) (y Int)) (=> (and (<= pow256 (+ x y)) (range256 x) (range256 y)) (= (< (chop (+ x y)) x) true)))) - // (check-sat) - // (pop) - rule chop ( X +Int Y ) true requires pow256 <=Int ( X +Int Y ) andBool #rangeUInt(256, X) andBool #rangeUInt(256, Y) [simplification] - - // (push) - // (assert (forall ((x Int) (y Int)) (=> (and (<= pow256 (+ x y)) (range256 x) (range256 y)) (= (<= x (chop (+ x y))) false)))) - // (check-sat) - // (pop) - rule X <=Int chop ( X +Int Y ) => false requires pow256 <=Int ( X +Int Y ) andBool #rangeUInt(256, X) andBool #rangeUInt(256, Y) [simplification] - - // ######################## - // Map Reasoning - // ######################## - - rule { M:Map [ I1:Int <- V1:Int ] [ I2:Int <- V2:Int ] #Equals M:Map [ I2 <- V2 ] [ I1 <- V1 ] } => #Top - requires I1 =/=Int I2 - [simplification] - - // ######################## - // Boolean Logic - // ######################## - - rule B ==Bool true => B [simplification, comm] - rule B ==Bool false => notBool B [simplification, comm] - - rule notBool notBool B => B [simplification] - - rule (notBool (A andBool B)) andBool A => (notBool B) andBool A [simplification] - -endmodule diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/network.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/network.md deleted file mode 100644 index 3f89291b7a..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/network.md +++ /dev/null @@ -1,123 +0,0 @@ -Network State -============= - -This file represents all the network state present in the EVM. -It will incrementally build up to supporting the entire [EVM-C API]. - -```k -module NETWORK - imports STRING-SYNTAX - - syntax String ::= StatusCode2String(StatusCode) [klabel(StatusCode2String), function] - // ------------------------------------------------------------------------------------- -``` - -EVM Status Codes ----------------- - -### Exceptional Codes - -The following codes all indicate that the VM ended execution with an exception, but give details about how. - -- `EVMC_FAILURE` is a catch-all for generic execution failure. -- `EVMC_INVALID_INSTRUCTION` indicates reaching the designated `INVALID` opcode. -- `EVMC_UNDEFINED_INSTRUCTION` indicates that an undefined opcode has been reached. -- `EVMC_OUT_OF_GAS` indicates that execution exhausted the gas supply. -- `EVMC_BAD_JUMP_DESTINATION` indicates a `JUMP*` to a non-`JUMPDEST` location. -- `EVMC_STACK_OVERFLOW` indicates pushing more than 1024 elements onto the wordstack. -- `EVMC_STACK_UNDERFLOW` indicates popping elements off an empty wordstack. -- `EVMC_CALL_DEPTH_EXCEEDED` indicates that we have executed too deeply a nested sequence of `CALL*` or `CREATE` opcodes. -- `EVMC_INVALID_MEMORY_ACCESS` indicates that a bad memory access occurred. - This can happen when accessing local memory with `CODECOPY*` or `CALLDATACOPY`, or when accessing return data with `RETURNDATACOPY`. -- `EVMC_STATIC_MODE_VIOLATION` indicates that a `STATICCALL` tried to change state. - **TODO:** Avoid `_ERROR` suffix that suggests fatal error. -- `EVMC_PRECOMPILE_FAILURE` indicates an errors in the precompiled contracts (eg. invalid points handed to elliptic curve functions). - -```k - syntax ExceptionalStatusCode ::= "EVMC_FAILURE" - | "EVMC_INVALID_INSTRUCTION" - | "EVMC_UNDEFINED_INSTRUCTION" - | "EVMC_OUT_OF_GAS" - | "EVMC_BAD_JUMP_DESTINATION" - | "EVMC_STACK_OVERFLOW" - | "EVMC_STACK_UNDERFLOW" - | "EVMC_CALL_DEPTH_EXCEEDED" - | "EVMC_INVALID_MEMORY_ACCESS" - | "EVMC_STATIC_MODE_VIOLATION" - | "EVMC_PRECOMPILE_FAILURE" - | "EVMC_NONCE_EXCEEDED" - // ------------------------------------------------------------- - rule StatusCode2String(EVMC_FAILURE) => "EVMC_FAILURE" - rule StatusCode2String(EVMC_INVALID_INSTRUCTION) => "EVMC_INVALID_INSTRUCTION" - rule StatusCode2String(EVMC_UNDEFINED_INSTRUCTION) => "EVMC_UNDEFINED_INSTRUCTION" - rule StatusCode2String(EVMC_OUT_OF_GAS) => "EVMC_OUT_OF_GAS" - rule StatusCode2String(EVMC_BAD_JUMP_DESTINATION) => "EVMC_BAD_JUMP_DESTINATION" - rule StatusCode2String(EVMC_STACK_OVERFLOW) => "EVMC_STACK_OVERFLOW" - rule StatusCode2String(EVMC_STACK_UNDERFLOW) => "EVMC_STACK_UNDERFLOW" - rule StatusCode2String(EVMC_CALL_DEPTH_EXCEEDED) => "EVMC_CALL_DEPTH_EXCEEDED" - rule StatusCode2String(EVMC_INVALID_MEMORY_ACCESS) => "EVMC_INVALID_MEMORY_ACCESS" - rule StatusCode2String(EVMC_STATIC_MODE_VIOLATION) => "EVMC_STATIC_MODE_VIOLATION" - rule StatusCode2String(EVMC_PRECOMPILE_FAILURE) => "EVMC_PRECOMPILE_FAILURE" - rule StatusCode2String(EVMC_NONCE_EXCEEDED) => "EVMC_NONCE_EXCEEDED" -``` - -### Ending Codes - -These additional status codes indicate that execution has ended in some non-exceptional way. - -- `EVMC_SUCCESS` indicates successful end of execution. -- `EVMC_REVERT` indicates that the contract called `REVERT`. - -```k - syntax EndStatusCode ::= ExceptionalStatusCode - | "EVMC_SUCCESS" - | "EVMC_REVERT" - // -------------------------------------- - rule StatusCode2String(EVMC_SUCCESS) => "EVMC_SUCCESS" - rule StatusCode2String(EVMC_REVERT) => "EVMC_REVERT" -``` - -### Other Codes - -The following codes indicate other non-execution errors with the VM. - -- `EVMC_REJECTED` indicates malformed or wrong-version EVM bytecode. -- `EVMC_INTERNAL_ERROR` indicates some other error that is unrecoverable but not due to the bytecode. -- `.StatusCode` is an extra code added for "unset or unknown". - -```k - syntax StatusCode ::= EndStatusCode - | "EVMC_REJECTED" - | "EVMC_INTERNAL_ERROR" - | ".StatusCode" - // ----------------------------------- - rule StatusCode2String(EVMC_REJECTED) => "EVMC_REJECTED" - rule StatusCode2String(EVMC_INTERNAL_ERROR) => "EVMC_INTERNAL_ERROR" - rule StatusCode2String(.StatusCode) => "" -``` - -Client/Network Codes --------------------- - -The following are status codes used to report network state failures to the EVM from the client. -These are not present in the [EVM-C API]. - -- `EVMC_ACCOUNT_ALREADY_EXISTS` indicates that a newly created account already exists. -- `EVMC_BALANCE_UNDERFLOW` indicates an attempt to create an account which already exists. - -```k - syntax ExceptionalStatusCode ::= "EVMC_ACCOUNT_ALREADY_EXISTS" - | "EVMC_BALANCE_UNDERFLOW" - // --------------------------------------------------------- - rule StatusCode2String(EVMC_ACCOUNT_ALREADY_EXISTS) => "EVMC_ACCOUNT_ALREADY_EXISTS" - rule StatusCode2String(EVMC_BALANCE_UNDERFLOW) => "EVMC_BALANCE_UNDERFLOW" -``` - -```k -endmodule -``` - -Resources -========= - -[EVM-C API]: diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/network/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/network/index.html new file mode 100644 index 0000000000..af39b384ed --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/network/index.html @@ -0,0 +1,332 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Network State

+

This file represents all the network state present in the EVM. +It will incrementally build up to supporting the entire EVM-C API.

+
module NETWORK
+    imports STRING-SYNTAX
+
+    syntax String ::= StatusCode2String(StatusCode) [klabel(StatusCode2String), function]
+ // -------------------------------------------------------------------------------------
+
+

EVM Status Codes

+

Exceptional Codes

+

The following codes all indicate that the VM ended execution with an exception, but give details about how.

+
    +
  • EVMC_FAILURE is a catch-all for generic execution failure.
  • +
  • EVMC_INVALID_INSTRUCTION indicates reaching the designated INVALID opcode.
  • +
  • EVMC_UNDEFINED_INSTRUCTION indicates that an undefined opcode has been reached.
  • +
  • EVMC_OUT_OF_GAS indicates that execution exhausted the gas supply.
  • +
  • EVMC_BAD_JUMP_DESTINATION indicates a JUMP* to a non-JUMPDEST location.
  • +
  • EVMC_STACK_OVERFLOW indicates pushing more than 1024 elements onto the wordstack.
  • +
  • EVMC_STACK_UNDERFLOW indicates popping elements off an empty wordstack.
  • +
  • EVMC_CALL_DEPTH_EXCEEDED indicates that we have executed too deeply a nested sequence of CALL* or CREATE opcodes.
  • +
  • EVMC_INVALID_MEMORY_ACCESS indicates that a bad memory access occurred. +This can happen when accessing local memory with CODECOPY* or CALLDATACOPY, or when accessing return data with RETURNDATACOPY.
  • +
  • EVMC_STATIC_MODE_VIOLATION indicates that a STATICCALL tried to change state. +TODO: Avoid _ERROR suffix that suggests fatal error.
  • +
  • EVMC_PRECOMPILE_FAILURE indicates an errors in the precompiled contracts (eg. invalid points handed to elliptic curve functions).
  • +
+
    syntax ExceptionalStatusCode ::= "EVMC_FAILURE"
+                                   | "EVMC_INVALID_INSTRUCTION"
+                                   | "EVMC_UNDEFINED_INSTRUCTION"
+                                   | "EVMC_OUT_OF_GAS"
+                                   | "EVMC_BAD_JUMP_DESTINATION"
+                                   | "EVMC_STACK_OVERFLOW"
+                                   | "EVMC_STACK_UNDERFLOW"
+                                   | "EVMC_CALL_DEPTH_EXCEEDED"
+                                   | "EVMC_INVALID_MEMORY_ACCESS"
+                                   | "EVMC_STATIC_MODE_VIOLATION"
+                                   | "EVMC_PRECOMPILE_FAILURE"
+                                   | "EVMC_NONCE_EXCEEDED"
+ // -------------------------------------------------------------
+    rule StatusCode2String(EVMC_FAILURE)               => "EVMC_FAILURE"
+    rule StatusCode2String(EVMC_INVALID_INSTRUCTION)   => "EVMC_INVALID_INSTRUCTION"
+    rule StatusCode2String(EVMC_UNDEFINED_INSTRUCTION) => "EVMC_UNDEFINED_INSTRUCTION"
+    rule StatusCode2String(EVMC_OUT_OF_GAS)            => "EVMC_OUT_OF_GAS"
+    rule StatusCode2String(EVMC_BAD_JUMP_DESTINATION)  => "EVMC_BAD_JUMP_DESTINATION"
+    rule StatusCode2String(EVMC_STACK_OVERFLOW)        => "EVMC_STACK_OVERFLOW"
+    rule StatusCode2String(EVMC_STACK_UNDERFLOW)       => "EVMC_STACK_UNDERFLOW"
+    rule StatusCode2String(EVMC_CALL_DEPTH_EXCEEDED)   => "EVMC_CALL_DEPTH_EXCEEDED"
+    rule StatusCode2String(EVMC_INVALID_MEMORY_ACCESS) => "EVMC_INVALID_MEMORY_ACCESS"
+    rule StatusCode2String(EVMC_STATIC_MODE_VIOLATION) => "EVMC_STATIC_MODE_VIOLATION"
+    rule StatusCode2String(EVMC_PRECOMPILE_FAILURE)    => "EVMC_PRECOMPILE_FAILURE"
+    rule StatusCode2String(EVMC_NONCE_EXCEEDED)        => "EVMC_NONCE_EXCEEDED"
+
+

Ending Codes

+

These additional status codes indicate that execution has ended in some non-exceptional way.

+
    +
  • EVMC_SUCCESS indicates successful end of execution.
  • +
  • EVMC_REVERT indicates that the contract called REVERT.
  • +
+
    syntax EndStatusCode ::= ExceptionalStatusCode
+                           | "EVMC_SUCCESS"
+                           | "EVMC_REVERT"
+ // --------------------------------------
+    rule StatusCode2String(EVMC_SUCCESS) => "EVMC_SUCCESS"
+    rule StatusCode2String(EVMC_REVERT)  => "EVMC_REVERT"
+
+

Other Codes

+

The following codes indicate other non-execution errors with the VM.

+
    +
  • EVMC_REJECTED indicates malformed or wrong-version EVM bytecode.
  • +
  • EVMC_INTERNAL_ERROR indicates some other error that is unrecoverable but not due to the bytecode.
  • +
  • .StatusCode is an extra code added for "unset or unknown".
  • +
+
    syntax StatusCode ::= EndStatusCode
+                        | "EVMC_REJECTED"
+                        | "EVMC_INTERNAL_ERROR"
+                        | ".StatusCode"
+ // -----------------------------------
+    rule StatusCode2String(EVMC_REJECTED)       => "EVMC_REJECTED"
+    rule StatusCode2String(EVMC_INTERNAL_ERROR) => "EVMC_INTERNAL_ERROR"
+    rule StatusCode2String(.StatusCode)         => ""
+
+

Client/Network Codes

+

The following are status codes used to report network state failures to the EVM from the client. +These are not present in the EVM-C API.

+
    +
  • EVMC_ACCOUNT_ALREADY_EXISTS indicates that a newly created account already exists.
  • +
  • EVMC_BALANCE_UNDERFLOW indicates an attempt to create an account which already exists.
  • +
+
    syntax ExceptionalStatusCode ::= "EVMC_ACCOUNT_ALREADY_EXISTS"
+                                   | "EVMC_BALANCE_UNDERFLOW"
+ // ---------------------------------------------------------
+    rule StatusCode2String(EVMC_ACCOUNT_ALREADY_EXISTS) => "EVMC_ACCOUNT_ALREADY_EXISTS"
+    rule StatusCode2String(EVMC_BALANCE_UNDERFLOW)      => "EVMC_BALANCE_UNDERFLOW"
+
+
endmodule
+
+

Resources

+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/optimizations.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/optimizations.md deleted file mode 100644 index 4248d1dc5a..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/optimizations.md +++ /dev/null @@ -1,350 +0,0 @@ -KEVM Optimizations -================== - -These optimizations work on the LLVM and Haskell backend and are generated by the script `./optimizer/optimizations.sh`. - -```k -requires "evm.md" -requires "lemmas/int-simplification.k" - -module EVM-OPTIMIZATIONS-LEMMAS - imports EVM - - rule #sizeWordStack(WS , N) => #sizeWordStack(WS, 0) +Int N requires N =/=Int 0 [simplification] - rule #sizeWordStack(WS [ I := _ ], N) => #sizeWordStack(WS, N) requires I true [simplification] - rule #sizeWordStack(_ , 0) false requires N <=Int 0 [simplification] - -endmodule - -module EVM-OPTIMIZATIONS - imports EVM - imports EVM-OPTIMIZATIONS-LEMMAS - imports INT-SIMPLIFICATION - - rule - - - ( #next[ PUSHZERO ] => .K ) ... - - - SCHED - - - USEGAS - - - - - - ( WS => 0 : WS ) - - - ( PCOUNT => ( PCOUNT +Int 1 ) ) - - - ( GAVAIL => ( #if USEGAS #then ( GAVAIL -Gas Gbase < SCHED > ) #else GAVAIL #fi ) ) - - ... - - ... - - ... - - ... - - requires ( #if USEGAS #then Gbase < SCHED > <=Gas GAVAIL #else true #fi ) - andBool ( #sizeWordStack( 0 : WS ) <=Int 1024 ) - [priority(40)] - - rule - - - ( #next[ PUSH(N) ] => .K ) ... - - - SCHED - - - USEGAS - - - - - - PGM - - - ( WS => #asWord( #range(PGM, PCOUNT +Int 1, N) ) : WS ) - - - ( PCOUNT => ( ( PCOUNT +Int N ) +Int 1 ) ) - - - ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi ) - - ... - - ... - - ... - - ... - - requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi ) - andBool ( #sizeWordStack( #asWord( #range(PGM, PCOUNT +Int 1, N) ) : WS ) <=Int 1024 ) - [priority(40)] - - rule - - - ( #next[ DUP(N) ] => .K ) ... - - - SCHED - - - USEGAS - - - - - - ( WS => WS [ ( N +Int -1 ) ] : WS ) - - - ( PCOUNT => ( PCOUNT +Int 1 ) ) - - - ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi ) - - ... - - ... - - ... - - ... - - requires #stackNeeded(DUP(N)) <=Int #sizeWordStack(WS) - andBool ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi ) - andBool ( #sizeWordStack( WS [ ( N +Int -1 ) ] : WS ) <=Int 1024 ) - [priority(40)] - - rule - - - ( #next[ SWAP(N) ] => .K ) ... - - - SCHED - - - USEGAS - - - - - - ( W0 : WS => WS [ ( N +Int -1 ) ] : ( WS [ ( N +Int -1 ) := W0 ] ) ) - - - ( PCOUNT => ( PCOUNT +Int 1 ) ) - - - ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi ) - - ... - - ... - - ... - - ... - - requires #stackNeeded(SWAP(N)) <=Int #sizeWordStack(W0 : WS) - andBool ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi ) - andBool ( #sizeWordStack( WS [ ( N +Int -1 ) ] : ( WS [ ( N +Int -1 ) := W0 ] ) ) <=Int 1024 ) - [priority(40)] - - rule - - - ( #next[ ADD ] => .K ) ... - - - SCHED - - - USEGAS - - - - - - ( W0 : W1 : WS => chop( ( W0 +Int W1 ) ) : WS ) - - - ( PCOUNT => ( PCOUNT +Int 1 ) ) - - - ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi ) - - ... - - ... - - ... - - ... - - requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi ) - andBool ( #sizeWordStack( chop( ( W0 +Int W1 ) ) : WS ) <=Int 1024 ) - [priority(40)] - - rule - - - ( #next[ SUB ] => .K ) ... - - - SCHED - - - USEGAS - - - - - - ( W0 : W1 : WS => chop( ( W0 -Int W1 ) ) : WS ) - - - ( PCOUNT => ( PCOUNT +Int 1 ) ) - - - ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi ) - - ... - - ... - - ... - - ... - - requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi ) - andBool ( #sizeWordStack( chop( ( W0 -Int W1 ) ) : WS ) <=Int 1024 ) - [priority(40)] - - rule - - - ( #next[ AND ] => .K ) ... - - - SCHED - - - USEGAS - - - - - - ( W0 : W1 : WS => W0 &Int W1 : WS ) - - - ( PCOUNT => ( PCOUNT +Int 1 ) ) - - - ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi ) - - ... - - ... - - ... - - ... - - requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi ) - andBool ( #sizeWordStack( W0 &Int W1 : WS ) <=Int 1024 ) - [priority(40)] - - rule - - - ( #next[ LT ] => .K ) ... - - - SCHED - - - USEGAS - - - - - - ( W0 : W1 : WS => bool2Word( W0 - - ( PCOUNT => ( PCOUNT +Int 1 ) ) - - - ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi ) - - ... - - ... - - ... - - ... - - requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi ) - andBool ( #sizeWordStack( bool2Word( W0 - - ( #next[ GT ] => .K ) ... - - - SCHED - - - USEGAS - - - - - - ( W0 : W1 : WS => bool2Word( W1 - - ( PCOUNT => ( PCOUNT +Int 1 ) ) - - - ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi ) - - ... - - ... - - ... - - ... - - requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi ) - andBool ( #sizeWordStack( bool2Word( W1 + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

KEVM Optimizations

+

These optimizations work on the LLVM and Haskell backend and are generated by the script ./optimizer/optimizations.sh.

+
requires "evm.md"
+requires "lemmas/int-simplification.k"
+
+module EVM-OPTIMIZATIONS-LEMMAS
+  imports EVM
+
+    rule #sizeWordStack(WS           , N) => #sizeWordStack(WS, 0) +Int N requires N =/=Int 0                [simplification]
+    rule #sizeWordStack(WS [ I := _ ], N) => #sizeWordStack(WS, N)        requires I <Int #sizeWordStack(WS) [simplification]
+    rule 0 <=Int #sizeWordStack(_ , 0)    => true                                                            [simplification]
+    rule #sizeWordStack(_ , 0) <Int N     => false                        requires N <=Int 0                 [simplification]
+
+endmodule
+
+module EVM-OPTIMIZATIONS
+  imports EVM
+  imports EVM-OPTIMIZATIONS-LEMMAS
+  imports INT-SIMPLIFICATION
+
+  rule
+    <kevm>
+      <k>
+        ( #next[ PUSHZERO ] => .K ) ...
+      </k>
+      <schedule>
+        SCHED
+      </schedule>
+      <useGas>
+        USEGAS
+      </useGas>
+      <ethereum>
+        <evm>
+          <callState>
+            <wordStack>
+              ( WS => 0 : WS )
+            </wordStack>
+            <pc>
+              ( PCOUNT => ( PCOUNT +Int 1 ) )
+            </pc>
+            <gas>
+              ( GAVAIL => ( #if USEGAS #then ( GAVAIL -Gas Gbase < SCHED > ) #else GAVAIL #fi ) )
+            </gas>
+            ...
+          </callState>
+          ...
+        </evm>
+        ...
+      </ethereum>
+      ...
+    </kevm>
+    requires ( #if USEGAS #then Gbase < SCHED > <=Gas GAVAIL #else true #fi )
+     andBool ( #sizeWordStack( 0 : WS ) <=Int 1024 )
+     [priority(40)]
+
+  rule
+    <kevm>
+      <k>
+        ( #next[ PUSH(N) ] => .K ) ...
+      </k>
+      <schedule>
+        SCHED
+      </schedule>
+      <useGas>
+        USEGAS
+      </useGas>
+      <ethereum>
+        <evm>
+          <callState>
+            <program>
+              PGM
+            </program>
+            <wordStack>
+              ( WS => #asWord( #range(PGM, PCOUNT +Int 1, N) ) : WS )
+            </wordStack>
+            <pc>
+              ( PCOUNT => ( ( PCOUNT +Int N ) +Int 1 ) )
+            </pc>
+            <gas>
+              ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi )
+            </gas>
+            ...
+          </callState>
+          ...
+        </evm>
+        ...
+      </ethereum>
+      ...
+    </kevm>
+    requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi )
+     andBool ( #sizeWordStack( #asWord( #range(PGM, PCOUNT +Int 1, N) ) : WS ) <=Int 1024 )
+     [priority(40)]
+
+  rule
+    <kevm>
+      <k>
+        ( #next[ DUP(N) ] => .K ) ...
+      </k>
+      <schedule>
+        SCHED
+      </schedule>
+      <useGas>
+        USEGAS
+      </useGas>
+      <ethereum>
+        <evm>
+          <callState>
+            <wordStack>
+              ( WS => WS [ ( N +Int -1 ) ] : WS )
+            </wordStack>
+            <pc>
+              ( PCOUNT => ( PCOUNT +Int 1 ) )
+            </pc>
+            <gas>
+              ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi )
+            </gas>
+            ...
+          </callState>
+          ...
+        </evm>
+        ...
+      </ethereum>
+      ...
+    </kevm>
+    requires #stackNeeded(DUP(N)) <=Int #sizeWordStack(WS)
+     andBool ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi )
+     andBool ( #sizeWordStack( WS [ ( N +Int -1 ) ] : WS ) <=Int 1024 )
+     [priority(40)]
+
+  rule
+    <kevm>
+      <k>
+        ( #next[ SWAP(N) ] => .K ) ...
+      </k>
+      <schedule>
+        SCHED
+      </schedule>
+      <useGas>
+        USEGAS
+      </useGas>
+      <ethereum>
+        <evm>
+          <callState>
+            <wordStack>
+              ( W0 : WS => WS [ ( N +Int -1 ) ] : ( WS [ ( N +Int -1 ) := W0 ] ) )
+            </wordStack>
+            <pc>
+              ( PCOUNT => ( PCOUNT +Int 1 ) )
+            </pc>
+            <gas>
+              ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi )
+            </gas>
+            ...
+          </callState>
+          ...
+        </evm>
+        ...
+      </ethereum>
+      ...
+    </kevm>
+    requires #stackNeeded(SWAP(N)) <=Int #sizeWordStack(W0 : WS)
+     andBool ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi )
+     andBool ( #sizeWordStack( WS [ ( N +Int -1 ) ] : ( WS [ ( N +Int -1 ) := W0 ] ) ) <=Int 1024 )
+     [priority(40)]
+
+  rule
+    <kevm>
+      <k>
+        ( #next[ ADD ] => .K ) ...
+      </k>
+      <schedule>
+        SCHED
+      </schedule>
+      <useGas>
+        USEGAS
+      </useGas>
+      <ethereum>
+        <evm>
+          <callState>
+            <wordStack>
+              ( W0 : W1 : WS => chop( ( W0 +Int W1 ) ) : WS )
+            </wordStack>
+            <pc>
+              ( PCOUNT => ( PCOUNT +Int 1 ) )
+            </pc>
+            <gas>
+              ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi )
+            </gas>
+            ...
+          </callState>
+          ...
+        </evm>
+        ...
+      </ethereum>
+      ...
+    </kevm>
+    requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi )
+     andBool ( #sizeWordStack( chop( ( W0 +Int W1 ) ) : WS ) <=Int 1024 )
+     [priority(40)]
+
+  rule
+    <kevm>
+      <k>
+        ( #next[ SUB ] => .K ) ...
+      </k>
+      <schedule>
+        SCHED
+      </schedule>
+      <useGas>
+        USEGAS
+      </useGas>
+      <ethereum>
+        <evm>
+          <callState>
+            <wordStack>
+              ( W0 : W1 : WS => chop( ( W0 -Int W1 ) ) : WS )
+            </wordStack>
+            <pc>
+              ( PCOUNT => ( PCOUNT +Int 1 ) )
+            </pc>
+            <gas>
+              ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi )
+            </gas>
+            ...
+          </callState>
+          ...
+        </evm>
+        ...
+      </ethereum>
+      ...
+    </kevm>
+    requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi )
+     andBool ( #sizeWordStack( chop( ( W0 -Int W1 ) ) : WS ) <=Int 1024 )
+     [priority(40)]
+
+  rule
+    <kevm>
+      <k>
+        ( #next[ AND ] => .K ) ...
+      </k>
+      <schedule>
+        SCHED
+      </schedule>
+      <useGas>
+        USEGAS
+      </useGas>
+      <ethereum>
+        <evm>
+          <callState>
+            <wordStack>
+              ( W0 : W1 : WS => W0 &Int W1 : WS )
+            </wordStack>
+            <pc>
+              ( PCOUNT => ( PCOUNT +Int 1 ) )
+            </pc>
+            <gas>
+              ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi )
+            </gas>
+            ...
+          </callState>
+          ...
+        </evm>
+        ...
+      </ethereum>
+      ...
+    </kevm>
+    requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi )
+     andBool ( #sizeWordStack( W0 &Int W1 : WS ) <=Int 1024 )
+     [priority(40)]
+
+  rule
+    <kevm>
+      <k>
+        ( #next[ LT ] => .K ) ...
+      </k>
+      <schedule>
+        SCHED
+      </schedule>
+      <useGas>
+        USEGAS
+      </useGas>
+      <ethereum>
+        <evm>
+          <callState>
+            <wordStack>
+              ( W0 : W1 : WS => bool2Word( W0 <Int W1 ) : WS )
+            </wordStack>
+            <pc>
+              ( PCOUNT => ( PCOUNT +Int 1 ) )
+            </pc>
+            <gas>
+              ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi )
+            </gas>
+            ...
+          </callState>
+          ...
+        </evm>
+        ...
+      </ethereum>
+      ...
+    </kevm>
+    requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi )
+     andBool ( #sizeWordStack( bool2Word( W0 <Int W1 ) : WS ) <=Int 1024 )
+     [priority(40)]
+
+  rule
+    <kevm>
+      <k>
+        ( #next[ GT ] => .K ) ...
+      </k>
+      <schedule>
+        SCHED
+      </schedule>
+      <useGas>
+        USEGAS
+      </useGas>
+      <ethereum>
+        <evm>
+          <callState>
+            <wordStack>
+              ( W0 : W1 : WS => bool2Word( W1 <Int W0 ) : WS )
+            </wordStack>
+            <pc>
+              ( PCOUNT => ( PCOUNT +Int 1 ) )
+            </pc>
+            <gas>
+              ( GAVAIL => #if USEGAS #then ( GAVAIL -Gas Gverylow < SCHED > ) #else GAVAIL #fi )
+            </gas>
+            ...
+          </callState>
+          ...
+        </evm>
+        ...
+      </ethereum>
+      ...
+    </kevm>
+    requires ( #if USEGAS #then Gverylow < SCHED > <=Gas GAVAIL #else true #fi )
+     andBool ( #sizeWordStack( bool2Word( W1 <Int W0 ) : WS ) <=Int 1024 )
+     [priority(40)]
+
+
+// {OPTIMIZATIONS}
+
+
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/schedule.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/schedule.md deleted file mode 100644 index d46be3575d..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/schedule.md +++ /dev/null @@ -1,376 +0,0 @@ -KEVM Schedules -============== - -Fee Schedule ------------- - -The `Schedule` determines the constants/modes of operation for each hard fork. -There are `ScheduleFlag`s and `ScheduleConstant`s. - -- A `ScheduleFlag` is a boolean value determining whether a certain feature is turned on. -- A `ScheduleConst` is an `Int` parameter which is used during EVM execution. - -### Schedule Flags - -A `ScheduleFlag` is a boolean determined by the fee schedule; applying a `ScheduleFlag` to a `Schedule` yields whether the flag is set or not. - -```k -requires "data.md" - -module SCHEDULE - imports EVM-DATA - - syntax Bool ::= ScheduleFlag "<<" Schedule ">>" [function, total] - // ----------------------------------------------------------------- - - syntax ScheduleFlag ::= "Gselfdestructnewaccount" | "Gstaticcalldepth" | "Gemptyisnonexistent" | "Gzerovaluenewaccountgas" - | "Ghasrevert" | "Ghasreturndata" | "Ghasstaticcall" | "Ghasshift" - | "Ghasdirtysstore" | "Ghascreate2" | "Ghasextcodehash" | "Ghasselfbalance" - | "Ghassstorestipend" | "Ghaschainid" | "Ghasaccesslist" | "Ghasbasefee" - | "Ghasrejectedfirstbyte" | "Ghasprevrandao" | "Ghasmaxinitcodesize" | "Ghaspushzero" - | "Ghaswarmcoinbase" - // ------------------------------------------ -``` - -### Schedule Constants - -A `ScheduleConst` is a constant determined by the fee schedule. - -```k - syntax Int ::= ScheduleConst "<" Schedule ">" [function, total] - // --------------------------------------------------------------- - - syntax ScheduleConst ::= "Gzero" | "Gbase" | "Gverylow" | "Glow" | "Gmid" | "Ghigh" | "Gextcodesize" - | "Gextcodecopy" | "Gbalance" | "Gsload" | "Gjumpdest" | "Gsstoreset" | "Gsstorereset" | "Rsstoreclear" - | "Rselfdestruct" | "Gselfdestruct" | "Gcreate" | "Gcodedeposit" | "Gcall" | "Gcallvalue" | "Gcallstipend" - | "Gnewaccount" | "Gexp" | "Gexpbyte" | "Gmemory" | "Gtxcreate" | "Gtxdatazero" | "Gtxdatanonzero" - | "Gtransaction" | "Glog" | "Glogdata" | "Glogtopic" | "Gsha3" | "Gsha3word" | "Gcopy" - | "Gblockhash" | "Gquadcoeff" | "maxCodeSize" | "Rb" | "Gquaddivisor" | "Gecadd" | "Gecmul" - | "Gecpairconst" | "Gecpaircoeff" | "Gfround" | "Gcoldsload" | "Gcoldaccountaccess" | "Gwarmstorageread" | "Gaccesslistaddress" - | "Gaccessliststoragekey" | "Rmaxquotient" | "Ginitcodewordcost" | "maxInitCodeSize" - // ---------------------------------------------------------------------------------------------------------------------- -``` - -### Default Schedule - -```k - syntax Schedule ::= "DEFAULT" [klabel(DEFAULT_EVM), symbol, smtlib(schedule_DEFAULT)] - // ------------------------------------------------------------------------------------- - rule Gzero < DEFAULT > => 0 - rule Gbase < DEFAULT > => 2 - rule Gverylow < DEFAULT > => 3 - rule Glow < DEFAULT > => 5 - rule Gmid < DEFAULT > => 8 - rule Ghigh < DEFAULT > => 10 - - rule Gexp < DEFAULT > => 10 - rule Gexpbyte < DEFAULT > => 10 - rule Gsha3 < DEFAULT > => 30 - rule Gsha3word < DEFAULT > => 6 - - rule Gsload < DEFAULT > => 50 - rule Gsstoreset < DEFAULT > => 20000 - rule Gsstorereset < DEFAULT > => 5000 - rule Rsstoreclear < DEFAULT > => 15000 - - rule Glog < DEFAULT > => 375 - rule Glogdata < DEFAULT > => 8 - rule Glogtopic < DEFAULT > => 375 - - rule Gcall < DEFAULT > => 40 - rule Gcallstipend < DEFAULT > => 2300 - rule Gcallvalue < DEFAULT > => 9000 - rule Gnewaccount < DEFAULT > => 25000 - - rule Gcreate < DEFAULT > => 32000 - rule Gcodedeposit < DEFAULT > => 200 - rule Gselfdestruct < DEFAULT > => 0 - rule Rselfdestruct < DEFAULT > => 24000 - - rule Gmemory < DEFAULT > => 3 - rule Gquadcoeff < DEFAULT > => 512 - rule Gcopy < DEFAULT > => 3 - rule Gquaddivisor < DEFAULT > => 20 - - rule Gtransaction < DEFAULT > => 21000 - rule Gtxcreate < DEFAULT > => 53000 - rule Gtxdatazero < DEFAULT > => 4 - rule Gtxdatanonzero < DEFAULT > => 68 - - rule Gjumpdest < DEFAULT > => 1 - rule Gbalance < DEFAULT > => 20 - rule Gblockhash < DEFAULT > => 20 - rule Gextcodesize < DEFAULT > => 20 - rule Gextcodecopy < DEFAULT > => 20 - - rule Gecadd < DEFAULT > => 500 - rule Gecmul < DEFAULT > => 40000 - rule Gecpairconst < DEFAULT > => 100000 - rule Gecpaircoeff < DEFAULT > => 80000 - rule Gfround < DEFAULT > => 1 - - rule maxCodeSize < DEFAULT > => 2 ^Int 32 -Int 1 - rule Rb < DEFAULT > => 5 *Int (10 ^Int 18) - - rule Gcoldsload < DEFAULT > => 0 - rule Gcoldaccountaccess < DEFAULT > => 0 - rule Gwarmstorageread < DEFAULT > => 0 - - rule Gaccessliststoragekey < DEFAULT > => 0 - rule Gaccesslistaddress < DEFAULT > => 0 - - rule maxInitCodeSize < DEFAULT > => 0 - rule Ginitcodewordcost < DEFAULT > => 0 - - rule Rmaxquotient < DEFAULT > => 2 - - rule Gselfdestructnewaccount << DEFAULT >> => false - rule Gstaticcalldepth << DEFAULT >> => true - rule Gemptyisnonexistent << DEFAULT >> => false - rule Gzerovaluenewaccountgas << DEFAULT >> => true - rule Ghasrevert << DEFAULT >> => false - rule Ghasreturndata << DEFAULT >> => false - rule Ghasstaticcall << DEFAULT >> => false - rule Ghasshift << DEFAULT >> => false - rule Ghasdirtysstore << DEFAULT >> => false - rule Ghassstorestipend << DEFAULT >> => false - rule Ghascreate2 << DEFAULT >> => false - rule Ghasextcodehash << DEFAULT >> => false - rule Ghasselfbalance << DEFAULT >> => false - rule Ghaschainid << DEFAULT >> => false - rule Ghasaccesslist << DEFAULT >> => false - rule Ghasbasefee << DEFAULT >> => false - rule Ghasrejectedfirstbyte << DEFAULT >> => false - rule Ghasprevrandao << DEFAULT >> => false - rule Ghasmaxinitcodesize << DEFAULT >> => false - rule Ghaspushzero << DEFAULT >> => false - rule Ghaswarmcoinbase << DEFAULT >> => false -``` - -### Frontier Schedule - -```k - syntax Schedule ::= "FRONTIER" [klabel(FRONTIER_EVM), symbol, smtlib(schedule_FRONTIER)] - // ---------------------------------------------------------------------------------------- - rule Gtxcreate < FRONTIER > => 21000 - rule SCHEDCONST < FRONTIER > => SCHEDCONST < DEFAULT > requires SCHEDCONST =/=K Gtxcreate - - rule SCHEDFLAG << FRONTIER >> => SCHEDFLAG << DEFAULT >> -``` - -### Homestead Schedule - -```k - syntax Schedule ::= "HOMESTEAD" [klabel(HOMESTEAD_EVM), symbol, smtlib(schedule_HOMESTEAD)] - // ------------------------------------------------------------------------------------------- - rule SCHEDCONST < HOMESTEAD > => SCHEDCONST < DEFAULT > - - rule SCHEDFLAG << HOMESTEAD >> => SCHEDFLAG << DEFAULT >> -``` - -### Tangerine Whistle Schedule - -```k - syntax Schedule ::= "TANGERINE_WHISTLE" [klabel(TANGERINE_WHISTLE_EVM), symbol, smtlib(schedule_TANGERINE_WHISTLE)] - // ------------------------------------------------------------------------------------------------------------------- - rule Gbalance < TANGERINE_WHISTLE > => 400 - rule Gsload < TANGERINE_WHISTLE > => 200 - rule Gcall < TANGERINE_WHISTLE > => 700 - rule Gselfdestruct < TANGERINE_WHISTLE > => 5000 - rule Gextcodesize < TANGERINE_WHISTLE > => 700 - rule Gextcodecopy < TANGERINE_WHISTLE > => 700 - - rule SCHEDCONST < TANGERINE_WHISTLE > => SCHEDCONST < HOMESTEAD > - requires notBool ( SCHEDCONST ==K Gbalance orBool SCHEDCONST ==K Gsload orBool SCHEDCONST ==K Gcall - orBool SCHEDCONST ==K Gselfdestruct orBool SCHEDCONST ==K Gextcodesize orBool SCHEDCONST ==K Gextcodecopy - ) - - rule Gselfdestructnewaccount << TANGERINE_WHISTLE >> => true - rule Gstaticcalldepth << TANGERINE_WHISTLE >> => false - rule SCHEDCONST << TANGERINE_WHISTLE >> => SCHEDCONST << HOMESTEAD >> - requires notBool ( SCHEDCONST ==K Gselfdestructnewaccount orBool SCHEDCONST ==K Gstaticcalldepth ) -``` - -### Spurious Dragon Schedule - -```k - syntax Schedule ::= "SPURIOUS_DRAGON" [klabel(SPURIOUS_DRAGON_EVM), symbol, smtlib(schedule_SPURIOUS_DRAGON)] - // ------------------------------------------------------------------------------------------------------------- - rule Gexpbyte < SPURIOUS_DRAGON > => 50 - rule maxCodeSize < SPURIOUS_DRAGON > => 24576 - - rule SCHEDCONST < SPURIOUS_DRAGON > => SCHEDCONST < TANGERINE_WHISTLE > requires SCHEDCONST =/=K Gexpbyte andBool SCHEDCONST =/=K maxCodeSize - - rule Gemptyisnonexistent << SPURIOUS_DRAGON >> => true - rule Gzerovaluenewaccountgas << SPURIOUS_DRAGON >> => false - rule SCHEDCONST << SPURIOUS_DRAGON >> => SCHEDCONST << TANGERINE_WHISTLE >> - requires notBool ( SCHEDCONST ==K Gemptyisnonexistent orBool SCHEDCONST ==K Gzerovaluenewaccountgas ) -``` - -### Byzantium Schedule - -```k - syntax Schedule ::= "BYZANTIUM" [klabel(BYZANTIUM_EVM), symbol, smtlib(schedule_BYZANTIUM)] - // ------------------------------------------------------------------------------------------- - rule Rb < BYZANTIUM > => 3 *Int eth - rule SCHEDCONST < BYZANTIUM > => SCHEDCONST < SPURIOUS_DRAGON > - requires notBool ( SCHEDCONST ==K Rb ) - - rule Ghasrevert << BYZANTIUM >> => true - rule Ghasreturndata << BYZANTIUM >> => true - rule Ghasstaticcall << BYZANTIUM >> => true - rule SCHEDFLAG << BYZANTIUM >> => SCHEDFLAG << SPURIOUS_DRAGON >> - requires notBool ( SCHEDFLAG ==K Ghasrevert orBool SCHEDFLAG ==K Ghasreturndata orBool SCHEDFLAG ==K Ghasstaticcall ) -``` - -### Constantinople Schedule - -```k - syntax Schedule ::= "CONSTANTINOPLE" [klabel(CONSTANTINOPLE_EVM), symbol, smtlib(schedule_CONSTANTINOPLE)] - // ---------------------------------------------------------------------------------------------------------- - rule Rb < CONSTANTINOPLE > => 2 *Int eth - rule SCHEDCONST < CONSTANTINOPLE > => SCHEDCONST < BYZANTIUM > - requires notBool ( SCHEDCONST ==K Rb ) - - rule Ghasshift << CONSTANTINOPLE >> => true - rule Ghasdirtysstore << CONSTANTINOPLE >> => true - rule Ghascreate2 << CONSTANTINOPLE >> => true - rule Ghasextcodehash << CONSTANTINOPLE >> => true - rule SCHEDFLAG << CONSTANTINOPLE >> => SCHEDFLAG << BYZANTIUM >> - requires notBool ( SCHEDFLAG ==K Ghasshift orBool SCHEDFLAG ==K Ghasdirtysstore orBool SCHEDFLAG ==K Ghascreate2 orBool SCHEDFLAG ==K Ghasextcodehash ) -``` - -### Petersburg Schedule - -```k - syntax Schedule ::= "PETERSBURG" [klabel(PETERSBURG_EVM), symbol, smtlib(schedule_PETERSBURG)] - // ---------------------------------------------------------------------------------------------- - rule SCHEDCONST < PETERSBURG > => SCHEDCONST < CONSTANTINOPLE > - - rule Ghasdirtysstore << PETERSBURG >> => false - rule SCHEDFLAG << PETERSBURG >> => SCHEDFLAG << CONSTANTINOPLE >> - requires notBool ( SCHEDFLAG ==K Ghasdirtysstore ) -``` - -### Istanbul Schedule - -```k - syntax Schedule ::= "ISTANBUL" [klabel(ISTANBUL_EVM), symbol, smtlib(schedule_ISTANBUL)] - // ---------------------------------------------------------------------------------------- - rule Gecadd < ISTANBUL > => 150 - rule Gecmul < ISTANBUL > => 6000 - rule Gecpairconst < ISTANBUL > => 45000 - rule Gecpaircoeff < ISTANBUL > => 34000 - rule Gtxdatanonzero < ISTANBUL > => 16 - rule Gsload < ISTANBUL > => 800 - rule Gbalance < ISTANBUL > => 700 - rule SCHEDCONST < ISTANBUL > => SCHEDCONST < PETERSBURG > - requires notBool ( SCHEDCONST ==K Gecadd - orBool SCHEDCONST ==K Gecmul - orBool SCHEDCONST ==K Gecpairconst - orBool SCHEDCONST ==K Gecpaircoeff - orBool SCHEDCONST ==K Gtxdatanonzero - orBool SCHEDCONST ==K Gsload - orBool SCHEDCONST ==K Gbalance - ) - - rule Ghasselfbalance << ISTANBUL >> => true - rule Ghasdirtysstore << ISTANBUL >> => true - rule Ghassstorestipend << ISTANBUL >> => true - rule Ghaschainid << ISTANBUL >> => true - rule SCHEDFLAG << ISTANBUL >> => SCHEDFLAG << PETERSBURG >> - requires notBool ( SCHEDFLAG ==K Ghasselfbalance - orBool SCHEDFLAG ==K Ghasdirtysstore - orBool SCHEDFLAG ==K Ghassstorestipend - orBool SCHEDFLAG ==K Ghaschainid - ) -``` - -### Berlin Schedule - -```k - syntax Schedule ::= "BERLIN" [klabel(BERLIN_EVM), symbol, smtlib(schedule_BERLIN)] - // ---------------------------------------------------------------------------------- - rule Gcoldsload < BERLIN > => 2100 - rule Gcoldaccountaccess < BERLIN > => 2600 - rule Gwarmstorageread < BERLIN > => 100 - rule Gsload < BERLIN > => Gwarmstorageread < BERLIN > - rule Gsstorereset < BERLIN > => 5000 -Int Gcoldsload < BERLIN > - rule Gquaddivisor < BERLIN > => 3 - rule Gaccessliststoragekey < BERLIN > => 1900 - rule Gaccesslistaddress < BERLIN > => 2400 - - rule SCHEDCONST < BERLIN > => SCHEDCONST < ISTANBUL > - requires notBool ( SCHEDCONST ==K Gcoldsload - orBool SCHEDCONST ==K Gcoldaccountaccess - orBool SCHEDCONST ==K Gwarmstorageread - orBool SCHEDCONST ==K Gsload - orBool SCHEDCONST ==K Gsstorereset - orBool SCHEDCONST ==K Gquaddivisor - orBool SCHEDCONST ==K Gaccessliststoragekey - orBool SCHEDCONST ==K Gaccesslistaddress - ) - - rule Ghasaccesslist << BERLIN >> => true - rule SCHEDFLAG << BERLIN >> => SCHEDFLAG << ISTANBUL >> - requires notBool ( SCHEDFLAG ==K Ghasaccesslist ) -``` - -### London Schedule - -```k - syntax Schedule ::= "LONDON" [klabel(LONDON_EVM), symbol, smtlib(schedule_LONDON)] - // ---------------------------------------------------------------------------------- - rule Rselfdestruct < LONDON > => 0 - rule Rsstoreclear < LONDON > => Gsstorereset < LONDON > +Int Gaccessliststoragekey < LONDON > - rule Rmaxquotient < LONDON > => 5 - rule SCHEDCONST < LONDON > => SCHEDCONST < BERLIN > - requires notBool ( SCHEDCONST ==K Rselfdestruct - orBool SCHEDCONST ==K Rsstoreclear - orBool SCHEDCONST ==K Rmaxquotient - ) - - rule Ghasbasefee << LONDON >> => true - rule Ghasrejectedfirstbyte << LONDON >> => true - rule SCHEDFLAG << LONDON >> => SCHEDFLAG << BERLIN >> - requires notBool ( SCHEDFLAG ==K Ghasbasefee - orBool SCHEDFLAG ==K Ghasrejectedfirstbyte - ) -``` - -### Merge Schedule - -```k - syntax Schedule ::= "MERGE" [klabel(MERGE_EVM), symbol, smtlib(schedule_MERGE)] - // ------------------------------------------------------------------------------- - rule Rb < MERGE > => 0 - rule SCHEDCONST < MERGE > => SCHEDCONST < LONDON > - requires notBool SCHEDCONST ==K Rb - - rule Ghasprevrandao << MERGE >> => true - rule SCHEDFLAG << MERGE >> => SCHEDFLAG << LONDON >> - requires notBool SCHEDFLAG ==K Ghasprevrandao -``` - -### Shanghai Schedule - -```k - syntax Schedule ::= "SHANGHAI" [klabel(SHANGHAI_EVM), symbol, smtlib(schedule_SHANGHAI)] - // ---------------------------------------------------------------------------------------- - rule maxInitCodeSize < SHANGHAI > => 2 *Int maxCodeSize < SHANGHAI > - rule Ginitcodewordcost < SHANGHAI > => 2 - rule SCHEDCONST < SHANGHAI > => SCHEDCONST < MERGE > - requires notBool ( SCHEDCONST ==K maxInitCodeSize - orBool SCHEDCONST ==K Ginitcodewordcost - ) - - rule Ghasmaxinitcodesize << SHANGHAI >> => true - rule Ghaspushzero << SHANGHAI >> => true - rule Ghaswarmcoinbase << SHANGHAI >> => true - rule SCHEDFLAG << SHANGHAI >> => SCHEDFLAG << MERGE >> - requires notBool ( SCHEDFLAG ==K Ghasmaxinitcodesize - orBool SCHEDFLAG ==K Ghaspushzero - orBool SCHEDFLAG ==K Ghaswarmcoinbase - ) -endmodule -``` \ No newline at end of file diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/schedule/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/schedule/index.html new file mode 100644 index 0000000000..30729b2ab0 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/schedule/index.html @@ -0,0 +1,630 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

KEVM Schedules

+

Fee Schedule

+

The Schedule determines the constants/modes of operation for each hard fork. +There are ScheduleFlags and ScheduleConstants.

+
    +
  • A ScheduleFlag is a boolean value determining whether a certain feature is turned on.
  • +
  • A ScheduleConst is an Int parameter which is used during EVM execution.
  • +
+

Schedule Flags

+

A ScheduleFlag is a boolean determined by the fee schedule; applying a ScheduleFlag to a Schedule yields whether the flag is set or not.

+
requires "data.md"
+
+module SCHEDULE
+    imports EVM-DATA
+
+    syntax Bool ::= ScheduleFlag "<<" Schedule ">>" [function, total]
+ // -----------------------------------------------------------------
+
+    syntax ScheduleFlag ::= "Gselfdestructnewaccount" | "Gstaticcalldepth" | "Gemptyisnonexistent" | "Gzerovaluenewaccountgas"
+                          | "Ghasrevert"              | "Ghasreturndata"   | "Ghasstaticcall"      | "Ghasshift"
+                          | "Ghasdirtysstore"         | "Ghascreate2"      | "Ghasextcodehash"     | "Ghasselfbalance"
+                          | "Ghassstorestipend"       | "Ghaschainid"      | "Ghasaccesslist"      | "Ghasbasefee"
+                          | "Ghasrejectedfirstbyte"   | "Ghasprevrandao"   | "Ghasmaxinitcodesize" | "Ghaspushzero"
+                          | "Ghaswarmcoinbase"
+ // ------------------------------------------
+
+

Schedule Constants

+

A ScheduleConst is a constant determined by the fee schedule.

+
    syntax Int ::= ScheduleConst "<" Schedule ">" [function, total]
+ // ---------------------------------------------------------------
+
+    syntax ScheduleConst ::= "Gzero"         | "Gbase"         | "Gverylow"      | "Glow"              | "Gmid"               | "Ghigh"            | "Gextcodesize"
+                           | "Gextcodecopy"  | "Gbalance"      | "Gsload"        | "Gjumpdest"         | "Gsstoreset"         | "Gsstorereset"     | "Rsstoreclear"
+                           | "Rselfdestruct" | "Gselfdestruct" | "Gcreate"       | "Gcodedeposit"      | "Gcall"              | "Gcallvalue"       | "Gcallstipend"
+                           | "Gnewaccount"   | "Gexp"          | "Gexpbyte"      | "Gmemory"           | "Gtxcreate"          | "Gtxdatazero"      | "Gtxdatanonzero"
+                           | "Gtransaction"  | "Glog"          | "Glogdata"      | "Glogtopic"         | "Gsha3"              | "Gsha3word"        | "Gcopy"
+                           | "Gblockhash"    | "Gquadcoeff"    | "maxCodeSize"   | "Rb"                | "Gquaddivisor"       | "Gecadd"           | "Gecmul"
+                           | "Gecpairconst"  | "Gecpaircoeff"  | "Gfround"       | "Gcoldsload"        | "Gcoldaccountaccess" | "Gwarmstorageread" | "Gaccesslistaddress"
+                           | "Gaccessliststoragekey"           | "Rmaxquotient"  | "Ginitcodewordcost" | "maxInitCodeSize"
+ // ----------------------------------------------------------------------------------------------------------------------
+
+

Default Schedule

+
    syntax Schedule ::= "DEFAULT" [klabel(DEFAULT_EVM), symbol, smtlib(schedule_DEFAULT)]
+ // -------------------------------------------------------------------------------------
+    rule Gzero    < DEFAULT > => 0
+    rule Gbase    < DEFAULT > => 2
+    rule Gverylow < DEFAULT > => 3
+    rule Glow     < DEFAULT > => 5
+    rule Gmid     < DEFAULT > => 8
+    rule Ghigh    < DEFAULT > => 10
+
+    rule Gexp      < DEFAULT > => 10
+    rule Gexpbyte  < DEFAULT > => 10
+    rule Gsha3     < DEFAULT > => 30
+    rule Gsha3word < DEFAULT > => 6
+
+    rule Gsload       < DEFAULT > => 50
+    rule Gsstoreset   < DEFAULT > => 20000
+    rule Gsstorereset < DEFAULT > => 5000
+    rule Rsstoreclear < DEFAULT > => 15000
+
+    rule Glog      < DEFAULT > => 375
+    rule Glogdata  < DEFAULT > => 8
+    rule Glogtopic < DEFAULT > => 375
+
+    rule Gcall        < DEFAULT > => 40
+    rule Gcallstipend < DEFAULT > => 2300
+    rule Gcallvalue   < DEFAULT > => 9000
+    rule Gnewaccount  < DEFAULT > => 25000
+
+    rule Gcreate       < DEFAULT > => 32000
+    rule Gcodedeposit  < DEFAULT > => 200
+    rule Gselfdestruct < DEFAULT > => 0
+    rule Rselfdestruct < DEFAULT > => 24000
+
+    rule Gmemory      < DEFAULT > => 3
+    rule Gquadcoeff   < DEFAULT > => 512
+    rule Gcopy        < DEFAULT > => 3
+    rule Gquaddivisor < DEFAULT > => 20
+
+    rule Gtransaction   < DEFAULT > => 21000
+    rule Gtxcreate      < DEFAULT > => 53000
+    rule Gtxdatazero    < DEFAULT > => 4
+    rule Gtxdatanonzero < DEFAULT > => 68
+
+    rule Gjumpdest    < DEFAULT > => 1
+    rule Gbalance     < DEFAULT > => 20
+    rule Gblockhash   < DEFAULT > => 20
+    rule Gextcodesize < DEFAULT > => 20
+    rule Gextcodecopy < DEFAULT > => 20
+
+    rule Gecadd       < DEFAULT > => 500
+    rule Gecmul       < DEFAULT > => 40000
+    rule Gecpairconst < DEFAULT > => 100000
+    rule Gecpaircoeff < DEFAULT > => 80000
+    rule Gfround      < DEFAULT > => 1
+
+    rule maxCodeSize < DEFAULT > => 2 ^Int 32 -Int 1
+    rule Rb          < DEFAULT > => 5 *Int (10 ^Int 18)
+
+    rule Gcoldsload         < DEFAULT > => 0
+    rule Gcoldaccountaccess < DEFAULT > => 0
+    rule Gwarmstorageread   < DEFAULT > => 0
+
+    rule Gaccessliststoragekey < DEFAULT > => 0
+    rule Gaccesslistaddress    < DEFAULT > => 0
+
+    rule maxInitCodeSize   < DEFAULT > => 0
+    rule Ginitcodewordcost < DEFAULT > => 0
+
+    rule Rmaxquotient < DEFAULT > => 2
+
+    rule Gselfdestructnewaccount << DEFAULT >> => false
+    rule Gstaticcalldepth        << DEFAULT >> => true
+    rule Gemptyisnonexistent     << DEFAULT >> => false
+    rule Gzerovaluenewaccountgas << DEFAULT >> => true
+    rule Ghasrevert              << DEFAULT >> => false
+    rule Ghasreturndata          << DEFAULT >> => false
+    rule Ghasstaticcall          << DEFAULT >> => false
+    rule Ghasshift               << DEFAULT >> => false
+    rule Ghasdirtysstore         << DEFAULT >> => false
+    rule Ghassstorestipend       << DEFAULT >> => false
+    rule Ghascreate2             << DEFAULT >> => false
+    rule Ghasextcodehash         << DEFAULT >> => false
+    rule Ghasselfbalance         << DEFAULT >> => false
+    rule Ghaschainid             << DEFAULT >> => false
+    rule Ghasaccesslist          << DEFAULT >> => false
+    rule Ghasbasefee             << DEFAULT >> => false
+    rule Ghasrejectedfirstbyte   << DEFAULT >> => false
+    rule Ghasprevrandao          << DEFAULT >> => false
+    rule Ghasmaxinitcodesize     << DEFAULT >> => false
+    rule Ghaspushzero            << DEFAULT >> => false
+    rule Ghaswarmcoinbase        << DEFAULT >> => false
+
+

Frontier Schedule

+
    syntax Schedule ::= "FRONTIER" [klabel(FRONTIER_EVM), symbol, smtlib(schedule_FRONTIER)]
+ // ----------------------------------------------------------------------------------------
+    rule Gtxcreate  < FRONTIER > => 21000
+    rule SCHEDCONST < FRONTIER > => SCHEDCONST < DEFAULT > requires SCHEDCONST =/=K Gtxcreate
+
+    rule SCHEDFLAG << FRONTIER >> => SCHEDFLAG << DEFAULT >>
+
+

Homestead Schedule

+
    syntax Schedule ::= "HOMESTEAD" [klabel(HOMESTEAD_EVM), symbol, smtlib(schedule_HOMESTEAD)]
+ // -------------------------------------------------------------------------------------------
+    rule SCHEDCONST < HOMESTEAD > => SCHEDCONST < DEFAULT >
+
+    rule SCHEDFLAG << HOMESTEAD >> => SCHEDFLAG << DEFAULT >>
+
+

Tangerine Whistle Schedule

+
    syntax Schedule ::= "TANGERINE_WHISTLE" [klabel(TANGERINE_WHISTLE_EVM), symbol, smtlib(schedule_TANGERINE_WHISTLE)]
+ // -------------------------------------------------------------------------------------------------------------------
+    rule Gbalance      < TANGERINE_WHISTLE > => 400
+    rule Gsload        < TANGERINE_WHISTLE > => 200
+    rule Gcall         < TANGERINE_WHISTLE > => 700
+    rule Gselfdestruct < TANGERINE_WHISTLE > => 5000
+    rule Gextcodesize  < TANGERINE_WHISTLE > => 700
+    rule Gextcodecopy  < TANGERINE_WHISTLE > => 700
+
+    rule SCHEDCONST    < TANGERINE_WHISTLE > => SCHEDCONST < HOMESTEAD >
+      requires notBool      ( SCHEDCONST ==K Gbalance      orBool SCHEDCONST ==K Gsload       orBool SCHEDCONST ==K Gcall
+                       orBool SCHEDCONST ==K Gselfdestruct orBool SCHEDCONST ==K Gextcodesize orBool SCHEDCONST ==K Gextcodecopy
+                            )
+
+    rule Gselfdestructnewaccount << TANGERINE_WHISTLE >> => true
+    rule Gstaticcalldepth        << TANGERINE_WHISTLE >> => false
+    rule SCHEDCONST              << TANGERINE_WHISTLE >> => SCHEDCONST << HOMESTEAD >>
+      requires notBool      ( SCHEDCONST ==K Gselfdestructnewaccount orBool SCHEDCONST ==K Gstaticcalldepth )
+
+

Spurious Dragon Schedule

+
    syntax Schedule ::= "SPURIOUS_DRAGON" [klabel(SPURIOUS_DRAGON_EVM), symbol, smtlib(schedule_SPURIOUS_DRAGON)]
+ // -------------------------------------------------------------------------------------------------------------
+    rule Gexpbyte    < SPURIOUS_DRAGON > => 50
+    rule maxCodeSize < SPURIOUS_DRAGON > => 24576
+
+    rule SCHEDCONST  < SPURIOUS_DRAGON > => SCHEDCONST < TANGERINE_WHISTLE > requires SCHEDCONST =/=K Gexpbyte andBool SCHEDCONST =/=K maxCodeSize
+
+    rule Gemptyisnonexistent     << SPURIOUS_DRAGON >> => true
+    rule Gzerovaluenewaccountgas << SPURIOUS_DRAGON >> => false
+    rule SCHEDCONST              << SPURIOUS_DRAGON >> => SCHEDCONST << TANGERINE_WHISTLE >>
+      requires notBool      ( SCHEDCONST ==K Gemptyisnonexistent orBool SCHEDCONST ==K Gzerovaluenewaccountgas )
+
+

Byzantium Schedule

+
    syntax Schedule ::= "BYZANTIUM" [klabel(BYZANTIUM_EVM), symbol, smtlib(schedule_BYZANTIUM)]
+ // -------------------------------------------------------------------------------------------
+    rule Rb         < BYZANTIUM > => 3 *Int eth
+    rule SCHEDCONST < BYZANTIUM > => SCHEDCONST < SPURIOUS_DRAGON >
+      requires notBool ( SCHEDCONST ==K Rb )
+
+    rule Ghasrevert     << BYZANTIUM >> => true
+    rule Ghasreturndata << BYZANTIUM >> => true
+    rule Ghasstaticcall << BYZANTIUM >> => true
+    rule SCHEDFLAG      << BYZANTIUM >> => SCHEDFLAG << SPURIOUS_DRAGON >>
+      requires notBool ( SCHEDFLAG ==K Ghasrevert orBool SCHEDFLAG ==K Ghasreturndata orBool SCHEDFLAG ==K Ghasstaticcall )
+
+

Constantinople Schedule

+
    syntax Schedule ::= "CONSTANTINOPLE" [klabel(CONSTANTINOPLE_EVM), symbol, smtlib(schedule_CONSTANTINOPLE)]
+ // ----------------------------------------------------------------------------------------------------------
+    rule Rb         < CONSTANTINOPLE > => 2 *Int eth
+    rule SCHEDCONST < CONSTANTINOPLE > => SCHEDCONST < BYZANTIUM >
+      requires notBool ( SCHEDCONST ==K Rb )
+
+    rule Ghasshift       << CONSTANTINOPLE >> => true
+    rule Ghasdirtysstore << CONSTANTINOPLE >> => true
+    rule Ghascreate2     << CONSTANTINOPLE >> => true
+    rule Ghasextcodehash << CONSTANTINOPLE >> => true
+    rule SCHEDFLAG       << CONSTANTINOPLE >> => SCHEDFLAG << BYZANTIUM >>
+      requires notBool ( SCHEDFLAG ==K Ghasshift orBool SCHEDFLAG ==K Ghasdirtysstore orBool SCHEDFLAG ==K Ghascreate2 orBool SCHEDFLAG ==K Ghasextcodehash )
+
+

Petersburg Schedule

+
    syntax Schedule ::= "PETERSBURG" [klabel(PETERSBURG_EVM), symbol, smtlib(schedule_PETERSBURG)]
+ // ----------------------------------------------------------------------------------------------
+    rule SCHEDCONST < PETERSBURG > => SCHEDCONST < CONSTANTINOPLE >
+
+    rule Ghasdirtysstore << PETERSBURG >> => false
+    rule SCHEDFLAG       << PETERSBURG >> => SCHEDFLAG << CONSTANTINOPLE >>
+      requires notBool ( SCHEDFLAG ==K Ghasdirtysstore )
+
+

Istanbul Schedule

+
    syntax Schedule ::= "ISTANBUL" [klabel(ISTANBUL_EVM), symbol, smtlib(schedule_ISTANBUL)]
+ // ----------------------------------------------------------------------------------------
+    rule Gecadd         < ISTANBUL > => 150
+    rule Gecmul         < ISTANBUL > => 6000
+    rule Gecpairconst   < ISTANBUL > => 45000
+    rule Gecpaircoeff   < ISTANBUL > => 34000
+    rule Gtxdatanonzero < ISTANBUL > => 16
+    rule Gsload         < ISTANBUL > => 800
+    rule Gbalance       < ISTANBUL > => 700
+    rule SCHEDCONST     < ISTANBUL > => SCHEDCONST < PETERSBURG >
+      requires notBool ( SCHEDCONST ==K Gecadd
+                  orBool SCHEDCONST ==K Gecmul
+                  orBool SCHEDCONST ==K Gecpairconst
+                  orBool SCHEDCONST ==K Gecpaircoeff
+                  orBool SCHEDCONST ==K Gtxdatanonzero
+                  orBool SCHEDCONST ==K Gsload
+                  orBool SCHEDCONST ==K Gbalance
+                       )
+
+    rule Ghasselfbalance   << ISTANBUL >> => true
+    rule Ghasdirtysstore   << ISTANBUL >> => true
+    rule Ghassstorestipend << ISTANBUL >> => true
+    rule Ghaschainid       << ISTANBUL >> => true
+    rule SCHEDFLAG         << ISTANBUL >> => SCHEDFLAG << PETERSBURG >>
+      requires notBool ( SCHEDFLAG ==K Ghasselfbalance
+                  orBool SCHEDFLAG ==K Ghasdirtysstore
+                  orBool SCHEDFLAG ==K Ghassstorestipend
+                  orBool SCHEDFLAG ==K Ghaschainid
+                       )
+
+

Berlin Schedule

+
    syntax Schedule ::= "BERLIN" [klabel(BERLIN_EVM), symbol, smtlib(schedule_BERLIN)]
+ // ----------------------------------------------------------------------------------
+    rule Gcoldsload            < BERLIN > => 2100
+    rule Gcoldaccountaccess    < BERLIN > => 2600
+    rule Gwarmstorageread      < BERLIN > => 100
+    rule Gsload                < BERLIN > => Gwarmstorageread < BERLIN >
+    rule Gsstorereset          < BERLIN > => 5000 -Int Gcoldsload < BERLIN >
+    rule Gquaddivisor          < BERLIN > => 3
+    rule Gaccessliststoragekey < BERLIN > => 1900
+    rule Gaccesslistaddress    < BERLIN > => 2400
+
+    rule SCHEDCONST            < BERLIN > => SCHEDCONST < ISTANBUL >
+      requires notBool ( SCHEDCONST ==K Gcoldsload
+                  orBool SCHEDCONST ==K Gcoldaccountaccess
+                  orBool SCHEDCONST ==K Gwarmstorageread
+                  orBool SCHEDCONST ==K Gsload
+                  orBool SCHEDCONST ==K Gsstorereset
+                  orBool SCHEDCONST ==K Gquaddivisor
+                  orBool SCHEDCONST ==K Gaccessliststoragekey
+                  orBool SCHEDCONST ==K Gaccesslistaddress
+                       )
+
+    rule Ghasaccesslist << BERLIN >> => true
+    rule SCHEDFLAG      << BERLIN >> => SCHEDFLAG << ISTANBUL >>
+      requires notBool ( SCHEDFLAG ==K Ghasaccesslist )
+
+

London Schedule

+
    syntax Schedule ::= "LONDON" [klabel(LONDON_EVM), symbol, smtlib(schedule_LONDON)]
+ // ----------------------------------------------------------------------------------
+    rule Rselfdestruct < LONDON > => 0
+    rule Rsstoreclear  < LONDON > => Gsstorereset < LONDON > +Int Gaccessliststoragekey < LONDON >
+    rule Rmaxquotient  < LONDON > => 5
+    rule SCHEDCONST    < LONDON > => SCHEDCONST < BERLIN >
+      requires notBool ( SCHEDCONST ==K Rselfdestruct
+                  orBool SCHEDCONST ==K Rsstoreclear
+                  orBool SCHEDCONST ==K Rmaxquotient
+                       )
+
+    rule Ghasbasefee           << LONDON >> => true
+    rule Ghasrejectedfirstbyte << LONDON >> => true
+    rule SCHEDFLAG             << LONDON >> => SCHEDFLAG << BERLIN >>
+      requires notBool ( SCHEDFLAG ==K Ghasbasefee
+                  orBool SCHEDFLAG ==K Ghasrejectedfirstbyte
+                       )
+
+

Merge Schedule

+
    syntax Schedule ::= "MERGE" [klabel(MERGE_EVM), symbol, smtlib(schedule_MERGE)]
+ // -------------------------------------------------------------------------------
+    rule Rb         < MERGE > => 0
+    rule SCHEDCONST < MERGE > => SCHEDCONST < LONDON >
+      requires notBool SCHEDCONST ==K Rb
+
+    rule Ghasprevrandao << MERGE >> => true
+    rule SCHEDFLAG      << MERGE >> => SCHEDFLAG << LONDON >>
+      requires notBool SCHEDFLAG ==K Ghasprevrandao
+
+

Shanghai Schedule

+
    syntax Schedule ::= "SHANGHAI" [klabel(SHANGHAI_EVM), symbol, smtlib(schedule_SHANGHAI)]
+ // ----------------------------------------------------------------------------------------
+    rule maxInitCodeSize   < SHANGHAI > => 2 *Int maxCodeSize < SHANGHAI >
+    rule Ginitcodewordcost < SHANGHAI > => 2
+    rule SCHEDCONST        < SHANGHAI > => SCHEDCONST < MERGE >
+      requires notBool ( SCHEDCONST ==K maxInitCodeSize
+                  orBool SCHEDCONST ==K Ginitcodewordcost
+                       )
+
+    rule Ghasmaxinitcodesize << SHANGHAI >> => true
+    rule Ghaspushzero        << SHANGHAI >> => true
+    rule Ghaswarmcoinbase    << SHANGHAI >> => true
+    rule SCHEDFLAG           << SHANGHAI >> => SCHEDFLAG << MERGE >>
+      requires notBool ( SCHEDFLAG ==K Ghasmaxinitcodesize
+                  orBool SCHEDFLAG ==K Ghaspushzero
+                  orBool SCHEDFLAG ==K Ghaswarmcoinbase
+                       )
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/serialization.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/serialization.md deleted file mode 100644 index 69f1ce8c67..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/serialization.md +++ /dev/null @@ -1,687 +0,0 @@ -Parsing/Unparsing -================= - -```k -requires "plugin/krypto.md" -requires "evm-types.md" -requires "json-rpc.md" -``` - -```k -module SERIALIZATION - imports KRYPTO - imports EVM-TYPES - imports STRING-BUFFER - imports JSON-EXT -``` - -Address/Hash Helpers --------------------- - -- `keccak` serves as a wrapper around the `Keccak256` in `KRYPTO`. - -```k - syntax Int ::= keccak ( Bytes ) [klabel(keccak), function, total, smtlib(smt_keccak)] - // ------------------------------------------------------------------------------------- - rule [keccak]: keccak(WS) => #parseHexWord(Keccak256(WS)) [concrete] -``` - -- `#newAddr` computes the address of a new account given the address and nonce of the creating account. -- `#sender` computes the sender of the transaction from its data and signature. -- `#addrFromPrivateKey` computes the address of an account given its private key - -```k - syntax Int ::= #newAddr ( Int , Int ) [klabel(#newAddr), function] - | #newAddr ( Int , Int , Bytes ) [klabel(#newAddrCreate2), function] - // --------------------------------------------------------------------------------- - rule [#newAddr]: #newAddr(ACCT, NONCE) => #addr(#parseHexWord(Keccak256(#rlpEncode([#addrBytes(ACCT), NONCE])))) [concrete] - rule [#newAddrCreate2]: #newAddr(ACCT, SALT, INITCODE) => #addr(#parseHexWord(Keccak256(b"\xff" +Bytes #addrBytes(ACCT) +Bytes #wordBytes(SALT) +Bytes #parseByteStack(Keccak256(INITCODE))))) [concrete] - - syntax Account ::= #sender ( TxData , Int , Bytes , Bytes ) [function, klabel(#senderTxData) ] - | #sender ( Bytes , Int , Bytes , Bytes ) [function, klabel(#senderAux), total] - | #sender ( Bytes ) [function, klabel(#senderAux2) ] - // ------------------------------------------------------------------------------------------------- - rule #sender(_:TxData, TW => TW +Int 27, _, _) - requires TW ==Int 0 orBool TW ==Int 1 - - rule #sender(TXDATA, TW, TR, TS) - => #sender(#hashTxData(TXDATA), TW, TR, TS) - requires TW =/=Int 0 andBool TW =/=Int 1 - - rule #sender(HT, TW, TR, TS) => #sender(ECDSARecover(HT, TW, TR, TS)) - - rule #sender(b"") => .Account - rule #sender(BYTES) => #addr(#parseHexWord(Keccak256(BYTES))) requires BYTES =/=K b"" - - syntax Int ::= #addrFromPrivateKey ( String ) [function, klabel(addrFromPrivateKey)] - // ------------------------------------------------------------------------------------ - rule [addrFromPrivateKey]: #addrFromPrivateKey ( KEY ) => #addr( #parseHexWord( Keccak256( #parseByteStack( ECDSAPubKey( #parseByteStack( KEY ) ) ) ) ) ) [concrete] -``` - -- `#blockHeaderHash` computes the hash of a block header given all the block data. - -```k - syntax Int ::= #blockHeaderHash( Int , Int , Int , Int , Int , Int , Bytes , Int , Int , Int , Int , Int , Bytes , Int , Int ) [function, klabel(blockHeaderHash), symbol] - | #blockHeaderHash(Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes) [function, klabel(#blockHashHeaderBytes), symbol] - | #blockHeaderHash( Int , Int , Int , Int , Int , Int , Bytes , Int , Int , Int , Int , Int , Bytes , Int , Int , Int) [function, klabel(blockHeaderHashBaseFee), symbol] - | #blockHeaderHash(Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes) [function, klabel(#blockHashHeaderBaseFeeBytes), symbol] - | #blockHeaderHash( Int , Int , Int , Int , Int , Int , Bytes , Int , Int , Int , Int , Int , Bytes , Int , Int , Int , Int) [function, klabel(blockHeaderHashWithdrawals), symbol] - | #blockHeaderHash(Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes) [function, klabel(#blockHashHeaderWithdrawalsBytes), symbol] - // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - rule #blockHeaderHash(HP:Bytes, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN) - => #parseHexWord( Keccak256( #rlpEncode( [ HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN ] ) ) ) - - rule #blockHeaderHash(HP:Int, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN) - => #parseHexWord( Keccak256( #rlpEncode( [ #wordBytes(HP), #wordBytes(HO), #addrBytes(HC) - , #wordBytes(HR), #wordBytes(HT), #wordBytes(HE) - , HB, HD, HI, HL, HG, HS, HX - , #wordBytes(HM), #padToWidth(8, #asByteStack(HN)) - ] - ) - ) - ) - - rule #blockHeaderHash(HP:Bytes, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF) - => #parseHexWord( Keccak256( #rlpEncode( [ HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF ] ) ) ) - - rule #blockHeaderHash(HP:Int, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF) - => #parseHexWord( Keccak256( #rlpEncode( [ #wordBytes(HP), #wordBytes(HO), #addrBytes(HC) - , #wordBytes(HR), #wordBytes(HT), #wordBytes(HE) - , HB, HD, HI, HL, HG, HS, HX - , #wordBytes(HM), #padToWidth(8, #asByteStack(HN)) - , HF - ] - ) - ) - ) - - rule #blockHeaderHash(HP:Bytes, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WF) - => #parseHexWord( Keccak256( #rlpEncode( [ HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WF ] ) ) ) - - rule #blockHeaderHash(HP:Int, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WF) - => #parseHexWord( Keccak256( #rlpEncode( [ #wordBytes(HP), #wordBytes(HO), #addrBytes(HC) - , #wordBytes(HR), #wordBytes(HT), #wordBytes(HE) - , HB, HD, HI, HL, HG, HS, HX - , #wordBytes(HM), #padToWidth(8, #asByteStack(HN)) - , HF , #wordBytes(WF) - ] - ) - ) - ) -``` - -- `#hashSignedTx` Takes transaction data. Returns the hash of the rlp-encoded transaction with R S and V. - -```k - syntax Bytes ::= #hashSignedTx( Int , Int , Int , Account , Int , Bytes , Int , Bytes , Bytes ) [klabel(#hashSignedTx), function] - | #hashTxData ( TxData ) [klabel(#hashTxData), function] - // --------------------------------------------------------------------------------------------------------------------------------- - rule #hashSignedTx(TN, TP, TG, TT, TV, TD, TW, TR, TS) - => Keccak256raw( #rlpEncode([ TN, TP, TG, #addrBytes(TT), TV, TD, TW, TR, TS ]) ) - - rule #hashTxData( TXDATA ) => Keccak256raw( #rlpEncodeTxData(TXDATA) ) requires isLegacyTx (TXDATA) - rule #hashTxData( TXDATA ) => Keccak256raw( b"\x01" +Bytes #rlpEncodeTxData(TXDATA) ) requires isAccessListTx(TXDATA) - rule #hashTxData( TXDATA ) => Keccak256raw( b"\x02" +Bytes #rlpEncodeTxData(TXDATA) ) requires isDynamicFeeTx(TXDATA) -``` - -The EVM test-sets are represented in JSON format with hex-encoding of the data and programs. -Here we provide some standard parser/unparser functions for that format. - -Parsing -------- - -These parsers can interperet hex-encoded strings as `Int`s, `Bytes`s, and `Map`s. - -- `#parseHexWord` interprets a string as a single hex-encoded `Word`. -- `#parseHexBytes` interprets a string as a hex-encoded stack of bytes. -- `#alignHexString` makes sure that the length of a (hex)string is even. -- `#parseByteStack` interprets a string as a hex-encoded stack of bytes, but makes sure to remove the leading "0x". -- `#parseWordStack` interprets a JSON list as a stack of `Word`. -- `#parseMap` interprets a JSON key/value object as a map from `Word` to `Word`. -- `#parseAddr` interprets a string as a 160 bit hex-endcoded address. -- `#parseAccessListStorageKeys` interprets a JSON list object as a Set, casting each string element as a `Word`. - -```k - syntax Int ::= #parseHexWord ( String ) [klabel(#parseHexWord), function] - | #parseWord ( String ) [klabel(#parseWord), function] - // ------------------------------------------------------------------------- - rule #parseHexWord("") => 0 - rule #parseHexWord("0x") => 0 - rule #parseHexWord(S) => String2Base(replaceAll(S, "0x", ""), 16) requires (S =/=String "") andBool (S =/=String "0x") - - rule #parseWord("") => 0 - rule #parseWord(S) => #parseHexWord(S) requires lengthString(S) >=Int 2 andBool substrString(S, 0, 2) ==String "0x" - rule #parseWord(S) => String2Int(S) [owise] - - syntax String ::= #alignHexString ( String ) [klabel(#alignHexString), function, total] - // --------------------------------------------------------------------------------------- - rule #alignHexString(S) => S requires lengthString(S) modInt 2 ==Int 0 - rule #alignHexString(S) => "0" +String S requires notBool lengthString(S) modInt 2 ==Int 0 - - syntax Bytes ::= #parseHexBytes ( String ) [klabel(#parseHexBytes), function] - | #parseHexBytesAux ( String ) [klabel(#parseHexBytesAux), function] - | #parseByteStack ( String ) [klabel(#parseByteStack), function, memo] - // --------------------------------------------------------- - rule #parseByteStack(S) => #parseHexBytes(replaceAll(S, "0x", "")) - - rule #parseHexBytes(S) => #parseHexBytesAux(#alignHexString(S)) - rule #parseHexBytesAux("") => .Bytes - rule #parseHexBytesAux(S) => Int2Bytes(lengthString(S) /Int 2, String2Base(S, 16), BE) - requires lengthString(S) >=Int 2 - - syntax Map ::= #parseMap ( JSON ) [klabel(#parseMap), function] - // --------------------------------------------------------------- - rule #parseMap( { .JSONs } ) => .Map - rule #parseMap( { _ : (VALUE:String) , REST } ) => #parseMap({ REST }) requires #parseHexWord(VALUE) ==K 0 - rule #parseMap( { KEY : (VALUE:String) , REST } ) => #parseMap({ REST }) [ #parseHexWord(KEY) <- #parseHexWord(VALUE) ] requires #parseHexWord(VALUE) =/=K 0 - - syntax Int ::= #parseAddr ( String ) [klabel(#parseAddr), function] - // ------------------------------------------------------------------- - rule #parseAddr(S) => #addr(#parseHexWord(S)) - - syntax List ::= #parseAccessListStorageKeys ( JSONs ) [klabel(#parseAccessListStorageKeys), function] - | #parseAccessListStorageKeys ( JSONs , List ) [klabel(#parseAccessListStorageKeysAux), function] - // -------------------------------------------------------------------------------------------------------------- - rule #parseAccessListStorageKeys( J ) => #parseAccessListStorageKeys(J, .List) - rule #parseAccessListStorageKeys([S:Bytes, REST], RESULT:List) => #parseAccessListStorageKeys([REST], ListItem(#asWord(S)) RESULT ) - rule #parseAccessListStorageKeys([ .JSONs ], RESULT:List) => RESULT -``` - -Unparsing ---------- -- `#padByte` ensures that the `String` interperetation of a `Int` is wide enough. - -```k - syntax String ::= #padByte( String ) [klabel(#padByte), function] - // ----------------------------------------------------------------- - rule #padByte( S ) => S requires lengthString(S) ==K 2 - rule #padByte( S ) => "0" +String S requires lengthString(S) ==K 1 - - syntax String ::= #unparseQuantity( Int ) [klabel(#unparseQuantity), function] - // ------------------------------------------------------------------------------ - rule #unparseQuantity( I ) => "0x" +String Base2String(I, 16) - - syntax String ::= #unparseData ( Int, Int ) [klabel(#unparseData), function] - | #unparseDataBytes ( Bytes ) [klabel(#unparseDataBytes), function] - // --------------------------------------------------------------------------------------- - rule #unparseData( DATA, LENGTH ) => #unparseDataBytes(#padToWidth(LENGTH,#asByteStack(DATA))) - - rule #unparseDataBytes( DATA ) => replaceFirst(Base2String(#asInteger(#asByteStack(1) +Bytes DATA), 16), "1", "0x") -``` - -- `#addrBytes` Takes an Account and represents it as a 20-byte wide Bytes (or an empty Bytes for a null address) -- `#wordBytes` Takes an Int and represents it as a 32-byte wide Bytes - -```k - syntax Bytes ::= #addrBytes( Account ) [klabel(#addrBytes), function] - | #wordBytes( Int ) [klabel(#wordBytes), function] - // --------------------------------------------------------------------- - rule #addrBytes(.Account) => .Bytes - rule #addrBytes(ACCT) => #padToWidth(20, #asByteStack(ACCT)) requires #rangeAddress(ACCT) - rule #wordBytes(WORD) => #padToWidth(32, #asByteStack(WORD)) requires #rangeUInt(256, WORD) -``` - -Recursive Length Prefix (RLP) -============================= - -RLP encoding is used extensively for executing the blocks of a transaction. -For details about RLP encoding, see the [YellowPaper Appendix B](http://gavwood.com/paper.pdf). - -Encoding --------- - -- `#rlpEncodeInt` RLP encodes an arbitrary precision integer. -- `#rlpEncodeWord` RLP encodes a 256-bit wide EVM word. -- `#rlpEncodeAddress` RLP encodes a 160-bit wide Ethereum address (or the null address: .Account). -- `#rlpEncodeBytes` RLP encodes a Bytes. -- `#rlpEncodeString` RLP encodes a String. All code points must be less than `U+00FF`, and `U+00HH` is treated as the byte `0xHH`. -- `#rlpEncode( JSON )` can take a JSON array and make an rlp encoding. It must be a JSON array! JSON objects aren't supported. - example: `#rlpEncode( [ 0, 1, 1, "", #parseByteStack("0xef880") ] )` - -```k - syntax Bytes ::= #rlpEncodeInt ( Int ) [klabel(#rlpEncodeInt), function] - | #rlpEncodeWord ( Int ) [klabel(#rlpEncodeWord), function] - | #rlpEncodeAddress ( Account ) [klabel(#rlpEncodeAddress), function] - | #rlpEncodeString ( String ) [klabel(#rlpEncodeString), function] - | #rlpEncodeBytes ( Bytes ) [klabel(#rlpEncodeBytes), function] - | #rlpEncode ( JSON ) [klabel(#rlpEncode), function] - | #rlpEncode ( JSONs, StringBuffer ) [klabel(#rlpEncodeJsonAux), function] - // ----------------------------------------------------------------------------------------- - rule #rlpEncodeInt(0) => b"\x80" - rule #rlpEncodeInt(WORD) => #asByteStack(WORD) requires WORD >Int 0 andBool WORD #rlpEncodeBytes(#asByteStack(WORD)) requires WORD >=Int 128 - - rule #rlpEncodeWord(WORD) => #rlpEncodeBytes(#wordBytes(WORD)) - - rule #rlpEncodeAddress(ACCT) => #rlpEncodeBytes(#addrBytes(ACCT)) - - rule #rlpEncodeString(STR) => #rlpEncodeBytes(String2Bytes(STR)) - - rule #rlpEncodeBytes(BYTES) => b"\x80" requires lengthBytes(BYTES) BYTES requires lengthBytes(BYTES) ==Int 1 andBool #asInteger(substrBytes(BYTES, 0, 1)) #rlpEncodeLength(BYTES, 128) [owise] - - syntax JSON ::= Bytes - rule #rlpEncode( [ J:JSONs ] ) => #rlpEncodeLength( #rlpEncode(J, .StringBuffer) , 192 ) - - rule #rlpEncode( .JSONs , BUF ) => String2Bytes(StringBuffer2String(BUF)) - rule #rlpEncode( (J:Int, REST:JSONs), BUF ) => #rlpEncode(REST, BUF +String Bytes2String(#rlpEncodeInt(J) )) - rule #rlpEncode( (J:String, REST:JSONs), BUF ) => #rlpEncode(REST, BUF +String Bytes2String(#rlpEncodeString(J))) - rule #rlpEncode( (J:Bytes, REST:JSONs), BUF ) => #rlpEncode(REST, BUF +String Bytes2String(#rlpEncodeBytes(J) )) - rule #rlpEncode( ([ J ], REST:JSONs), BUF ) => #rlpEncode(REST, BUF +String Bytes2String(#rlpEncode([ J ]) )) - - syntax Bytes ::= #rlpEncodeLength ( Bytes , Int ) [klabel(#rlpEncodeLength), function] - | #rlpEncodeLength ( Bytes , Int , Bytes ) [klabel(#rlpEncodeLengthAux), function] - // ------------------------------------------------------------------------------------------------- - rule #rlpEncodeLength(BYTES, OFFSET) => #asByteStack(lengthBytes(BYTES) +Int OFFSET) +Bytes BYTES requires lengthBytes(BYTES) #rlpEncodeLength(BYTES, OFFSET, #asByteStack(lengthBytes(BYTES))) requires notBool ( lengthBytes(BYTES) #asByteStack(lengthBytes(BL) +Int OFFSET +Int 55) +Bytes BL +Bytes BYTES - - syntax Bytes ::= #rlpEncodeFullAccount( Int, Int, Map, Bytes ) [klabel(#rlpEncodeFullAccount), function] - // -------------------------------------------------------------------------------------------------------- - rule [rlpAcct]: #rlpEncodeFullAccount( NONCE, BAL, STORAGE, CODE ) - => #rlpEncodeLength( #rlpEncodeInt(NONCE) - +Bytes #rlpEncodeInt(BAL) - +Bytes #rlpEncodeBytes( #parseByteStack( Keccak256( #rlpEncodeMerkleTree( #storageRoot( STORAGE ) ) ) ) ) - +Bytes #rlpEncodeBytes( #parseByteStack( Keccak256( CODE ) ) ) - , 192 - ) - - syntax Bytes ::= #rlpEncodeReceipt ( Int , Int , Bytes , List ) [klabel(#rlpEncodeReceipt), function] - | #rlpEncodeLogs ( List ) [klabel(#rlpEncodeLogs), function] - | #rlpEncodeLogsAux ( List, StringBuffer ) [klabel(#rlpEncodeLogsAux), function] - | #rlpEncodeTopics ( List, StringBuffer ) [klabel(#rlpEncodeTopics), function] - // ----------------------------------------------------------------------------------------------------- - rule [rlpReceipt]: #rlpEncodeReceipt(RS, RG, RB, RL) - => #rlpEncodeLength( #rlpEncodeInt(RS) - +Bytes #rlpEncodeInt(RG) - +Bytes #rlpEncodeBytes(RB) - +Bytes #rlpEncodeLogs(RL) - , 192 - ) - - rule #rlpEncodeLogs( LOGS ) => #rlpEncodeLogsAux( LOGS, .StringBuffer ) - - rule #rlpEncodeLogsAux( .List, OUT ) => #rlpEncodeLength(String2Bytes(StringBuffer2String(OUT)),192) - rule #rlpEncodeLogsAux( ( ListItem({ ACCT | TOPICS | DATA }) => .List ) _ - , ( OUT => OUT +String Bytes2String( - #rlpEncodeLength( #rlpEncodeAddress(ACCT) - +Bytes #rlpEncodeTopics(TOPICS,.StringBuffer) - +Bytes #rlpEncodeBytes(DATA) - , 192 - )) - ) - ) - - rule #rlpEncodeTopics( .List, OUT ) => #rlpEncodeLength(String2Bytes(StringBuffer2String(OUT)),192) - rule #rlpEncodeTopics( ( ListItem( X:Int ) => .List ) _ - , ( OUT => OUT +String Bytes2String( #rlpEncodeWord(X) ) ) - ) - - syntax Bytes ::= #rlpEncodeTxData( TxData ) [klabel(#rlpEncodeTxData), function] - // -------------------------------------------------------------------------------- - rule #rlpEncodeTxData( LegacyTxData( TN, TP, TG, TT, TV, TD ) ) - => #rlpEncode( [ TN, TP, TG, #addrBytes(TT), TV, TD ] ) - - rule #rlpEncodeTxData( LegacyProtectedTxData( TN, TP, TG, TT, TV, TD, CID ) ) - => #rlpEncode( [ TN, TP, TG, #addrBytes(TT), TV, TD, CID, "", "" ] ) - - rule #rlpEncodeTxData( AccessListTxData( TN, TP, TG, TT, TV, TD, CID, [TA] ) ) - => #rlpEncode( [ CID, TN, TP, TG, #addrBytes(TT), TV, TD, [TA] ] ) - - rule #rlpEncodeTxData( DynamicFeeTxData(TN, TPF, TM, TG, TT, TV, DATA, CID, [TA]) ) - => #rlpEncode( [ CID, TN, TPF, TM, TG, #addrBytes(TT), TV, DATA, [TA] ] ) - - syntax Bytes ::= #rlpEncodeMerkleTree ( MerkleTree ) [klabel(#rlpEncodeMerkleTree), function] - // --------------------------------------------------------------------------------------------- - rule #rlpEncodeMerkleTree ( .MerkleTree ) => b"\x80" - - rule #rlpEncodeMerkleTree ( MerkleLeaf ( PATH, VALUE ) ) - => #rlpEncodeLength( #rlpEncodeBytes( #HPEncode( PATH, 1 ) ) - +Bytes #rlpEncodeString( VALUE ) - , 192 - ) - - rule #rlpEncodeMerkleTree ( MerkleExtension ( PATH, TREE ) ) - => #rlpEncodeLength( #rlpEncodeBytes( #HPEncode( PATH, 0 ) ) - +Bytes #rlpMerkleH( #rlpEncodeMerkleTree( TREE ) ) - , 192 - ) - - rule #rlpEncodeMerkleTree ( MerkleBranch ( M , VALUE ) ) - => #rlpEncodeLength( MerkleMapRLP(M, 0) +Bytes MerkleMapRLP(M, 1) - +Bytes MerkleMapRLP(M, 2) +Bytes MerkleMapRLP(M, 3) - +Bytes MerkleMapRLP(M, 4) +Bytes MerkleMapRLP(M, 5) - +Bytes MerkleMapRLP(M, 6) +Bytes MerkleMapRLP(M, 7) - +Bytes MerkleMapRLP(M, 8) +Bytes MerkleMapRLP(M, 9) - +Bytes MerkleMapRLP(M,10) +Bytes MerkleMapRLP(M,11) - +Bytes MerkleMapRLP(M,12) +Bytes MerkleMapRLP(M,13) - +Bytes MerkleMapRLP(M,14) +Bytes MerkleMapRLP(M,15) - +Bytes #rlpEncodeString( VALUE ) - , 192 - ) - - syntax Bytes ::= MerkleMapRLP( Map, Int ) [klabel(MerkleMapRLP), function] - // -------------------------------------------------------------------------- - rule MerkleMapRLP(M, I) => #rlpMerkleH( #rlpEncodeMerkleTree( { M[I] orDefault .MerkleTree }:>MerkleTree ) ) - - syntax Bytes ::= #rlpMerkleH ( Bytes ) [function,klabel(MerkleRLPAux)] - // ---------------------------------------------------------------------- - rule #rlpMerkleH ( X ) => #rlpEncodeBytes( #parseByteStack( Keccak256( X ) ) ) - requires lengthBytes(X) >=Int 32 - - rule #rlpMerkleH ( X ) => X - requires notBool lengthBytes(X) >=Int 32 -``` - -Decoding --------- - -- `#rlpDecode` RLP decodes a single `Bytes` into a `JSON`. -- `#rlpDecodeList` RLP decodes a single `Bytes` into a `JSONs`, interpereting the input as the RLP encoding of a list. - -```k - syntax JSON ::= #rlpDecode(Bytes) [klabel(#rlpDecode), function] - | #rlpDecode(Bytes, LengthPrefix) [klabel(#rlpDecodeAux), function] - // --------------------------------------------------------------------------------- - rule #rlpDecode(BYTES) => #rlpDecode(BYTES, #decodeLengthPrefix(BYTES, 0)) - rule #rlpDecode(BYTES, #str( LEN, POS)) => substrBytes(BYTES, POS, POS +Int LEN) - rule #rlpDecode(BYTES, #list(_LEN, POS)) => [#rlpDecodeList(BYTES, POS)] - - syntax JSONs ::= #rlpDecodeList(Bytes, Int) [klabel(#rlpDecodeList), function] - | #rlpDecodeList(Bytes, Int, LengthPrefix) [klabel(#rlpDecodeListAux), function] - // ----------------------------------------------------------------------------------------------- - rule #rlpDecodeList(BYTES, POS) => #rlpDecodeList(BYTES, POS, #decodeLengthPrefix(BYTES, POS)) requires POS .JSONs [owise] - rule #rlpDecodeList(BYTES, POS, _:LengthPrefixType(L, P)) => #rlpDecode(substrBytes(BYTES, POS, L +Int P)) , #rlpDecodeList(BYTES, L +Int P) - - syntax LengthPrefixType ::= "#str" | "#list" - syntax LengthPrefix ::= LengthPrefixType "(" Int "," Int ")" - | #decodeLengthPrefix ( Bytes , Int ) [klabel(#decodeLengthPrefix), function] - | #decodeLengthPrefix ( Bytes , Int , Int ) [klabel(#decodeLengthPrefixAux), function] - | #decodeLengthPrefixLength ( LengthPrefixType , Bytes , Int , Int ) [klabel(#decodeLengthPrefixLength), function] - | #decodeLengthPrefixLength ( LengthPrefixType , Int , Int , Int ) [klabel(#decodeLengthPrefixLengthAux), function] - // ------------------------------------------------------------------------------------------------------------------------------------------- - rule #decodeLengthPrefix(BYTES, START) => #decodeLengthPrefix(BYTES, START, #asWord(substrBytes(BYTES, START, START +Int 1))) - - rule #decodeLengthPrefix( _, START, B0) => #str(1, START) requires B0 #str(B0 -Int 128, START +Int 1) requires B0 >=Int 128 andBool B0 #decodeLengthPrefixLength(#str, BYTES, START, B0) requires B0 >=Int (128 +Int 56) andBool B0 #list(B0 -Int 192, START +Int 1) requires B0 >=Int 192 andBool B0 #decodeLengthPrefixLength(#list, BYTES, START, B0) [owise] - - rule #decodeLengthPrefixLength(#str, BYTES, START, B0) => #decodeLengthPrefixLength(#str, START, B0 -Int 128 -Int 56 +Int 1, #asWord(substrBytes(BYTES, START +Int 1, START +Int 1 +Int (B0 -Int 128 -Int 56 +Int 1)))) - rule #decodeLengthPrefixLength(#list, BYTES, START, B0) => #decodeLengthPrefixLength(#list, START, B0 -Int 192 -Int 56 +Int 1, #asWord(substrBytes(BYTES, START +Int 1, START +Int 1 +Int (B0 -Int 192 -Int 56 +Int 1)))) - rule #decodeLengthPrefixLength(TYPE, START, LL, L) => TYPE(L, START +Int 1 +Int LL) - - syntax JSONs ::= #rlpDecodeTransaction(Bytes) [klabel(#rlpDecodeTransaction), function] - // --------------------------------------------------------------------------------------- - rule #rlpDecodeTransaction(T) => #range(T, 0, 1), #rlpDecode(#range(T, 1, lengthBytes(T) -Int 1)) -``` - -Merkle Patricia Tree -==================== - -- Appendix C and D from the Ethereum Yellow Paper -- https://github.com/ethereum/wiki/wiki/Patricia-Tree - -```k - syntax KItem ::= Int | MerkleTree // For testing purposes - - syntax MerkleTree ::= ".MerkleTree" - | MerkleBranch ( Map, String ) [klabel(MerkleBranch)] - | MerkleExtension ( Bytes, MerkleTree ) [klabel(MerkleExtension)] - | MerkleLeaf ( Bytes, String ) [klabel(MerkleLeaf)] - // ------------------------------------------------------------------------------------- - - syntax MerkleTree ::= MerkleUpdate ( MerkleTree, String, String ) [klabel(MerkleUpdate), function] - | MerkleUpdate ( MerkleTree, Bytes, String ) [klabel(MerkleUpdateAux), function] - | MerklePut ( MerkleTree, Bytes, String ) [klabel(MerklePut), function] - | MerkleDelete ( MerkleTree, Bytes ) [klabel(MerkleDelete), function] - // ----------------------------------------------------------------------------------------------------- - rule MerkleUpdate ( TREE, S:String, VALUE ) => MerkleUpdate ( TREE, #nibbleize ( String2Bytes( S ) ), VALUE ) - - rule MerkleUpdate ( TREE, PATH:Bytes, VALUE ) => MerklePut ( TREE, PATH, VALUE ) requires VALUE =/=String "" - rule MerkleUpdate ( TREE, PATH:Bytes, "" ) => MerkleDelete ( TREE, PATH ) - - rule MerklePut ( .MerkleTree, PATH:Bytes, VALUE ) => MerkleLeaf ( PATH, VALUE ) - - rule MerklePut ( MerkleLeaf ( LEAFPATH, _ ), PATH, VALUE ) - => MerkleLeaf( LEAFPATH, VALUE ) - requires LEAFPATH ==K PATH - - rule MerklePut ( MerkleLeaf ( LEAFPATH, LEAFVALUE ), PATH, VALUE ) - => MerklePut ( MerklePut ( MerkleBranch( .Map, "" ), LEAFPATH, LEAFVALUE ), PATH, VALUE ) - requires lengthBytes( LEAFPATH ) >Int 0 - andBool lengthBytes( PATH ) >Int 0 - andBool LEAFPATH[0] =/=Int PATH[0] - - rule MerklePut ( MerkleLeaf ( LEAFPATH, LEAFVALUE ), PATH, VALUE ) - => #merkleExtensionBuilder( .Bytes, LEAFPATH, LEAFVALUE, PATH, VALUE ) - requires LEAFPATH =/=K PATH - andBool lengthBytes( LEAFPATH ) >Int 0 - andBool lengthBytes( PATH ) >Int 0 - andBool LEAFPATH[0] ==Int PATH[0] - - rule MerklePut ( MerkleExtension ( EXTPATH, EXTTREE ), PATH, VALUE ) - => MerkleExtension ( EXTPATH, MerklePut ( EXTTREE, .Bytes, VALUE ) ) - requires EXTPATH ==K PATH - - rule MerklePut ( MerkleExtension ( EXTPATH, EXTTREE ), PATH, VALUE ) - => #merkleExtensionBrancher( MerklePut( MerkleBranch( .Map, "" ), PATH, VALUE ), EXTPATH, EXTTREE ) - requires lengthBytes( PATH ) >Int 0 - andBool EXTPATH[0] =/=Int PATH[0] - - rule MerklePut ( MerkleExtension ( EXTPATH, EXTTREE ), PATH, VALUE ) - => #merkleExtensionSplitter( .Bytes, EXTPATH, EXTTREE, PATH, VALUE ) - requires EXTPATH =/=K PATH - andBool lengthBytes( PATH ) >Int 0 - andBool EXTPATH[0] ==Int PATH[0] - - rule MerklePut ( MerkleBranch( M, _ ), PATH, VALUE ) - => MerkleBranch( M, VALUE ) - requires lengthBytes( PATH ) ==Int 0 - - rule MerklePut ( MerkleBranch( M, BRANCHVALUE ), PATH, VALUE ) - => #merkleUpdateBranch ( M, BRANCHVALUE, PATH[0], #range(PATH, 1, lengthBytes(PATH) -Int 1), VALUE ) - requires lengthBytes( PATH ) >Int 0 - - rule MerkleDelete( .MerkleTree, _ ) => .MerkleTree - - rule MerkleDelete( MerkleLeaf( LPATH, _V ), PATH ) => .MerkleTree requires LPATH ==K PATH - rule MerkleDelete( MerkleLeaf( LPATH, V ), PATH ) => MerkleCheck( MerkleLeaf( LPATH, V ) ) requires LPATH =/=K PATH - - rule MerkleDelete( MerkleExtension( EXTPATH, TREE ), PATH ) => MerkleExtension( EXTPATH, TREE ) requires notBool (lengthBytes(EXTPATH) <=Int lengthBytes(PATH) andBool #range(PATH, 0, lengthBytes(EXTPATH)) ==K EXTPATH) - rule MerkleDelete( MerkleExtension( EXTPATH, TREE ), PATH ) - => MerkleCheck( MerkleExtension( EXTPATH, MerkleDelete( TREE, #range(PATH, lengthBytes(EXTPATH), lengthBytes(PATH) -Int lengthBytes(EXTPATH)) ) ) ) - requires lengthBytes(EXTPATH) <=Int lengthBytes(PATH) andBool #range(PATH, 0, lengthBytes(EXTPATH)) ==K EXTPATH - - rule MerkleDelete( MerkleBranch( M, _V ), PATH ) => MerkleCheck( MerkleBranch( M, "" ) ) requires lengthBytes(PATH) ==Int 0 - rule MerkleDelete( MerkleBranch( M, V ), PATH ) => MerkleBranch( M, V ) requires lengthBytes(PATH) >Int 0 andBool notBool PATH[0] in_keys(M) - rule MerkleDelete( MerkleBranch( M, V ), PATH ) - => MerkleCheck( MerkleBranch( M[PATH[0] <- MerkleDelete( {M[PATH[0]]}:>MerkleTree, #range(PATH, 1, lengthBytes(PATH) -Int 1) )], V ) ) - requires lengthBytes(PATH) >Int 0 andBool PATH[0] in_keys(M) - - syntax MerkleTree ::= MerkleCheck( MerkleTree ) [klabel(MerkleCheck), function] - // ------------------------------------------------------------------------------- - rule MerkleCheck( TREE ) => TREE [owise] - - rule MerkleCheck( MerkleLeaf( _, "" ) => .MerkleTree ) - - rule MerkleCheck( MerkleBranch( .Map , V ) => MerkleLeaf( .Bytes, V ) ) - rule MerkleCheck( MerkleBranch( X |-> T , "" ) => MerkleExtension( #range(#asByteStack(X), 0, 1), T ) ) requires T =/=K .MerkleTree - rule MerkleCheck( MerkleBranch( M => #cleanBranchMap(M), _ ) ) requires .MerkleTree in values(M) - - rule MerkleCheck( MerkleExtension( _, .MerkleTree ) => .MerkleTree ) - rule MerkleCheck( MerkleExtension( P1, MerkleLeaf( P2, V ) ) => MerkleLeaf( P1 +Bytes P2, V ) ) - rule MerkleCheck( MerkleExtension( P1 => P1 +Bytes P2, MerkleExtension( P2, TREE ) => TREE ) ) -``` - -- `MerkleUpdateMap` Takes a mapping of `Bytes |-> String` and generates a trie - -```k - syntax MerkleTree ::= MerkleUpdateMap ( MerkleTree , Map ) [klabel(MerkleUpdateMap), function] - | MerkleUpdateMapAux ( MerkleTree , Map , List ) [klabel(MerkleUpdateMapAux), function] - // ----------------------------------------------------------------------------------------------------------- - rule MerkleUpdateMap(TREE, MMAP) => MerkleUpdateMapAux(TREE, MMAP, keys_list(MMAP)) - - rule MerkleUpdateMapAux(TREE, _, .List ) => TREE - rule MerkleUpdateMapAux(TREE , MMAP, ListItem(KEY) REST) - => MerkleUpdateMapAux(MerkleUpdate(TREE, #nibbleize(KEY), {MMAP[KEY]}:>String), MMAP, REST) -``` - -Merkle Tree Aux Functions -------------------------- - -```k - syntax Bytes ::= #nibbleize ( Bytes ) [klabel(#nibbleize), function] - | #byteify ( Bytes ) [klabel(#byteify), function] - // -------------------------------------------------------------------- - rule #nibbleize ( B ) => ( #range( #asByteStack ( B [ 0 ] /Int 16 ), 0, 1 ) - +Bytes ( #range( #asByteStack ( B [ 0 ] %Int 16 ), 0, 1 ) ) - ) +Bytes #nibbleize ( #range(B, 1, lengthBytes(B) -Int 1) ) - requires lengthBytes(B) >Int 0 - - rule #nibbleize ( B ) => .Bytes requires notBool lengthBytes(B) >Int 0 - - rule #byteify ( B ) => #range( #asByteStack ( B[0] *Int 16 +Int B[1] ), 0, 1 ) - +Bytes #byteify ( #range( B, 2, lengthBytes(B) -Int 2 ) ) - requires lengthBytes(B) >Int 0 - - rule #byteify ( B ) => .Bytes requires notBool lengthBytes(B) >Int 0 - - syntax Bytes ::= #HPEncode ( Bytes, Int ) [klabel(#HPEncode), function] - // ----------------------------------------------------------------------- - rule #HPEncode ( X, T ) => #asByteStack ( ( HPEncodeAux(T) +Int 1 ) *Int 16 +Int X[0] ) +Bytes #byteify( #range(X, 1, lengthBytes(X) -Int 1) ) - requires lengthBytes(X) %Int 2 =/=Int 0 - - rule #HPEncode ( X, T ) => #range(#asByteStack ( HPEncodeAux(T) *Int 16 ), 0, 1) +Bytes #byteify( X ) - requires notBool lengthBytes(X) %Int 2 =/=Int 0 - - syntax Int ::= HPEncodeAux ( Int ) [klabel(HPEncodeAux), function] - // ------------------------------------------------------------------ - rule HPEncodeAux ( X ) => 0 requires X ==Int 0 - rule HPEncodeAux ( X ) => 2 requires notBool X ==Int 0 - - syntax Map ::= #cleanBranchMap ( Map ) [klabel(#cleanBranchMap), function] - | #cleanBranchMapAux ( Map, List, Set ) [klabel(#cleanBranchMapAux), function] - // ------------------------------------------------------------------------------------------- - rule #cleanBranchMap( M ) => #cleanBranchMapAux( M, keys_list(M), .Set ) - - rule #cleanBranchMapAux( M, .List, S ) => removeAll( M, S ) - rule #cleanBranchMapAux( X |-> .MerkleTree _, (ListItem(X) => .List) _ , (.Set => SetItem(X)) _ ) - rule #cleanBranchMapAux( _, (ListItem(_) => .List) _ , _ ) [owise] - - syntax MerkleTree ::= #merkleUpdateBranch ( Map, String, Int, Bytes, String ) [klabel(#merkleUpdateBranch), function] - // --------------------------------------------------------------------------------------------------------------------- - rule #merkleUpdateBranch ( X |-> TREE M, BRANCHVALUE, X, PATH, VALUE ) - => MerkleBranch( M[X <- MerklePut( TREE, PATH, VALUE )], BRANCHVALUE ) - - rule #merkleUpdateBranch ( M, BRANCHVALUE, X, PATH, VALUE ) - => MerkleBranch( M[X <- MerkleLeaf( PATH, VALUE )], BRANCHVALUE ) [owise] - - syntax MerkleTree ::= #merkleExtensionBuilder( Bytes , Bytes , String , Bytes , String ) [klabel(#merkleExtensionBuilder), function] - | #merkleExtensionBuilderAux( Bytes , Bytes , String , Bytes , String ) [klabel(#merkleExtensionBuilderAux), function] - // ------------------------------------------------------------------------------------------------------------------------------------------ - rule #merkleExtensionBuilder(PATH, P1, V1, P2, V2) - => #merkleExtensionBuilderAux(PATH, P1, V1, P2, V2) - requires lengthBytes(P1) >Int 0 - andBool lengthBytes(P2) >Int 0 - - rule #merkleExtensionBuilder(PATH, P1, V1, P2, V2) - => MerkleExtension( PATH, MerklePut( MerklePut( MerkleBranch( .Map, "" ), P1, V1 ), P2, V2 ) ) - [owise] - - rule #merkleExtensionBuilderAux( PATH, P1, V1, P2, V2 ) - => #merkleExtensionBuilder( PATH +Bytes (#range(P1, 0, 1)) - , #range(P1, 1, lengthBytes(P1) -Int 1), V1 - , #range(P2, 1, lengthBytes(P2) -Int 1), V2 - ) - requires P1[0] ==Int P2[0] - - rule #merkleExtensionBuilderAux( PATH, P1, V1, P2, V2 ) - => MerkleExtension( PATH, MerklePut( MerklePut( MerkleBranch( .Map, "" ), P1, V1 ), P2, V2 ) ) - [owise] - - syntax MerkleTree ::= #merkleExtensionBrancher ( MerkleTree, Bytes, MerkleTree ) [klabel(#merkleExtensionBrancher), function] - // ----------------------------------------------------------------------------------------------------------------------------- - rule #merkleExtensionBrancher( MerkleBranch(M, VALUE), PATH, EXTTREE ) - => MerkleBranch( M[PATH[0] <- MerkleExtension( #range(PATH, 1, lengthBytes(PATH) -Int 1), EXTTREE )], VALUE ) - requires lengthBytes(PATH) >Int 1 - - rule #merkleExtensionBrancher( MerkleBranch(M, VALUE), PATH, EXTTREE ) - => MerkleBranch( M[PATH[0] <- EXTTREE], VALUE ) - requires lengthBytes(PATH) ==Int 1 - - syntax MerkleTree ::= #merkleExtensionSplitter ( Bytes, Bytes, MerkleTree, Bytes, String ) [klabel(#merkleExtensionSplitter), function] - // --------------------------------------------------------------------------------------------------------------------------------------- - rule #merkleExtensionSplitter( PATH => PATH +Bytes (#range(P1, 0, 1)) - , P1 => #range(P1, 1, lengthBytes(P1) -Int 1), _ - , P2 => #range(P2, 1, lengthBytes(P2) -Int 1), _ - ) - requires lengthBytes(P1) >Int 0 - andBool lengthBytes(P2) >Int 0 - andBool P1[0] ==Int P2[0] - - rule #merkleExtensionSplitter( PATH, P1, TREE, P2, VALUE ) - => MerkleExtension( PATH, #merkleExtensionBrancher( MerklePut( MerkleBranch( .Map, "" ), P2, VALUE ), P1, TREE ) ) - requires lengthBytes(P1) >Int 0 - andBool lengthBytes(P2) >Int 0 - andBool P1[0] =/=Int P2[0] - - rule #merkleExtensionSplitter( PATH, P1, TREE, P2, VALUE ) - => MerkleExtension( PATH, MerklePut( TREE, P2, VALUE ) ) - requires lengthBytes(P1) ==Int 0 - - rule #merkleExtensionSplitter( PATH, P1, TREE, P2, VALUE ) - => MerkleExtension( PATH, #merkleExtensionBrancher( MerklePut( MerkleBranch( .Map, "" ), P2, VALUE ), P1, TREE ) ) - requires lengthBytes(P2) ==Int 0 -``` - -Tree Root Helper Functions --------------------------- - -### Storage Root - -```k - syntax Map ::= #intMap2StorageMap( Map ) [klabel(#intMap2StorageMap), function] - | #intMap2StorageMapAux( Map, Map, List ) [klabel(#intMap2StorageMapAux), function] - // ------------------------------------------------------------------------------------------------ - rule #intMap2StorageMap( M ) => #intMap2StorageMapAux( .Map, M, keys_list(M) ) - - rule #intMap2StorageMapAux( SMAP, _, .List ) => SMAP - rule #intMap2StorageMapAux( SMAP, IMAP, ListItem(K) REST ) - => #intMap2StorageMapAux( #wordBytes(K) |-> #rlpEncodeInt({IMAP[K]}:>Int) SMAP, IMAP, REST ) - requires {IMAP[K]}:>Int =/=Int 0 - - rule #intMap2StorageMapAux( SMAP, IMAP, ListItem(K) REST ) - => #intMap2StorageMapAux( SMAP, IMAP, REST ) - requires {IMAP[K]}:>Int ==Int 0 - - - syntax MerkleTree ::= #storageRoot( Map ) [klabel(#storageRoot), function] - // -------------------------------------------------------------------------- - rule #storageRoot( STORAGE ) => MerkleUpdateMap( .MerkleTree, #intMap2StorageMap( STORAGE ) ) -``` - -### State Root - -```k - syntax Map ::= #precompiledAccountsMap ( Set ) [klabel(#precompiledAccountsMap), function] - | #precompiledAccountsMapAux( List, Map ) [klabel(#precompiledAccountsMapAux), function] - // ----------------------------------------------------------------------------------------------------- - rule #precompiledAccountsMap( ACCTS ) => #precompiledAccountsMapAux( Set2List( ACCTS ), .Map ) - - rule #precompiledAccountsMapAux( .List, M ) => M - rule #precompiledAccountsMapAux( (ListItem( ACCT ) => .List) _, M => M[#parseByteStack ( #unparseData( ACCT, 20 ) ) <- #emptyContractRLP] ) - - syntax Bytes ::= "#emptyContractRLP" [function] - // ------------------------------------------------ - rule #emptyContractRLP => #rlpEncodeLength( #rlpEncodeInt(0) - +Bytes #rlpEncodeInt(0) - +Bytes #rlpEncodeBytes( #parseByteStack( Keccak256(b"\x80") ) ) - +Bytes #rlpEncodeBytes( #parseByteStack( Keccak256(b"") ) ) - , 192 - ) -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/serialization/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/serialization/index.html new file mode 100644 index 0000000000..58d6d89fad --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/serialization/index.html @@ -0,0 +1,914 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Parsing/Unparsing

+
requires "plugin/krypto.md"
+requires "evm-types.md"
+requires "json-rpc.md"
+
+
module SERIALIZATION
+    imports KRYPTO
+    imports EVM-TYPES
+    imports STRING-BUFFER
+    imports JSON-EXT
+
+

Address/Hash Helpers

+
    +
  • keccak serves as a wrapper around the Keccak256 in KRYPTO.
  • +
+
    syntax Int ::= keccak ( Bytes ) [klabel(keccak), function, total, smtlib(smt_keccak)]
+ // -------------------------------------------------------------------------------------
+    rule [keccak]: keccak(WS) => #parseHexWord(Keccak256(WS)) [concrete]
+
+
    +
  • #newAddr computes the address of a new account given the address and nonce of the creating account.
  • +
  • #sender computes the sender of the transaction from its data and signature.
  • +
  • #addrFromPrivateKey computes the address of an account given its private key
  • +
+
    syntax Int ::= #newAddr ( Int , Int )         [klabel(#newAddr), function]
+                 | #newAddr ( Int , Int , Bytes ) [klabel(#newAddrCreate2), function]
+ // ---------------------------------------------------------------------------------
+    rule [#newAddr]:        #newAddr(ACCT, NONCE) => #addr(#parseHexWord(Keccak256(#rlpEncode([#addrBytes(ACCT), NONCE]))))                                                                        [concrete]
+    rule [#newAddrCreate2]: #newAddr(ACCT, SALT, INITCODE) => #addr(#parseHexWord(Keccak256(b"\xff" +Bytes #addrBytes(ACCT) +Bytes #wordBytes(SALT) +Bytes #parseByteStack(Keccak256(INITCODE))))) [concrete]
+
+    syntax Account ::= #sender ( TxData , Int , Bytes , Bytes ) [function, klabel(#senderTxData)    ]
+                     | #sender ( Bytes  , Int , Bytes , Bytes ) [function, klabel(#senderAux), total]
+                     | #sender ( Bytes )                        [function, klabel(#senderAux2)      ]
+ // -------------------------------------------------------------------------------------------------
+    rule #sender(_:TxData, TW => TW +Int 27, _, _)
+      requires TW ==Int 0 orBool TW ==Int 1
+
+    rule #sender(TXDATA, TW, TR, TS)
+      => #sender(#hashTxData(TXDATA), TW, TR, TS)
+      requires TW =/=Int 0 andBool TW =/=Int 1
+
+    rule #sender(HT, TW, TR, TS) => #sender(ECDSARecover(HT, TW, TR, TS))
+
+    rule #sender(b"")   => .Account
+    rule #sender(BYTES) => #addr(#parseHexWord(Keccak256(BYTES))) requires BYTES =/=K b""
+
+    syntax Int ::= #addrFromPrivateKey ( String ) [function, klabel(addrFromPrivateKey)]
+ // ------------------------------------------------------------------------------------
+    rule [addrFromPrivateKey]: #addrFromPrivateKey ( KEY ) => #addr( #parseHexWord( Keccak256( #parseByteStack( ECDSAPubKey( #parseByteStack( KEY ) ) ) ) ) ) [concrete]
+
+
    +
  • #blockHeaderHash computes the hash of a block header given all the block data.
  • +
+
    syntax Int ::= #blockHeaderHash( Int , Int , Int , Int , Int , Int , Bytes , Int , Int , Int , Int , Int , Bytes , Int , Int ) [function, klabel(blockHeaderHash), symbol]
+                 | #blockHeaderHash(Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes) [function, klabel(#blockHashHeaderBytes), symbol]
+                 | #blockHeaderHash( Int , Int , Int , Int , Int , Int , Bytes , Int , Int , Int , Int , Int , Bytes , Int , Int , Int) [function, klabel(blockHeaderHashBaseFee), symbol]
+                 | #blockHeaderHash(Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes) [function, klabel(#blockHashHeaderBaseFeeBytes), symbol]
+                 | #blockHeaderHash( Int , Int , Int , Int , Int , Int , Bytes , Int , Int , Int , Int , Int , Bytes , Int , Int , Int , Int) [function, klabel(blockHeaderHashWithdrawals), symbol]
+                 | #blockHeaderHash(Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes, Bytes) [function, klabel(#blockHashHeaderWithdrawalsBytes), symbol]
+ // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+    rule #blockHeaderHash(HP:Bytes, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN)
+         => #parseHexWord( Keccak256( #rlpEncode( [ HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN ] ) ) )
+
+    rule #blockHeaderHash(HP:Int, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN)
+         => #parseHexWord( Keccak256( #rlpEncode( [ #wordBytes(HP), #wordBytes(HO), #addrBytes(HC)
+                                                  , #wordBytes(HR), #wordBytes(HT), #wordBytes(HE)
+                                                  , HB, HD, HI, HL, HG, HS, HX
+                                                  , #wordBytes(HM), #padToWidth(8, #asByteStack(HN))
+                                                  ]
+                                                )
+                                    )
+                         )
+
+    rule #blockHeaderHash(HP:Bytes, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF)
+         => #parseHexWord( Keccak256( #rlpEncode( [ HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF ] ) ) )
+
+    rule #blockHeaderHash(HP:Int, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF)
+         => #parseHexWord( Keccak256( #rlpEncode( [ #wordBytes(HP), #wordBytes(HO), #addrBytes(HC)
+                                                  , #wordBytes(HR), #wordBytes(HT), #wordBytes(HE)
+                                                  , HB, HD, HI, HL, HG, HS, HX
+                                                  , #wordBytes(HM), #padToWidth(8, #asByteStack(HN))
+                                                  , HF
+                                                  ]
+                                                )
+                                    )
+                         )
+
+    rule #blockHeaderHash(HP:Bytes, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WF)
+         => #parseHexWord( Keccak256( #rlpEncode( [ HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WF ] ) ) )
+
+    rule #blockHeaderHash(HP:Int, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WF)
+         => #parseHexWord( Keccak256( #rlpEncode( [ #wordBytes(HP), #wordBytes(HO), #addrBytes(HC)
+                                                  , #wordBytes(HR), #wordBytes(HT), #wordBytes(HE)
+                                                  , HB, HD, HI, HL, HG, HS, HX
+                                                  , #wordBytes(HM), #padToWidth(8, #asByteStack(HN))
+                                                  , HF , #wordBytes(WF)
+                                                  ]
+                                                )
+                                    )
+                         )
+
+
    +
  • #hashSignedTx Takes transaction data. Returns the hash of the rlp-encoded transaction with R S and V.
  • +
+
    syntax Bytes ::= #hashSignedTx( Int , Int , Int , Account , Int , Bytes , Int , Bytes , Bytes ) [klabel(#hashSignedTx), function]
+                   | #hashTxData  ( TxData )                                                        [klabel(#hashTxData), function]
+ // ---------------------------------------------------------------------------------------------------------------------------------
+    rule #hashSignedTx(TN, TP, TG, TT, TV, TD, TW, TR, TS)
+      => Keccak256raw( #rlpEncode([ TN, TP, TG, #addrBytes(TT), TV, TD, TW, TR, TS ]) )
+
+    rule #hashTxData( TXDATA ) => Keccak256raw(                #rlpEncodeTxData(TXDATA) ) requires isLegacyTx    (TXDATA)
+    rule #hashTxData( TXDATA ) => Keccak256raw( b"\x01" +Bytes #rlpEncodeTxData(TXDATA) ) requires isAccessListTx(TXDATA)
+    rule #hashTxData( TXDATA ) => Keccak256raw( b"\x02" +Bytes #rlpEncodeTxData(TXDATA) ) requires isDynamicFeeTx(TXDATA)
+
+

The EVM test-sets are represented in JSON format with hex-encoding of the data and programs. +Here we provide some standard parser/unparser functions for that format.

+

Parsing

+

These parsers can interperet hex-encoded strings as Ints, Bytess, and Maps.

+
    +
  • #parseHexWord interprets a string as a single hex-encoded Word.
  • +
  • #parseHexBytes interprets a string as a hex-encoded stack of bytes.
  • +
  • #alignHexString makes sure that the length of a (hex)string is even.
  • +
  • #parseByteStack interprets a string as a hex-encoded stack of bytes, but makes sure to remove the leading "0x".
  • +
  • #parseWordStack interprets a JSON list as a stack of Word.
  • +
  • #parseMap interprets a JSON key/value object as a map from Word to Word.
  • +
  • #parseAddr interprets a string as a 160 bit hex-endcoded address.
  • +
  • #parseAccessListStorageKeys interprets a JSON list object as a Set, casting each string element as a Word.
  • +
+
    syntax Int ::= #parseHexWord ( String ) [klabel(#parseHexWord), function]
+                 | #parseWord    ( String ) [klabel(#parseWord), function]
+ // -------------------------------------------------------------------------
+    rule #parseHexWord("")   => 0
+    rule #parseHexWord("0x") => 0
+    rule #parseHexWord(S)    => String2Base(replaceAll(S, "0x", ""), 16) requires (S =/=String "") andBool (S =/=String "0x")
+
+    rule #parseWord("") => 0
+    rule #parseWord(S)  => #parseHexWord(S) requires lengthString(S) >=Int 2 andBool substrString(S, 0, 2) ==String "0x"
+    rule #parseWord(S)  => String2Int(S) [owise]
+
+    syntax String ::= #alignHexString ( String ) [klabel(#alignHexString), function, total]
+ // ---------------------------------------------------------------------------------------
+    rule #alignHexString(S) => S             requires         lengthString(S) modInt 2 ==Int 0
+    rule #alignHexString(S) => "0" +String S requires notBool lengthString(S) modInt 2 ==Int 0
+
+    syntax Bytes ::= #parseHexBytes     ( String ) [klabel(#parseHexBytes), function]
+                   | #parseHexBytesAux  ( String ) [klabel(#parseHexBytesAux), function]
+                   | #parseByteStack    ( String ) [klabel(#parseByteStack), function, memo]
+ // ---------------------------------------------------------
+    rule #parseByteStack(S) => #parseHexBytes(replaceAll(S, "0x", ""))
+
+    rule #parseHexBytes(S)  => #parseHexBytesAux(#alignHexString(S))
+    rule #parseHexBytesAux("") => .Bytes
+    rule #parseHexBytesAux(S)  => Int2Bytes(lengthString(S) /Int 2, String2Base(S, 16), BE)
+      requires lengthString(S) >=Int 2
+
+    syntax Map ::= #parseMap ( JSON ) [klabel(#parseMap), function]
+ // ---------------------------------------------------------------
+    rule #parseMap( { .JSONs                      } ) => .Map
+    rule #parseMap( { _   : (VALUE:String) , REST } ) => #parseMap({ REST })                                                requires #parseHexWord(VALUE) ==K 0
+    rule #parseMap( { KEY : (VALUE:String) , REST } ) => #parseMap({ REST }) [ #parseHexWord(KEY) <- #parseHexWord(VALUE) ] requires #parseHexWord(VALUE) =/=K 0
+
+    syntax Int ::= #parseAddr ( String ) [klabel(#parseAddr), function]
+ // -------------------------------------------------------------------
+    rule #parseAddr(S) => #addr(#parseHexWord(S))
+
+   syntax List ::= #parseAccessListStorageKeys ( JSONs )        [klabel(#parseAccessListStorageKeys), function]
+                 | #parseAccessListStorageKeys ( JSONs , List ) [klabel(#parseAccessListStorageKeysAux), function]
+ // --------------------------------------------------------------------------------------------------------------
+    rule #parseAccessListStorageKeys( J                           ) => #parseAccessListStorageKeys(J, .List)
+    rule #parseAccessListStorageKeys([S:Bytes, REST], RESULT:List) => #parseAccessListStorageKeys([REST], ListItem(#asWord(S)) RESULT )
+    rule #parseAccessListStorageKeys([ .JSONs       ], RESULT:List) => RESULT
+
+

Unparsing

+
    +
  • #padByte ensures that the String interperetation of a Int is wide enough.
  • +
+
    syntax String ::= #padByte( String ) [klabel(#padByte), function]
+ // -----------------------------------------------------------------
+    rule #padByte( S ) => S             requires lengthString(S) ==K 2
+    rule #padByte( S ) => "0" +String S requires lengthString(S) ==K 1
+
+    syntax String ::= #unparseQuantity( Int ) [klabel(#unparseQuantity), function]
+ // ------------------------------------------------------------------------------
+    rule #unparseQuantity( I ) => "0x" +String Base2String(I, 16)
+
+    syntax String ::= #unparseData      ( Int, Int  ) [klabel(#unparseData), function]
+                    | #unparseDataBytes ( Bytes )     [klabel(#unparseDataBytes), function]
+ // ---------------------------------------------------------------------------------------
+    rule #unparseData( DATA, LENGTH ) => #unparseDataBytes(#padToWidth(LENGTH,#asByteStack(DATA)))
+
+    rule #unparseDataBytes( DATA ) => replaceFirst(Base2String(#asInteger(#asByteStack(1) +Bytes DATA), 16), "1", "0x")
+
+
    +
  • #addrBytes Takes an Account and represents it as a 20-byte wide Bytes (or an empty Bytes for a null address)
  • +
  • #wordBytes Takes an Int and represents it as a 32-byte wide Bytes
  • +
+
    syntax Bytes ::= #addrBytes( Account ) [klabel(#addrBytes), function]
+                   | #wordBytes( Int )     [klabel(#wordBytes), function]
+ // ---------------------------------------------------------------------
+    rule #addrBytes(.Account) => .Bytes
+    rule #addrBytes(ACCT)     => #padToWidth(20, #asByteStack(ACCT)) requires #rangeAddress(ACCT)
+    rule #wordBytes(WORD)     => #padToWidth(32, #asByteStack(WORD)) requires #rangeUInt(256, WORD)
+
+

Recursive Length Prefix (RLP)

+

RLP encoding is used extensively for executing the blocks of a transaction. +For details about RLP encoding, see the YellowPaper Appendix B.

+

Encoding

+
    +
  • #rlpEncodeInt RLP encodes an arbitrary precision integer.
  • +
  • #rlpEncodeWord RLP encodes a 256-bit wide EVM word.
  • +
  • #rlpEncodeAddress RLP encodes a 160-bit wide Ethereum address (or the null address: .Account).
  • +
  • #rlpEncodeBytes RLP encodes a Bytes.
  • +
  • #rlpEncodeString RLP encodes a String. All code points must be less than U+00FF, and U+00HH is treated as the byte 0xHH.
  • +
  • #rlpEncode( JSON ) can take a JSON array and make an rlp encoding. It must be a JSON array! JSON objects aren't supported. +example: #rlpEncode( [ 0, 1, 1, "", #parseByteStack("0xef880") ] )
  • +
+
    syntax Bytes ::= #rlpEncodeInt ( Int )              [klabel(#rlpEncodeInt), function]
+                   | #rlpEncodeWord ( Int )             [klabel(#rlpEncodeWord), function]
+                   | #rlpEncodeAddress ( Account )      [klabel(#rlpEncodeAddress), function]
+                   | #rlpEncodeString ( String )        [klabel(#rlpEncodeString), function]
+                   | #rlpEncodeBytes ( Bytes )          [klabel(#rlpEncodeBytes), function]
+                   | #rlpEncode ( JSON )                [klabel(#rlpEncode), function]
+                   | #rlpEncode ( JSONs, StringBuffer ) [klabel(#rlpEncodeJsonAux), function]
+ // -----------------------------------------------------------------------------------------
+    rule #rlpEncodeInt(0) => b"\x80"
+    rule #rlpEncodeInt(WORD) => #asByteStack(WORD) requires WORD >Int 0 andBool WORD <Int 128
+    rule #rlpEncodeInt(WORD) => #rlpEncodeBytes(#asByteStack(WORD)) requires WORD >=Int 128
+
+    rule #rlpEncodeWord(WORD) => #rlpEncodeBytes(#wordBytes(WORD))
+
+    rule #rlpEncodeAddress(ACCT) => #rlpEncodeBytes(#addrBytes(ACCT))
+
+    rule #rlpEncodeString(STR) => #rlpEncodeBytes(String2Bytes(STR))
+
+    rule #rlpEncodeBytes(BYTES) => b"\x80"                    requires lengthBytes(BYTES)  <Int 1
+    rule #rlpEncodeBytes(BYTES) => BYTES                      requires lengthBytes(BYTES) ==Int 1 andBool #asInteger(substrBytes(BYTES, 0, 1)) <Int 128
+    rule #rlpEncodeBytes(BYTES) => #rlpEncodeLength(BYTES, 128) [owise]
+
+    syntax JSON ::= Bytes
+    rule #rlpEncode( [ J:JSONs ] ) => #rlpEncodeLength( #rlpEncode(J, .StringBuffer) , 192 )
+
+    rule #rlpEncode( .JSONs                   , BUF ) => String2Bytes(StringBuffer2String(BUF))
+    rule #rlpEncode( (J:Int,       REST:JSONs), BUF ) => #rlpEncode(REST, BUF +String Bytes2String(#rlpEncodeInt(J)   ))
+    rule #rlpEncode( (J:String,    REST:JSONs), BUF ) => #rlpEncode(REST, BUF +String Bytes2String(#rlpEncodeString(J)))
+    rule #rlpEncode( (J:Bytes,     REST:JSONs), BUF ) => #rlpEncode(REST, BUF +String Bytes2String(#rlpEncodeBytes(J) ))
+    rule #rlpEncode( ([ J ],       REST:JSONs), BUF ) => #rlpEncode(REST, BUF +String Bytes2String(#rlpEncode([ J ])  ))
+
+    syntax Bytes ::= #rlpEncodeLength ( Bytes , Int )         [klabel(#rlpEncodeLength), function]
+                   | #rlpEncodeLength ( Bytes , Int , Bytes ) [klabel(#rlpEncodeLengthAux), function]
+ // -------------------------------------------------------------------------------------------------
+    rule #rlpEncodeLength(BYTES, OFFSET) => #asByteStack(lengthBytes(BYTES) +Int OFFSET) +Bytes BYTES         requires           lengthBytes(BYTES) <Int 56
+    rule #rlpEncodeLength(BYTES, OFFSET) => #rlpEncodeLength(BYTES, OFFSET, #asByteStack(lengthBytes(BYTES))) requires notBool ( lengthBytes(BYTES) <Int 56 )
+    rule #rlpEncodeLength(BYTES, OFFSET, BL) => #asByteStack(lengthBytes(BL) +Int OFFSET +Int 55) +Bytes BL +Bytes BYTES
+
+    syntax Bytes ::= #rlpEncodeFullAccount( Int, Int, Map, Bytes ) [klabel(#rlpEncodeFullAccount), function]
+ // --------------------------------------------------------------------------------------------------------
+    rule [rlpAcct]: #rlpEncodeFullAccount( NONCE, BAL, STORAGE, CODE )
+                 => #rlpEncodeLength(        #rlpEncodeInt(NONCE)
+                                      +Bytes #rlpEncodeInt(BAL)
+                                      +Bytes #rlpEncodeBytes( #parseByteStack( Keccak256( #rlpEncodeMerkleTree( #storageRoot( STORAGE ) ) ) ) )
+                                      +Bytes #rlpEncodeBytes( #parseByteStack( Keccak256( CODE ) ) )
+                                    , 192
+                                    )
+
+    syntax Bytes ::= #rlpEncodeReceipt ( Int , Int , Bytes , List ) [klabel(#rlpEncodeReceipt), function]
+                   | #rlpEncodeLogs    ( List )                     [klabel(#rlpEncodeLogs), function]
+                   | #rlpEncodeLogsAux ( List, StringBuffer )       [klabel(#rlpEncodeLogsAux), function]
+                   | #rlpEncodeTopics  ( List, StringBuffer )       [klabel(#rlpEncodeTopics), function]
+ // -----------------------------------------------------------------------------------------------------
+    rule [rlpReceipt]: #rlpEncodeReceipt(RS, RG, RB, RL)
+                    => #rlpEncodeLength(        #rlpEncodeInt(RS)
+                                         +Bytes #rlpEncodeInt(RG)
+                                         +Bytes #rlpEncodeBytes(RB)
+                                         +Bytes #rlpEncodeLogs(RL)
+                                       , 192
+                                       )
+
+    rule #rlpEncodeLogs( LOGS ) => #rlpEncodeLogsAux( LOGS, .StringBuffer )
+
+    rule #rlpEncodeLogsAux( .List, OUT ) => #rlpEncodeLength(String2Bytes(StringBuffer2String(OUT)),192)
+    rule #rlpEncodeLogsAux( ( ListItem({ ACCT | TOPICS | DATA }) => .List ) _
+                          , ( OUT => OUT +String Bytes2String(
+                              #rlpEncodeLength(        #rlpEncodeAddress(ACCT)
+                                                +Bytes #rlpEncodeTopics(TOPICS,.StringBuffer)
+                                                +Bytes #rlpEncodeBytes(DATA)
+                                               , 192
+                                               ))
+                            )
+                          )
+
+    rule #rlpEncodeTopics( .List, OUT ) => #rlpEncodeLength(String2Bytes(StringBuffer2String(OUT)),192)
+    rule #rlpEncodeTopics( ( ListItem( X:Int ) => .List ) _
+                         , ( OUT => OUT +String Bytes2String( #rlpEncodeWord(X) ) )
+                         )
+
+    syntax Bytes ::= #rlpEncodeTxData( TxData ) [klabel(#rlpEncodeTxData), function]
+ // --------------------------------------------------------------------------------
+    rule #rlpEncodeTxData( LegacyTxData( TN, TP, TG, TT, TV, TD ) )
+      => #rlpEncode( [ TN, TP, TG, #addrBytes(TT), TV, TD ] )
+
+    rule #rlpEncodeTxData( LegacyProtectedTxData( TN, TP, TG, TT, TV, TD, CID ) )
+      => #rlpEncode( [ TN, TP, TG, #addrBytes(TT), TV, TD, CID, "", "" ] )
+
+    rule #rlpEncodeTxData( AccessListTxData( TN, TP, TG, TT, TV, TD, CID, [TA] ) )
+      => #rlpEncode( [ CID, TN, TP, TG, #addrBytes(TT), TV, TD, [TA] ] )
+
+    rule #rlpEncodeTxData( DynamicFeeTxData(TN, TPF, TM, TG, TT, TV, DATA, CID, [TA]) )
+      => #rlpEncode( [ CID, TN, TPF, TM, TG, #addrBytes(TT), TV, DATA, [TA] ] )
+
+    syntax Bytes ::= #rlpEncodeMerkleTree ( MerkleTree ) [klabel(#rlpEncodeMerkleTree), function]
+ // ---------------------------------------------------------------------------------------------
+    rule #rlpEncodeMerkleTree ( .MerkleTree ) => b"\x80"
+
+    rule #rlpEncodeMerkleTree ( MerkleLeaf ( PATH, VALUE ) )
+      => #rlpEncodeLength(        #rlpEncodeBytes( #HPEncode( PATH, 1 ) )
+                           +Bytes #rlpEncodeString( VALUE )
+                         , 192
+                         )
+
+    rule #rlpEncodeMerkleTree ( MerkleExtension ( PATH, TREE ) )
+      => #rlpEncodeLength(        #rlpEncodeBytes( #HPEncode( PATH, 0 ) )
+                           +Bytes #rlpMerkleH( #rlpEncodeMerkleTree( TREE ) )
+                         , 192
+                         )
+
+    rule #rlpEncodeMerkleTree ( MerkleBranch ( M , VALUE ) )
+      => #rlpEncodeLength(        MerkleMapRLP(M, 0) +Bytes MerkleMapRLP(M, 1)
+                           +Bytes MerkleMapRLP(M, 2) +Bytes MerkleMapRLP(M, 3)
+                           +Bytes MerkleMapRLP(M, 4) +Bytes MerkleMapRLP(M, 5)
+                           +Bytes MerkleMapRLP(M, 6) +Bytes MerkleMapRLP(M, 7)
+                           +Bytes MerkleMapRLP(M, 8) +Bytes MerkleMapRLP(M, 9)
+                           +Bytes MerkleMapRLP(M,10) +Bytes MerkleMapRLP(M,11)
+                           +Bytes MerkleMapRLP(M,12) +Bytes MerkleMapRLP(M,13)
+                           +Bytes MerkleMapRLP(M,14) +Bytes MerkleMapRLP(M,15)
+                           +Bytes #rlpEncodeString( VALUE )
+                         , 192
+                         )
+
+    syntax Bytes ::= MerkleMapRLP( Map, Int ) [klabel(MerkleMapRLP), function]
+ // --------------------------------------------------------------------------
+    rule MerkleMapRLP(M, I) => #rlpMerkleH( #rlpEncodeMerkleTree( { M[I] orDefault .MerkleTree }:>MerkleTree ) )
+
+    syntax Bytes ::= #rlpMerkleH ( Bytes ) [function,klabel(MerkleRLPAux)]
+ // ----------------------------------------------------------------------
+    rule #rlpMerkleH ( X ) => #rlpEncodeBytes( #parseByteStack( Keccak256( X ) ) )
+      requires lengthBytes(X) >=Int 32
+
+    rule #rlpMerkleH ( X ) => X
+      requires notBool lengthBytes(X) >=Int 32
+
+

Decoding

+
    +
  • #rlpDecode RLP decodes a single Bytes into a JSON.
  • +
  • #rlpDecodeList RLP decodes a single Bytes into a JSONs, interpereting the input as the RLP encoding of a list.
  • +
+
    syntax JSON ::= #rlpDecode(Bytes)               [klabel(#rlpDecode), function]
+                  | #rlpDecode(Bytes, LengthPrefix) [klabel(#rlpDecodeAux), function]
+ // ---------------------------------------------------------------------------------
+    rule #rlpDecode(BYTES) => #rlpDecode(BYTES, #decodeLengthPrefix(BYTES, 0))
+    rule #rlpDecode(BYTES,  #str( LEN, POS)) => substrBytes(BYTES, POS, POS +Int LEN)
+    rule #rlpDecode(BYTES, #list(_LEN, POS)) => [#rlpDecodeList(BYTES, POS)]
+
+    syntax JSONs ::= #rlpDecodeList(Bytes, Int)               [klabel(#rlpDecodeList), function]
+                   | #rlpDecodeList(Bytes, Int, LengthPrefix) [klabel(#rlpDecodeListAux), function]
+ // -----------------------------------------------------------------------------------------------
+    rule #rlpDecodeList(BYTES, POS) => #rlpDecodeList(BYTES, POS, #decodeLengthPrefix(BYTES, POS)) requires POS <Int lengthBytes(BYTES)
+    rule #rlpDecodeList(    _,   _) => .JSONs [owise]
+    rule #rlpDecodeList(BYTES, POS, _:LengthPrefixType(L, P)) => #rlpDecode(substrBytes(BYTES, POS, L +Int P)) , #rlpDecodeList(BYTES, L +Int P)
+
+    syntax LengthPrefixType ::= "#str" | "#list"
+    syntax LengthPrefix ::= LengthPrefixType "(" Int "," Int ")"
+                          | #decodeLengthPrefix ( Bytes , Int )                                [klabel(#decodeLengthPrefix), function]
+                          | #decodeLengthPrefix ( Bytes , Int , Int )                          [klabel(#decodeLengthPrefixAux), function]
+                          | #decodeLengthPrefixLength ( LengthPrefixType , Bytes , Int , Int ) [klabel(#decodeLengthPrefixLength), function]
+                          | #decodeLengthPrefixLength ( LengthPrefixType , Int   , Int , Int ) [klabel(#decodeLengthPrefixLengthAux), function]
+ // -------------------------------------------------------------------------------------------------------------------------------------------
+    rule #decodeLengthPrefix(BYTES, START) => #decodeLengthPrefix(BYTES, START, #asWord(substrBytes(BYTES, START, START +Int 1)))
+
+    rule #decodeLengthPrefix(    _, START, B0) => #str(1, START)                                     requires B0 <Int 128
+    rule #decodeLengthPrefix(    _, START, B0) => #str(B0 -Int 128, START +Int 1)                    requires B0 >=Int 128 andBool B0 <Int (128 +Int 56)
+    rule #decodeLengthPrefix(BYTES, START, B0) => #decodeLengthPrefixLength(#str, BYTES, START, B0)  requires B0 >=Int (128 +Int 56) andBool B0 <Int 192
+    rule #decodeLengthPrefix(    _, START, B0) => #list(B0 -Int 192, START +Int 1)                   requires B0 >=Int 192 andBool B0 <Int 192 +Int 56
+    rule #decodeLengthPrefix(BYTES, START, B0) => #decodeLengthPrefixLength(#list, BYTES, START, B0) [owise]
+
+    rule #decodeLengthPrefixLength(#str,  BYTES, START, B0) => #decodeLengthPrefixLength(#str,  START, B0 -Int 128 -Int 56 +Int 1, #asWord(substrBytes(BYTES, START +Int 1, START +Int 1 +Int (B0 -Int 128 -Int 56 +Int 1))))
+    rule #decodeLengthPrefixLength(#list, BYTES, START, B0) => #decodeLengthPrefixLength(#list, START, B0 -Int 192 -Int 56 +Int 1, #asWord(substrBytes(BYTES, START +Int 1, START +Int 1 +Int (B0 -Int 192 -Int 56 +Int 1))))
+    rule #decodeLengthPrefixLength(TYPE, START, LL, L) => TYPE(L, START +Int 1 +Int LL)
+
+    syntax JSONs ::= #rlpDecodeTransaction(Bytes) [klabel(#rlpDecodeTransaction), function]
+ // ---------------------------------------------------------------------------------------
+    rule #rlpDecodeTransaction(T) => #range(T, 0, 1), #rlpDecode(#range(T, 1, lengthBytes(T) -Int 1))
+
+

Merkle Patricia Tree

+
    +
  • Appendix C and D from the Ethereum Yellow Paper
  • +
  • https://github.com/ethereum/wiki/wiki/Patricia-Tree
  • +
+
    syntax KItem ::= Int | MerkleTree // For testing purposes
+
+    syntax MerkleTree ::= ".MerkleTree"
+                        | MerkleBranch    ( Map, String )       [klabel(MerkleBranch)]
+                        | MerkleExtension ( Bytes, MerkleTree ) [klabel(MerkleExtension)]
+                        | MerkleLeaf      ( Bytes, String )     [klabel(MerkleLeaf)]
+ // -------------------------------------------------------------------------------------
+
+    syntax MerkleTree ::= MerkleUpdate ( MerkleTree, String, String ) [klabel(MerkleUpdate), function]
+                        | MerkleUpdate ( MerkleTree,  Bytes, String ) [klabel(MerkleUpdateAux), function]
+                        | MerklePut    ( MerkleTree,  Bytes, String ) [klabel(MerklePut), function]
+                        | MerkleDelete ( MerkleTree,  Bytes )         [klabel(MerkleDelete), function]
+ // -----------------------------------------------------------------------------------------------------
+    rule MerkleUpdate ( TREE, S:String, VALUE ) => MerkleUpdate ( TREE, #nibbleize ( String2Bytes( S ) ), VALUE )
+
+    rule MerkleUpdate ( TREE, PATH:Bytes, VALUE ) => MerklePut ( TREE, PATH, VALUE ) requires VALUE =/=String ""
+    rule MerkleUpdate ( TREE, PATH:Bytes, ""    ) => MerkleDelete ( TREE, PATH )
+
+    rule MerklePut ( .MerkleTree, PATH:Bytes, VALUE ) => MerkleLeaf ( PATH, VALUE )
+
+    rule MerklePut ( MerkleLeaf ( LEAFPATH, _ ), PATH, VALUE )
+      => MerkleLeaf( LEAFPATH, VALUE )
+      requires LEAFPATH ==K PATH
+
+    rule MerklePut ( MerkleLeaf ( LEAFPATH, LEAFVALUE ), PATH, VALUE )
+      => MerklePut ( MerklePut ( MerkleBranch( .Map, "" ), LEAFPATH, LEAFVALUE ), PATH, VALUE )
+      requires lengthBytes( LEAFPATH ) >Int 0
+       andBool lengthBytes( PATH ) >Int 0
+       andBool LEAFPATH[0] =/=Int PATH[0]
+
+    rule MerklePut ( MerkleLeaf ( LEAFPATH, LEAFVALUE ), PATH, VALUE )
+      => #merkleExtensionBuilder( .Bytes, LEAFPATH, LEAFVALUE, PATH, VALUE )
+      requires LEAFPATH =/=K PATH
+       andBool lengthBytes( LEAFPATH ) >Int 0
+       andBool lengthBytes( PATH )     >Int 0
+       andBool LEAFPATH[0] ==Int PATH[0]
+
+    rule MerklePut ( MerkleExtension ( EXTPATH, EXTTREE ), PATH, VALUE )
+      => MerkleExtension ( EXTPATH, MerklePut ( EXTTREE, .Bytes, VALUE ) )
+      requires EXTPATH ==K PATH
+
+    rule MerklePut ( MerkleExtension ( EXTPATH, EXTTREE ), PATH, VALUE )
+      => #merkleExtensionBrancher( MerklePut( MerkleBranch( .Map, "" ), PATH, VALUE ), EXTPATH, EXTTREE )
+      requires lengthBytes( PATH ) >Int 0
+       andBool EXTPATH[0] =/=Int PATH[0]
+
+    rule MerklePut ( MerkleExtension ( EXTPATH, EXTTREE ), PATH, VALUE )
+      => #merkleExtensionSplitter( .Bytes, EXTPATH, EXTTREE, PATH, VALUE )
+      requires EXTPATH =/=K PATH
+       andBool lengthBytes( PATH ) >Int 0
+       andBool EXTPATH[0] ==Int PATH[0]
+
+    rule MerklePut ( MerkleBranch( M, _ ), PATH, VALUE )
+      => MerkleBranch( M, VALUE )
+      requires lengthBytes( PATH ) ==Int 0
+
+    rule MerklePut ( MerkleBranch( M, BRANCHVALUE ), PATH, VALUE )
+      => #merkleUpdateBranch ( M, BRANCHVALUE, PATH[0], #range(PATH, 1, lengthBytes(PATH) -Int 1), VALUE )
+      requires lengthBytes( PATH ) >Int 0
+
+    rule MerkleDelete( .MerkleTree, _ ) => .MerkleTree
+
+    rule MerkleDelete( MerkleLeaf( LPATH, _V ), PATH ) => .MerkleTree                           requires LPATH ==K  PATH
+    rule MerkleDelete( MerkleLeaf( LPATH,  V ), PATH ) => MerkleCheck( MerkleLeaf( LPATH, V ) ) requires LPATH =/=K PATH
+
+    rule MerkleDelete( MerkleExtension( EXTPATH, TREE ), PATH ) => MerkleExtension( EXTPATH, TREE ) requires notBool (lengthBytes(EXTPATH) <=Int lengthBytes(PATH) andBool #range(PATH, 0, lengthBytes(EXTPATH)) ==K EXTPATH)
+    rule MerkleDelete( MerkleExtension( EXTPATH, TREE ), PATH )
+      => MerkleCheck( MerkleExtension( EXTPATH, MerkleDelete( TREE, #range(PATH, lengthBytes(EXTPATH), lengthBytes(PATH) -Int lengthBytes(EXTPATH)) ) ) )
+      requires lengthBytes(EXTPATH) <=Int lengthBytes(PATH) andBool #range(PATH, 0, lengthBytes(EXTPATH)) ==K EXTPATH
+
+    rule MerkleDelete( MerkleBranch( M, _V ), PATH ) => MerkleCheck( MerkleBranch( M, "" ) ) requires lengthBytes(PATH) ==Int 0
+    rule MerkleDelete( MerkleBranch( M,  V ), PATH ) => MerkleBranch( M, V )                 requires lengthBytes(PATH) >Int 0 andBool notBool PATH[0] in_keys(M)
+    rule MerkleDelete( MerkleBranch( M,  V ), PATH )
+      => MerkleCheck( MerkleBranch( M[PATH[0] <- MerkleDelete( {M[PATH[0]]}:>MerkleTree, #range(PATH, 1, lengthBytes(PATH) -Int 1) )], V ) )
+      requires lengthBytes(PATH) >Int 0 andBool PATH[0] in_keys(M)
+
+    syntax MerkleTree ::= MerkleCheck( MerkleTree ) [klabel(MerkleCheck), function]
+ // -------------------------------------------------------------------------------
+    rule MerkleCheck( TREE ) => TREE [owise]
+
+    rule MerkleCheck( MerkleLeaf( _, "" ) => .MerkleTree )
+
+    rule MerkleCheck( MerkleBranch( .Map                   , V  ) => MerkleLeaf( .Bytes, V )                             )
+    rule MerkleCheck( MerkleBranch( X |-> T                , "" ) => MerkleExtension( #range(#asByteStack(X), 0, 1), T ) ) requires T =/=K .MerkleTree
+    rule MerkleCheck( MerkleBranch( M => #cleanBranchMap(M), _  )                                                        ) requires .MerkleTree in values(M)
+
+    rule MerkleCheck( MerkleExtension( _, .MerkleTree                                      ) => .MerkleTree               )
+    rule MerkleCheck( MerkleExtension( P1, MerkleLeaf( P2, V )                             ) => MerkleLeaf( P1 +Bytes P2, V ) )
+    rule MerkleCheck( MerkleExtension( P1 => P1 +Bytes P2, MerkleExtension( P2, TREE ) => TREE )                              )
+
+
    +
  • MerkleUpdateMap Takes a mapping of Bytes |-> String and generates a trie
  • +
+
    syntax MerkleTree ::= MerkleUpdateMap    ( MerkleTree , Map        ) [klabel(MerkleUpdateMap), function]
+                        | MerkleUpdateMapAux ( MerkleTree , Map , List ) [klabel(MerkleUpdateMapAux), function]
+ // -----------------------------------------------------------------------------------------------------------
+    rule MerkleUpdateMap(TREE, MMAP) => MerkleUpdateMapAux(TREE, MMAP, keys_list(MMAP))
+
+    rule MerkleUpdateMapAux(TREE, _, .List ) => TREE
+    rule MerkleUpdateMapAux(TREE                                                    , MMAP, ListItem(KEY) REST)
+      => MerkleUpdateMapAux(MerkleUpdate(TREE, #nibbleize(KEY), {MMAP[KEY]}:>String), MMAP,               REST)
+
+

Merkle Tree Aux Functions

+
    syntax Bytes ::= #nibbleize ( Bytes ) [klabel(#nibbleize), function]
+                   | #byteify   ( Bytes ) [klabel(#byteify), function]
+ // --------------------------------------------------------------------
+    rule #nibbleize ( B ) => (          #range( #asByteStack ( B [ 0 ] /Int 16 ), 0, 1 )
+                               +Bytes ( #range( #asByteStack ( B [ 0 ] %Int 16 ), 0, 1 ) )
+                             ) +Bytes #nibbleize ( #range(B, 1, lengthBytes(B) -Int 1) )
+      requires lengthBytes(B) >Int 0
+
+    rule #nibbleize ( B ) => .Bytes requires notBool lengthBytes(B) >Int 0
+
+    rule #byteify ( B ) =>    #range( #asByteStack ( B[0] *Int 16 +Int B[1] ), 0, 1 )
+                       +Bytes #byteify ( #range( B, 2, lengthBytes(B) -Int 2 ) )
+      requires lengthBytes(B) >Int 0
+
+    rule #byteify ( B ) => .Bytes requires notBool lengthBytes(B) >Int 0
+
+    syntax Bytes ::= #HPEncode ( Bytes, Int ) [klabel(#HPEncode), function]
+ // -----------------------------------------------------------------------
+    rule #HPEncode ( X, T ) => #asByteStack ( ( HPEncodeAux(T) +Int 1 ) *Int 16 +Int X[0] ) +Bytes #byteify( #range(X, 1, lengthBytes(X) -Int 1) )
+      requires lengthBytes(X) %Int 2 =/=Int 0
+
+    rule #HPEncode ( X, T ) => #range(#asByteStack ( HPEncodeAux(T) *Int 16 ), 0, 1) +Bytes #byteify( X )
+      requires notBool lengthBytes(X) %Int 2 =/=Int 0
+
+    syntax Int ::= HPEncodeAux ( Int ) [klabel(HPEncodeAux), function]
+ // ------------------------------------------------------------------
+    rule HPEncodeAux ( X ) => 0 requires         X ==Int 0
+    rule HPEncodeAux ( X ) => 2 requires notBool X ==Int 0
+
+    syntax Map ::= #cleanBranchMap    ( Map )            [klabel(#cleanBranchMap), function]
+                 | #cleanBranchMapAux ( Map, List, Set ) [klabel(#cleanBranchMapAux), function]
+ // -------------------------------------------------------------------------------------------
+    rule #cleanBranchMap( M ) => #cleanBranchMapAux( M, keys_list(M), .Set )
+
+    rule #cleanBranchMapAux(                   M,                        .List,                      S ) => removeAll( M, S )
+    rule #cleanBranchMapAux( X |-> .MerkleTree _, (ListItem(X) => .List) _    , (.Set => SetItem(X)) _ )
+    rule #cleanBranchMapAux(                   _, (ListItem(_) => .List) _    ,                      _ ) [owise]
+
+    syntax MerkleTree ::= #merkleUpdateBranch ( Map, String, Int, Bytes, String ) [klabel(#merkleUpdateBranch), function]
+ // ---------------------------------------------------------------------------------------------------------------------
+    rule #merkleUpdateBranch ( X |-> TREE M, BRANCHVALUE, X, PATH, VALUE )
+      => MerkleBranch( M[X <- MerklePut( TREE, PATH, VALUE )], BRANCHVALUE )
+
+    rule #merkleUpdateBranch ( M, BRANCHVALUE, X, PATH, VALUE )
+      => MerkleBranch( M[X <- MerkleLeaf( PATH, VALUE )], BRANCHVALUE ) [owise]
+
+    syntax MerkleTree ::= #merkleExtensionBuilder(    Bytes , Bytes , String , Bytes , String ) [klabel(#merkleExtensionBuilder), function]
+                        | #merkleExtensionBuilderAux( Bytes , Bytes , String , Bytes , String ) [klabel(#merkleExtensionBuilderAux), function]
+ // ------------------------------------------------------------------------------------------------------------------------------------------
+    rule #merkleExtensionBuilder(PATH, P1, V1, P2, V2)
+      => #merkleExtensionBuilderAux(PATH, P1, V1, P2, V2)
+      requires lengthBytes(P1) >Int 0
+       andBool lengthBytes(P2) >Int 0
+
+    rule #merkleExtensionBuilder(PATH, P1, V1, P2, V2)
+      => MerkleExtension( PATH, MerklePut( MerklePut( MerkleBranch( .Map, "" ), P1, V1 ), P2, V2 ) )
+      [owise]
+
+    rule #merkleExtensionBuilderAux( PATH, P1, V1, P2, V2 )
+      => #merkleExtensionBuilder( PATH +Bytes (#range(P1, 0, 1))
+                                , #range(P1, 1, lengthBytes(P1) -Int 1), V1
+                                , #range(P2, 1, lengthBytes(P2) -Int 1), V2
+                                )
+      requires P1[0] ==Int P2[0]
+
+    rule #merkleExtensionBuilderAux( PATH, P1, V1, P2, V2 )
+      => MerkleExtension( PATH, MerklePut( MerklePut( MerkleBranch( .Map, "" ), P1, V1 ), P2, V2 ) )
+      [owise]
+
+    syntax MerkleTree ::= #merkleExtensionBrancher ( MerkleTree, Bytes, MerkleTree ) [klabel(#merkleExtensionBrancher), function]
+ // -----------------------------------------------------------------------------------------------------------------------------
+    rule #merkleExtensionBrancher( MerkleBranch(M, VALUE), PATH, EXTTREE )
+      => MerkleBranch( M[PATH[0] <- MerkleExtension( #range(PATH, 1, lengthBytes(PATH) -Int 1), EXTTREE )], VALUE )
+      requires lengthBytes(PATH) >Int 1
+
+    rule #merkleExtensionBrancher( MerkleBranch(M, VALUE), PATH, EXTTREE )
+      => MerkleBranch( M[PATH[0] <- EXTTREE], VALUE )
+      requires lengthBytes(PATH) ==Int 1
+
+    syntax MerkleTree ::= #merkleExtensionSplitter ( Bytes, Bytes, MerkleTree, Bytes, String ) [klabel(#merkleExtensionSplitter), function]
+ // ---------------------------------------------------------------------------------------------------------------------------------------
+    rule #merkleExtensionSplitter( PATH => PATH +Bytes (#range(P1, 0, 1))
+                                 , P1   => #range(P1, 1, lengthBytes(P1) -Int 1), _
+                                 , P2   => #range(P2, 1, lengthBytes(P2) -Int 1), _
+                                 )
+      requires lengthBytes(P1) >Int 0
+       andBool lengthBytes(P2) >Int 0
+       andBool P1[0] ==Int P2[0]
+
+    rule #merkleExtensionSplitter( PATH, P1, TREE, P2, VALUE )
+      => MerkleExtension( PATH, #merkleExtensionBrancher( MerklePut( MerkleBranch( .Map, "" ), P2, VALUE ), P1, TREE ) )
+      requires lengthBytes(P1) >Int 0
+       andBool lengthBytes(P2) >Int 0
+       andBool P1[0] =/=Int P2[0]
+
+    rule #merkleExtensionSplitter( PATH, P1, TREE, P2, VALUE )
+      => MerkleExtension( PATH, MerklePut( TREE, P2, VALUE ) )
+      requires lengthBytes(P1) ==Int 0
+
+    rule #merkleExtensionSplitter( PATH, P1, TREE, P2, VALUE )
+      => MerkleExtension( PATH, #merkleExtensionBrancher( MerklePut( MerkleBranch( .Map, "" ), P2, VALUE ), P1, TREE ) )
+      requires lengthBytes(P2) ==Int 0
+
+

Tree Root Helper Functions

+

Storage Root

+
    syntax Map ::= #intMap2StorageMap( Map )               [klabel(#intMap2StorageMap), function]
+                 | #intMap2StorageMapAux( Map, Map, List ) [klabel(#intMap2StorageMapAux), function]
+ // ------------------------------------------------------------------------------------------------
+    rule #intMap2StorageMap( M ) => #intMap2StorageMapAux( .Map, M, keys_list(M) )
+
+    rule #intMap2StorageMapAux( SMAP, _, .List ) => SMAP
+    rule #intMap2StorageMapAux( SMAP, IMAP, ListItem(K) REST )
+      => #intMap2StorageMapAux( #wordBytes(K) |-> #rlpEncodeInt({IMAP[K]}:>Int) SMAP, IMAP, REST )
+      requires {IMAP[K]}:>Int =/=Int 0
+
+    rule #intMap2StorageMapAux( SMAP, IMAP, ListItem(K) REST )
+      => #intMap2StorageMapAux( SMAP, IMAP, REST )
+      requires {IMAP[K]}:>Int ==Int 0
+
+
+    syntax MerkleTree ::= #storageRoot( Map ) [klabel(#storageRoot), function]
+ // --------------------------------------------------------------------------
+    rule #storageRoot( STORAGE ) => MerkleUpdateMap( .MerkleTree, #intMap2StorageMap( STORAGE ) )
+
+

State Root

+
    syntax Map ::= #precompiledAccountsMap   ( Set )       [klabel(#precompiledAccountsMap), function]
+                 | #precompiledAccountsMapAux( List, Map ) [klabel(#precompiledAccountsMapAux), function]
+ // -----------------------------------------------------------------------------------------------------
+    rule #precompiledAccountsMap( ACCTS ) => #precompiledAccountsMapAux( Set2List( ACCTS ), .Map )
+
+    rule #precompiledAccountsMapAux( .List, M ) => M
+    rule #precompiledAccountsMapAux( (ListItem( ACCT ) => .List) _, M => M[#parseByteStack ( #unparseData( ACCT, 20 ) ) <- #emptyContractRLP] )
+
+    syntax Bytes ::= "#emptyContractRLP" [function]
+ // ------------------------------------------------
+    rule #emptyContractRLP => #rlpEncodeLength(        #rlpEncodeInt(0)
+                                                +Bytes #rlpEncodeInt(0)
+                                                +Bytes #rlpEncodeBytes( #parseByteStack( Keccak256(b"\x80") ) )
+                                                +Bytes #rlpEncodeBytes( #parseByteStack( Keccak256(b"") ) )
+                                              , 192
+                                              )
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/state-utils.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/state-utils.md deleted file mode 100644 index a92fd1aee8..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/state-utils.md +++ /dev/null @@ -1,454 +0,0 @@ -State Manager -------------- - -```k -requires "evm.md" -requires "asm.md" - -module STATE-UTILS - imports EVM - imports EVM-ASSEMBLY - - syntax JSON ::= Bytes | OpCodes | Map | SubstateLogEntry | Account - // ------------------------------------------------------------------ - -``` - -### Clearing State - -- `clear` clears all the execution state of the machine. -- `clearX` clears the substate `X`, for `TX`, `BLOCK`, and `NETWORK`. - -```k - syntax EthereumCommand ::= "clear" - // ---------------------------------- - rule clear => clearTX ~> clearBLOCK ~> clearNETWORK ... - - syntax EthereumCommand ::= "clearTX" - // ------------------------------------ - rule clearTX => .K ... - _ => .Bytes - _ => 0 - _ => 0 - _ => .List - _ => .Bytes - _ => .Set - _ => .Account - _ => .Account - _ => .Bytes - _ => 0 - _ => .WordStack - _ => .Bytes - _ => 0 - _ => 0 - _ => 0 - _ => .Set - _ => .List - _ => 0 - _ => 0 - _ => .Account - _ => .Set - _ => .Set - - syntax EthereumCommand ::= "clearBLOCK" - // --------------------------------------- - rule clearBLOCK => .K ... - _ => 0 - _ => 0 - _ => 0 - _ => 0 - _ => 0 - _ => 0 - _ => .Bytes - _ => 0 - _ => 0 - _ => 0 - _ => 0 - _ => 0 - _ => .Bytes - _ => 0 - _ => 0 - _ => [ .JSONs ] - _ => .List - _ => 0 - _ => 0 - - syntax EthereumCommand ::= "clearNETWORK" - // ----------------------------------------- - rule clearNETWORK => .K ... - _ => .StatusCode - _ => .Bag - _ => .Bag - _ => DEFAULT - -``` - -### Loading State - -- `mkAcct_` creates an account with the supplied ID (assuming it's already been chopped to 160 bits). - -```k - syntax EthereumCommand ::= "mkAcct" Int - // --------------------------------------- - rule mkAcct ACCT => #newAccount ACCT ... -``` - -- `load` loads an account or transaction into the world state. - -```k - syntax EthereumCommand ::= "load" JSON - // -------------------------------------- - rule load _DATA : { .JSONs } => .K ... - rule load DATA : { KEY : VALUE , REST } => load DATA : { KEY : VALUE } ~> load DATA : { REST } ... - requires REST =/=K .JSONs andBool DATA =/=String "transaction" - - rule load _DATA : [ .JSONs ] => .K ... - rule load DATA : [ { TEST } , REST ] => load DATA : { TEST } ~> load DATA : [ REST ] ... -``` - -Here we perform pre-proccesing on account data which allows "pretty" specification of input. - -```k - rule load "pre" : { (ACCTID:String) : ACCT } => mkAcct #parseAddr(ACCTID) ~> loadAccount #parseAddr(ACCTID) ACCT ... - - syntax EthereumCommand ::= "loadAccount" Int JSON - // ------------------------------------------------- - rule loadAccount _ { .JSONs } => .K ... - - rule loadAccount ACCT { "balance" : (BAL:Int), REST => REST } ... - ACCT _ => BAL ... - - rule loadAccount ACCT { "code" : (CODE:Bytes), REST => REST } ... - ACCT _ => CODE ... - - rule loadAccount ACCT { "nonce" : (NONCE:Int), REST => REST } ... - ACCT _ => NONCE ... - - rule loadAccount ACCT { "storage" : (STORAGE:Map), REST => REST } ... - ACCT _ => STORAGE _ => STORAGE ... -``` - -Here we load the environmental information. - -```k - rule load "env" : { KEY : ((VAL:String) => #parseWord(VAL)) } ... - requires KEY in (SetItem("currentTimestamp") SetItem("currentGasLimit") SetItem("currentNumber") SetItem("currentDifficulty") SetItem("currentBaseFee")) - rule load "env" : { KEY : ((VAL:String) => #parseHexWord(VAL)) } ... - requires KEY in (SetItem("currentCoinbase") SetItem("previousHash")) - // ---------------------------------------------------------------------- - rule load "env" : { "currentCoinbase" : (CB:Int) } => .K ... _ => CB - rule load "env" : { "currentDifficulty" : (DIFF:Int) } => .K ... _ => DIFF - rule load "env" : { "currentGasLimit" : (GLIMIT:Int) } => .K ... _ => GLIMIT - rule load "env" : { "currentNumber" : (NUM:Int) } => .K ... _ => NUM - rule load "env" : { "previousHash" : (HASH:Int) } => .K ... _ => HASH - rule load "env" : { "currentTimestamp" : (TS:Int) } => .K ... _ => TS - rule load "env" : { "currentBaseFee" : (BF:Int) } => .K ... _ => BF - - syntax KItem ::= "loadCallState" JSON - // ------------------------------------- - rule loadCallState { "data" : ( DATA:String => #parseByteStack( DATA ) ), _REST } ... - - rule loadCallState { "code" : CODE:Bytes, REST } => #loadProgram CODE ~> loadCallState { REST } ... - - rule loadCallState { "gas" : GLIMIT:Int, REST => REST } ... _ => GLIMIT true - rule loadCallState { "gas" : _:Int, REST => REST } ... false - - rule loadCallState { "gasPrice" : GPRICE:Int, REST => REST } ... _ => GPRICE - rule loadCallState { "value" : VALUE:Int , REST => REST } ... _ => VALUE - rule loadCallState { "data" : DATA:Bytes, REST => REST } ... _ => DATA - - rule loadCallState { .JSONs } => .K ... -``` - -The `"network"` key allows setting the fee schedule inside the test. - -```k - rule load "network" : SCHEDSTRING => .K ... - _ => #asScheduleString(SCHEDSTRING) - - syntax Schedule ::= #asScheduleString ( String ) [klabel(#asScheduleString), function] - // -------------------------------------------------------------------------------------- - rule #asScheduleString("Frontier") => FRONTIER - rule #asScheduleString("Homestead") => HOMESTEAD - rule #asScheduleString("EIP150") => TANGERINE_WHISTLE - rule #asScheduleString("EIP158") => SPURIOUS_DRAGON - rule #asScheduleString("Byzantium") => BYZANTIUM - rule #asScheduleString("Constantinople") => CONSTANTINOPLE - rule #asScheduleString("ConstantinopleFix") => PETERSBURG - rule #asScheduleString("Istanbul") => ISTANBUL - rule #asScheduleString("Berlin") => BERLIN - rule #asScheduleString("London") => LONDON - rule #asScheduleString("Merge") => MERGE - rule #asScheduleString("Shanghai") => SHANGHAI -``` - -The `"rlp"` key loads the block information. - -```k - rule load "rlp" : (VAL:String => #rlpDecode(#parseByteStack(VAL))) ... - rule load "genesisRLP" : (VAL:String => #rlpDecode(#parseByteStack(VAL))) ... - // --------------------------------------------------------------------------------------------------------- - rule load "rlp" : [ [ HP , HO , HC , HR , HT , HE , HB , HD , HI , HL , HG , HS , HX , HM , HN , .JSONs ] , BT , BU , .JSONs ] - => load "transaction" : BT - ... - - _ => #asWord(HP) - _ => #asWord(HO) - _ => #asWord(HC) - _ => #asWord(HR) - _ => #asWord(HT) - _ => #asWord(HE) - _ => HB - _ => #asWord(HD) - _ => #asWord(HI) - _ => #asWord(HL) - _ => #asWord(HG) - _ => #asWord(HS) - _ => HX - _ => #asWord(HM) - _ => #asWord(HN) - _ => BU - - rule load "rlp" : [ [ HP , HO , HC , HR , HT , HE , HB , HD , HI , HL , HG , HS , HX , HM , HN , HF , .JSONs ] , BT , BU , .JSONs ] - => load "rlp" : [ [ HP , HO , HC , HR , HT , HE , HB , HD , HI , HL , HG , HS , HX , HM , HN , .JSONs ] , BT , BU , .JSONs ] - ... - - _ => #asWord(HF) - - rule load "rlp" : [ [ HP , HO , HC , HR , HT , HE , HB , HD , HI , HL , HG , HS , HX , HM , HN , HF , WR , .JSONs ] , BT , BU , BW , .JSONs ] - => load "rlp" : [ [ HP , HO , HC , HR , HT , HE , HB , HD , HI , HL , HG , HS , HX , HM , HN , HF , .JSONs ] , BT , BU , .JSONs ] - ~> load "withdraw" : BW - ... - - _ => #asWord(WR) - - rule load "genesisRLP": [ [ HP, HO, HC, HR, HT, HE:Bytes, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WR, .JSONs ], _, _, _, .JSONs ] => .K ... - .List => ListItem(#blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WR)) ListItem(#asWord(HP)) ... - - rule load "genesisRLP": [ [ HP, HO, HC, HR, HT, HE:Bytes, HB, HD, HI, HL, HG, HS, HX, HM, HN, .JSONs ], _, _, .JSONs ] => .K ... - .List => ListItem(#blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN)) ListItem(#asWord(HP)) ... - - rule load "genesisRLP": [ [ HP, HO, HC, HR, HT, HE:Bytes, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, .JSONs ], _, _, .JSONs ] => .K ... - .List => ListItem(#blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF)) ListItem(#asWord(HP)) ... - - syntax EthereumCommand ::= "mkTX" Int - // ------------------------------------- - rule mkTX TXID => .K ... - CID - ... (.List => ListItem(TXID)) - ... (.List => ListItem(TXID)) - - ( .Bag - => - TXID:Int - 20000000000 - 90000 - CID - ... - - ) - ... - - - rule load "transaction" : [ (T => [#rlpDecodeTransaction(T)]) , _ ] ... - - rule load "transaction" : [ [ TN , TP , TG , TT , TV , TI , TW , TR , TS ] , REST ] - => mkTX !ID:Int - ~> loadTransaction !ID { "data" : TI , "gasLimit" : TG , "gasPrice" : TP - , "nonce" : TN , "r" : TR , "s" : TS - , "to" : TT , "v" : TW , "value" : TV - , "type" : #dasmTxPrefix(Legacy) , "maxPriorityFeePerGas" : TP - , "maxFeePerGas": TP , .JSONs - } - ~> load "transaction" : [ REST ] - ... - - - rule load "transaction" : [ [TYPE , [TC, TN, TP, TG, TT, TV, TI, TA, TY , TR, TS ]] , REST ] - => mkTX !ID:Int - ~> loadTransaction !ID { "data" : TI , "gasLimit" : TG , "gasPrice" : TP - , "nonce" : TN , "r" : TR , "s" : TS - , "to" : TT , "v" : TY , "value" : TV - , "accessList" : TA , "type" : TYPE , "chainID" : TC - , "maxPriorityFeePerGas" : TP , "maxFeePerGas": TP - , .JSONs - } - ~> load "transaction" : [ REST ] - ... - - requires #asWord(TYPE) ==Int #dasmTxPrefix(AccessList) - - - rule load "transaction" : [ [TYPE , [TC, TN, TP, TF, TG, TT, TV, TI, TA, TY , TR, TS ]] , REST ] - => mkTX !ID:Int - ~> loadTransaction !ID { "data" : TI , "gasLimit" : TG , "maxPriorityFeePerGas" : TP - , "nonce" : TN , "r" : TR , "s" : TS - , "to" : TT , "v" : TY , "value" : TV - , "accessList" : TA , "type" : TYPE , "chainID" : TC - , "maxFeePerGas" : TF , .JSONs - } - ~> load "transaction" : [ REST ] - ... - - requires #asWord(TYPE) ==Int #dasmTxPrefix(DynamicFee) - - syntax EthereumCommand ::= "loadTransaction" Int JSON - // ----------------------------------------------------- - rule loadTransaction _ { .JSONs } => .K ... - - rule loadTransaction TXID { GLIMIT : TG:Int, REST => REST } ... - TXID _ => TG ... - requires GLIMIT in (SetItem("gas") SetItem("gasLimit")) - - rule loadTransaction TXID { "gasPrice" : TP:Int, REST => REST } ... - TXID _ => TP ... - - rule loadTransaction TXID { "nonce" : TN:Int, REST => REST } ... - TXID _ => TN ... - - rule loadTransaction TXID { "value" : TV:Int, REST => REST } ... - TXID _ => TV ... - - rule loadTransaction TXID { "to" : TT:Account, REST => REST } ... - TXID _ => TT ... - - rule loadTransaction TXID { "data" : TI:Bytes, REST => REST } ... - TXID _ => TI ... - - rule loadTransaction TXID { "v" : TW:Int, REST => REST } ... - TXID _ => TW ... - - rule loadTransaction TXID { "r" : TR:Bytes, REST => REST } ... - TXID _ => TR ... - - rule loadTransaction TXID { "s" : TS:Bytes, REST => REST } ... - TXID _ => TS ... - - rule loadTransaction TXID { "type" : T:Int, REST => REST } ... - TXID _ => #asmTxPrefix(T) ... - - rule loadTransaction TXID { "chainID" : TC:Int, REST => REST } ... - TXID _ => TC ... - - rule loadTransaction TXID { "accessList" : [TA:JSONs], REST => REST } ... - TXID _ => [TA] ... - - rule loadTransaction TXID { "maxPriorityFeePerGas" : TP:Int, REST => REST } ... - TXID _ => TP ... - - rule loadTransaction TXID { "maxFeePerGas" : TF:Int, REST => REST } ... - TXID _ => TF ... -``` - -### Getting State - -- `#getTxData` will pull the parameters of TXID into an appropriate `TxData` symbol -- `#effectiveGasPrice` will compute the gas price for TXID, as specified by EIP-1559 - -```k - syntax TxData ::= #getTxData( Int ) [klabel(#getTxData), function] - // ------------------------------------------------------------------ - rule [[ #getTxData( TXID ) => LegacyTxData(TN, TP, TG, TT, TV, DATA) ]] - - TXID - TN - TP - TG - TT - TV - TW - DATA - Legacy - ... - - requires TW ==Int 0 orBool TW ==Int 1 orBool TW ==Int 27 orBool TW ==Int 28 - - rule [[ #getTxData( TXID ) => LegacyProtectedTxData(TN, TP, TG, TT, TV, DATA, CID) ]] - - TXID - TN - TP - TG - TT - TV - TW - DATA - CID - Legacy - ... - - requires notBool (TW ==Int 0 orBool TW ==Int 1 orBool TW ==Int 27 orBool TW ==Int 28) - - rule [[ #getTxData( TXID ) => AccessListTxData(TN, TP, TG, TT, TV, DATA, CID, TA) ]] - - TXID - TN - TP - TG - TT - TV - DATA - CID - TA - AccessList - ... - - - rule [[ #getTxData( TXID ) => DynamicFeeTxData(TN, TPF, TM, TG, TT, TV, DATA, CID, TA) ]] - - TXID - TN - TG - TT - TV - DATA - CID - TA - TPF - TM - DynamicFee - ... - - - syntax Int ::= #effectiveGasPrice( Int ) [klabel(#effectiveGasPrice), function] - // ------------------------------------------------------------------------------- - rule [[ #effectiveGasPrice( TXID ) - => #if ( notBool Ghasbasefee << SCHED >> ) - orBool TXTYPE ==K Legacy - orBool TXTYPE ==K AccessList - #then GPRICE - #else BFEE +Int minInt(TPF, TM -Int BFEE) - #fi - ]] - SCHED - BFEE - - TXID - GPRICE - TXTYPE - TPF - TM - ... - -``` - -### Block Identifiers - -```k - syntax BlockIdentifier ::= Int - | "LATEST" - | "PENDING" - | "EARLIEST" - // ------------------------------------- - - syntax BlockIdentifier ::= #parseBlockIdentifier ( JSON ) [klabel(#parseBlockIdentifier), function] - // --------------------------------------------------------------------------------------------------- - rule #parseBlockIdentifier(BLOCKNUM:Int) => BLOCKNUM - rule #parseBlockIdentifier("pending") => PENDING - rule #parseBlockIdentifier("latest") => LATEST - rule #parseBlockIdentifier("earliest") => EARLIEST - rule #parseBlockIdentifier(BLOCKNUM) => #parseWord(BLOCKNUM) [owise] -``` -```k -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/state-utils/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/state-utils/index.html new file mode 100644 index 0000000000..fc748d9604 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/state-utils/index.html @@ -0,0 +1,647 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

State Manager

+
requires "evm.md"
+requires "asm.md"
+
+module STATE-UTILS
+    imports EVM
+    imports EVM-ASSEMBLY
+
+    syntax JSON ::= Bytes | OpCodes | Map | SubstateLogEntry | Account
+ // ------------------------------------------------------------------
+
+
+

Clearing State

+
    +
  • clear clears all the execution state of the machine.
  • +
  • clearX clears the substate X, for TX, BLOCK, and NETWORK.
  • +
+
    syntax EthereumCommand ::= "clear"
+ // ----------------------------------
+    rule <k> clear => clearTX ~> clearBLOCK ~> clearNETWORK ... </k>
+
+    syntax EthereumCommand ::= "clearTX"
+ // ------------------------------------
+    rule <k> clearTX => .K ... </k>
+         <output>           _ => .Bytes     </output>
+         <memoryUsed>       _ => 0          </memoryUsed>
+         <callDepth>        _ => 0          </callDepth>
+         <callStack>        _ => .List      </callStack>
+         <program>          _ => .Bytes     </program>
+         <jumpDests>        _ => .Set       </jumpDests>
+         <id>               _ => .Account   </id>
+         <caller>           _ => .Account   </caller>
+         <callData>         _ => .Bytes     </callData>
+         <callValue>        _ => 0          </callValue>
+         <wordStack>        _ => .WordStack </wordStack>
+         <localMem>         _ => .Bytes     </localMem>
+         <pc>               _ => 0          </pc>
+         <gas>              _ => 0          </gas>
+         <callGas>          _ => 0          </callGas>
+         <selfDestruct>     _ => .Set       </selfDestruct>
+         <log>              _ => .List      </log>
+         <refund>           _ => 0          </refund>
+         <gasPrice>         _ => 0          </gasPrice>
+         <origin>           _ => .Account   </origin>
+         <touchedAccounts>  _ => .Set       </touchedAccounts>
+         <accessedAccounts> _ => .Set       </accessedAccounts>
+
+    syntax EthereumCommand ::= "clearBLOCK"
+ // ---------------------------------------
+    rule <k> clearBLOCK => .K ... </k>
+         <previousHash>      _ => 0          </previousHash>
+         <ommersHash>        _ => 0          </ommersHash>
+         <coinbase>          _ => 0          </coinbase>
+         <stateRoot>         _ => 0          </stateRoot>
+         <transactionsRoot>  _ => 0          </transactionsRoot>
+         <receiptsRoot>      _ => 0          </receiptsRoot>
+         <logsBloom>         _ => .Bytes     </logsBloom>
+         <difficulty>        _ => 0          </difficulty>
+         <number>            _ => 0          </number>
+         <gasLimit>          _ => 0          </gasLimit>
+         <gasUsed>           _ => 0          </gasUsed>
+         <timestamp>         _ => 0          </timestamp>
+         <extraData>         _ => .Bytes     </extraData>
+         <mixHash>           _ => 0          </mixHash>
+         <blockNonce>        _ => 0          </blockNonce>
+         <ommerBlockHeaders> _ => [ .JSONs ] </ommerBlockHeaders>
+         <blockhashes>       _ => .List      </blockhashes>
+         <baseFee>           _ => 0          </baseFee>
+         <withdrawalsRoot>   _ => 0          </withdrawalsRoot>
+
+    syntax EthereumCommand ::= "clearNETWORK"
+ // -----------------------------------------
+    rule <k> clearNETWORK => .K ... </k>
+         <statusCode>     _ => .StatusCode </statusCode>
+         <accounts>       _ => .Bag        </accounts>
+         <messages>       _ => .Bag        </messages>
+         <schedule>       _ => DEFAULT     </schedule>
+
+
+

Loading State

+
    +
  • mkAcct_ creates an account with the supplied ID (assuming it's already been chopped to 160 bits).
  • +
+
    syntax EthereumCommand ::= "mkAcct" Int
+ // ---------------------------------------
+    rule <k> mkAcct ACCT => #newAccount ACCT ... </k>
+
+
    +
  • load loads an account or transaction into the world state.
  • +
+
    syntax EthereumCommand ::= "load" JSON
+ // --------------------------------------
+    rule <k> load _DATA : { .JSONs }             => .K                                                   ... </k>
+    rule <k> load  DATA : { KEY : VALUE , REST } => load DATA : { KEY : VALUE } ~> load DATA : { REST } ... </k>
+      requires REST =/=K .JSONs andBool DATA =/=String "transaction"
+
+    rule <k> load _DATA : [ .JSONs ]          => .K                                            ... </k>
+    rule <k> load  DATA : [ { TEST } , REST ] => load DATA : { TEST } ~> load DATA : [ REST ] ... </k>
+
+

Here we perform pre-proccesing on account data which allows "pretty" specification of input.

+
    rule <k> load "pre" : { (ACCTID:String) : ACCT } => mkAcct #parseAddr(ACCTID) ~> loadAccount #parseAddr(ACCTID) ACCT ... </k>
+
+    syntax EthereumCommand ::= "loadAccount" Int JSON
+ // -------------------------------------------------
+    rule <k> loadAccount _ { .JSONs } => .K ... </k>
+
+    rule <k> loadAccount ACCT { "balance" : (BAL:Int), REST => REST } ... </k>
+         <account> <acctID> ACCT </acctID> <balance> _ => BAL </balance> ... </account>
+
+    rule <k> loadAccount ACCT { "code" : (CODE:Bytes), REST => REST } ... </k>
+         <account> <acctID> ACCT </acctID> <code> _ => CODE </code> ... </account>
+
+    rule <k> loadAccount ACCT { "nonce" : (NONCE:Int), REST => REST } ... </k>
+         <account> <acctID> ACCT </acctID> <nonce> _ => NONCE </nonce> ... </account>
+
+    rule <k> loadAccount ACCT { "storage" : (STORAGE:Map), REST => REST } ... </k>
+         <account> <acctID> ACCT </acctID> <origStorage> _ => STORAGE </origStorage> <storage> _ => STORAGE </storage> ... </account>
+
+

Here we load the environmental information.

+
    rule <k> load "env" : { KEY : ((VAL:String) => #parseWord(VAL)) } ... </k>
+      requires KEY in (SetItem("currentTimestamp") SetItem("currentGasLimit") SetItem("currentNumber") SetItem("currentDifficulty") SetItem("currentBaseFee"))
+    rule <k> load "env" : { KEY : ((VAL:String) => #parseHexWord(VAL)) } ... </k>
+      requires KEY in (SetItem("currentCoinbase") SetItem("previousHash"))
+ // ----------------------------------------------------------------------
+    rule <k> load "env" : { "currentCoinbase"   : (CB:Int)     } => .K ... </k> <coinbase>     _ => CB     </coinbase>
+    rule <k> load "env" : { "currentDifficulty" : (DIFF:Int)   } => .K ... </k> <difficulty>   _ => DIFF   </difficulty>
+    rule <k> load "env" : { "currentGasLimit"   : (GLIMIT:Int) } => .K ... </k> <gasLimit>     _ => GLIMIT </gasLimit>
+    rule <k> load "env" : { "currentNumber"     : (NUM:Int)    } => .K ... </k> <number>       _ => NUM    </number>
+    rule <k> load "env" : { "previousHash"      : (HASH:Int)   } => .K ... </k> <previousHash> _ => HASH   </previousHash>
+    rule <k> load "env" : { "currentTimestamp"  : (TS:Int)     } => .K ... </k> <timestamp>    _ => TS     </timestamp>
+    rule <k> load "env" : { "currentBaseFee"    : (BF:Int)     } => .K ... </k> <baseFee>      _ => BF     </baseFee>
+
+    syntax KItem ::= "loadCallState" JSON
+ // -------------------------------------
+    rule <k> loadCallState { "data" : ( DATA:String => #parseByteStack( DATA ) ), _REST } ... </k>
+
+    rule <k> loadCallState { "code" : CODE:Bytes, REST } => #loadProgram CODE ~> loadCallState { REST } ... </k>
+
+    rule <k> loadCallState { "gas"      : GLIMIT:Int, REST => REST } ... </k> <gas> _ => GLIMIT </gas> <useGas> true  </useGas>
+    rule <k> loadCallState { "gas"      :      _:Int, REST => REST } ... </k>                          <useGas> false </useGas>
+
+    rule <k> loadCallState { "gasPrice" : GPRICE:Int, REST => REST } ... </k> <gasPrice>  _ => GPRICE </gasPrice>
+    rule <k> loadCallState { "value"    : VALUE:Int , REST => REST } ... </k> <callValue> _ => VALUE  </callValue>
+    rule <k> loadCallState { "data"     : DATA:Bytes, REST => REST } ... </k> <callData>  _ => DATA   </callData>
+
+    rule <k> loadCallState { .JSONs } => .K ... </k>
+
+

The "network" key allows setting the fee schedule inside the test.

+
    rule <k> load "network" : SCHEDSTRING => .K ... </k>
+         <schedule> _ => #asScheduleString(SCHEDSTRING) </schedule>
+
+    syntax Schedule ::= #asScheduleString ( String ) [klabel(#asScheduleString), function]
+ // --------------------------------------------------------------------------------------
+    rule #asScheduleString("Frontier")          => FRONTIER
+    rule #asScheduleString("Homestead")         => HOMESTEAD
+    rule #asScheduleString("EIP150")            => TANGERINE_WHISTLE
+    rule #asScheduleString("EIP158")            => SPURIOUS_DRAGON
+    rule #asScheduleString("Byzantium")         => BYZANTIUM
+    rule #asScheduleString("Constantinople")    => CONSTANTINOPLE
+    rule #asScheduleString("ConstantinopleFix") => PETERSBURG
+    rule #asScheduleString("Istanbul")          => ISTANBUL
+    rule #asScheduleString("Berlin")            => BERLIN
+    rule #asScheduleString("London")            => LONDON
+    rule #asScheduleString("Merge")             => MERGE
+    rule #asScheduleString("Shanghai")          => SHANGHAI
+
+

The "rlp" key loads the block information.

+
    rule <k> load "rlp"        : (VAL:String => #rlpDecode(#parseByteStack(VAL))) ... </k>
+    rule <k> load "genesisRLP" : (VAL:String => #rlpDecode(#parseByteStack(VAL))) ... </k>
+ // ---------------------------------------------------------------------------------------------------------
+    rule <k> load "rlp" : [ [ HP , HO , HC , HR , HT , HE , HB , HD , HI , HL , HG , HS , HX , HM , HN , .JSONs ] , BT , BU , .JSONs ]
+          => load "transaction" : BT
+         ...
+         </k>
+         <previousHash>      _ => #asWord(HP) </previousHash>
+         <ommersHash>        _ => #asWord(HO) </ommersHash>
+         <coinbase>          _ => #asWord(HC) </coinbase>
+         <stateRoot>         _ => #asWord(HR) </stateRoot>
+         <transactionsRoot>  _ => #asWord(HT) </transactionsRoot>
+         <receiptsRoot>      _ => #asWord(HE) </receiptsRoot>
+         <logsBloom>         _ => HB          </logsBloom>
+         <difficulty>        _ => #asWord(HD) </difficulty>
+         <number>            _ => #asWord(HI) </number>
+         <gasLimit>          _ => #asWord(HL) </gasLimit>
+         <gasUsed>           _ => #asWord(HG) </gasUsed>
+         <timestamp>         _ => #asWord(HS) </timestamp>
+         <extraData>         _ => HX          </extraData>
+         <mixHash>           _ => #asWord(HM) </mixHash>
+         <blockNonce>        _ => #asWord(HN) </blockNonce>
+         <ommerBlockHeaders> _ => BU          </ommerBlockHeaders>
+
+    rule <k> load "rlp" : [ [ HP , HO , HC , HR , HT , HE , HB , HD , HI , HL , HG , HS , HX , HM , HN , HF , .JSONs ] , BT , BU , .JSONs ]
+          => load "rlp" : [ [ HP , HO , HC , HR , HT , HE , HB , HD , HI , HL , HG , HS , HX , HM , HN , .JSONs ] , BT , BU , .JSONs ]
+         ...
+         </k>
+         <baseFee> _ => #asWord(HF) </baseFee>
+
+    rule <k> load "rlp" : [ [ HP , HO , HC , HR , HT , HE , HB , HD , HI , HL , HG , HS , HX , HM , HN , HF , WR , .JSONs ] , BT , BU , BW , .JSONs ]
+          => load "rlp" : [ [ HP , HO , HC , HR , HT , HE , HB , HD , HI , HL , HG , HS , HX , HM , HN , HF , .JSONs ] , BT , BU , .JSONs ]
+          ~> load "withdraw" : BW
+         ...
+         </k>
+         <withdrawalsRoot> _ => #asWord(WR) </withdrawalsRoot>
+
+    rule <k> load "genesisRLP": [ [ HP, HO, HC, HR, HT, HE:Bytes, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WR, .JSONs ], _, _, _, .JSONs ] => .K ... </k>
+         <blockhashes> .List => ListItem(#blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, WR)) ListItem(#asWord(HP)) ... </blockhashes>
+
+    rule <k> load "genesisRLP": [ [ HP, HO, HC, HR, HT, HE:Bytes, HB, HD, HI, HL, HG, HS, HX, HM, HN, .JSONs ], _, _, .JSONs ] => .K ... </k>
+         <blockhashes> .List => ListItem(#blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN)) ListItem(#asWord(HP)) ... </blockhashes>
+
+    rule <k> load "genesisRLP": [ [ HP, HO, HC, HR, HT, HE:Bytes, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF, .JSONs ], _, _, .JSONs ] => .K ... </k>
+         <blockhashes> .List => ListItem(#blockHeaderHash(HP, HO, HC, HR, HT, HE, HB, HD, HI, HL, HG, HS, HX, HM, HN, HF)) ListItem(#asWord(HP)) ... </blockhashes>
+
+    syntax EthereumCommand ::= "mkTX" Int
+ // -------------------------------------
+    rule <k> mkTX TXID => .K ... </k>
+         <chainID> CID </chainID>
+         <txOrder>   ... (.List => ListItem(TXID)) </txOrder>
+         <txPending> ... (.List => ListItem(TXID)) </txPending>
+         <messages>
+            ( .Bag
+           => <message>
+                <msgID>      TXID:Int </msgID>
+                <txGasPrice> 20000000000   </txGasPrice>
+                <txGasLimit> 90000         </txGasLimit>
+                <txChainID>  CID           </txChainID>
+                ...
+              </message>
+            )
+          ...
+          </messages>
+
+    rule <k> load "transaction" : [ (T => [#rlpDecodeTransaction(T)]) , _ ] ... </k>
+
+    rule <k> load "transaction" : [ [ TN , TP , TG , TT , TV , TI , TW , TR , TS ] , REST ]
+          => mkTX !ID:Int
+          ~> loadTransaction !ID { "data"  : TI   ,   "gasLimit" : TG   ,   "gasPrice"             : TP
+                                 , "nonce" : TN   ,   "r"        : TR   ,   "s"                    : TS
+                                 , "to"    : TT   ,   "v"        : TW   ,   "value"                : TV
+                                 , "type"  : #dasmTxPrefix(Legacy)      ,   "maxPriorityFeePerGas" : TP
+                                 , "maxFeePerGas": TP                   , .JSONs
+                                 }
+          ~> load "transaction" : [ REST ]
+          ...
+          </k>
+
+    rule <k> load "transaction" : [ [TYPE , [TC, TN, TP, TG, TT, TV, TI, TA, TY , TR, TS ]] , REST ]
+          => mkTX !ID:Int
+          ~> loadTransaction !ID { "data"       : TI   ,   "gasLimit" : TG   ,   "gasPrice"  : TP
+                                 , "nonce"      : TN   ,   "r"        : TR   ,   "s"         : TS
+                                 , "to"         : TT   ,   "v"        : TY   ,   "value"     : TV
+                                 , "accessList" : TA   ,   "type"     : TYPE ,   "chainID"   : TC
+                                 , "maxPriorityFeePerGas" : TP               , "maxFeePerGas": TP
+                                 , .JSONs
+                                 }
+          ~> load "transaction" : [ REST ]
+          ...
+         </k>
+    requires #asWord(TYPE) ==Int #dasmTxPrefix(AccessList)
+
+
+    rule <k> load "transaction" : [ [TYPE , [TC, TN, TP, TF, TG, TT, TV, TI, TA, TY , TR, TS ]] , REST ]
+          => mkTX !ID:Int
+          ~> loadTransaction !ID { "data"         : TI   ,   "gasLimit" : TG   ,   "maxPriorityFeePerGas" : TP
+                                 , "nonce"        : TN   ,   "r"        : TR   ,   "s"                    : TS
+                                 , "to"           : TT   ,   "v"        : TY   ,   "value"                : TV
+                                 , "accessList"   : TA   ,   "type"     : TYPE ,   "chainID"              : TC
+                                 , "maxFeePerGas" : TF   , .JSONs
+                                 }
+          ~> load "transaction" : [ REST ]
+          ...
+         </k>
+    requires #asWord(TYPE) ==Int #dasmTxPrefix(DynamicFee)
+
+    syntax EthereumCommand ::= "loadTransaction" Int JSON
+ // -----------------------------------------------------
+    rule <k> loadTransaction _ { .JSONs } => .K ... </k>
+
+    rule <k> loadTransaction TXID { GLIMIT : TG:Int, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <txGasLimit> _ => TG </txGasLimit> ... </message>
+      requires GLIMIT in (SetItem("gas") SetItem("gasLimit"))
+
+    rule <k> loadTransaction TXID { "gasPrice" : TP:Int, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <txGasPrice> _ => TP </txGasPrice> ... </message>
+
+    rule <k> loadTransaction TXID { "nonce" : TN:Int, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <txNonce> _ => TN </txNonce> ... </message>
+
+    rule <k> loadTransaction TXID { "value" : TV:Int, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <value> _ => TV </value> ... </message>
+
+    rule <k> loadTransaction TXID { "to" : TT:Account, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <to> _ => TT </to> ... </message>
+
+    rule <k> loadTransaction TXID { "data" : TI:Bytes, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <data> _ => TI </data> ... </message>
+
+    rule <k> loadTransaction TXID { "v" : TW:Int, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <sigV> _ => TW </sigV> ... </message>
+
+    rule <k> loadTransaction TXID { "r" : TR:Bytes, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <sigR> _ => TR </sigR> ... </message>
+
+    rule <k> loadTransaction TXID { "s" : TS:Bytes, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <sigS> _ => TS </sigS> ... </message>
+
+    rule <k> loadTransaction TXID { "type" : T:Int, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <txType> _ => #asmTxPrefix(T) </txType> ... </message>
+
+    rule <k> loadTransaction TXID { "chainID" : TC:Int, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <txChainID> _ => TC </txChainID> ... </message>
+
+    rule <k> loadTransaction TXID { "accessList" : [TA:JSONs], REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <txAccess> _ => [TA] </txAccess> ... </message>
+
+    rule <k> loadTransaction TXID { "maxPriorityFeePerGas" : TP:Int, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <txPriorityFee> _ => TP </txPriorityFee> ... </message>
+
+    rule <k> loadTransaction TXID { "maxFeePerGas" : TF:Int, REST => REST } ... </k>
+         <message> <msgID> TXID </msgID> <txMaxFee> _ => TF </txMaxFee> ... </message>
+
+

Getting State

+
    +
  • #getTxData will pull the parameters of TXID into an appropriate TxData symbol
  • +
  • #effectiveGasPrice will compute the gas price for TXID, as specified by EIP-1559
  • +
+
    syntax TxData ::= #getTxData( Int ) [klabel(#getTxData), function]
+ // ------------------------------------------------------------------
+    rule [[ #getTxData( TXID ) => LegacyTxData(TN, TP, TG, TT, TV, DATA) ]]
+         <message>
+           <msgID>      TXID </msgID>
+           <txNonce>    TN   </txNonce>
+           <txGasPrice> TP   </txGasPrice>
+           <txGasLimit> TG   </txGasLimit>
+           <to>         TT   </to>
+           <value>      TV   </value>
+           <sigV>       TW   </sigV>
+           <data>       DATA </data>
+           <txType> Legacy </txType>
+           ...
+         </message>
+      requires TW ==Int 0 orBool TW ==Int 1 orBool TW ==Int 27 orBool TW ==Int 28
+
+    rule [[ #getTxData( TXID ) => LegacyProtectedTxData(TN, TP, TG, TT, TV, DATA, CID) ]]
+         <message>
+           <msgID>      TXID </msgID>
+           <txNonce>    TN   </txNonce>
+           <txGasPrice> TP   </txGasPrice>
+           <txGasLimit> TG   </txGasLimit>
+           <to>         TT   </to>
+           <value>      TV   </value>
+           <sigV>       TW   </sigV>
+           <data>       DATA </data>
+           <txChainID>  CID  </txChainID>
+           <txType> Legacy </txType>
+           ...
+         </message>
+      requires notBool (TW ==Int 0 orBool TW ==Int 1 orBool TW ==Int 27 orBool TW ==Int 28)
+
+    rule [[ #getTxData( TXID ) => AccessListTxData(TN, TP, TG, TT, TV, DATA, CID, TA) ]]
+         <message>
+           <msgID>      TXID </msgID>
+           <txNonce>    TN   </txNonce>
+           <txGasPrice> TP   </txGasPrice>
+           <txGasLimit> TG   </txGasLimit>
+           <to>         TT   </to>
+           <value>      TV   </value>
+           <data>       DATA </data>
+           <txChainID>  CID  </txChainID>
+           <txAccess>   TA   </txAccess>
+           <txType> AccessList </txType>
+           ...
+         </message>
+
+    rule [[ #getTxData( TXID ) => DynamicFeeTxData(TN, TPF, TM, TG, TT, TV, DATA, CID, TA) ]]
+         <message>
+           <msgID>         TXID </msgID>
+           <txNonce>       TN   </txNonce>
+           <txGasLimit>    TG   </txGasLimit>
+           <to>            TT   </to>
+           <value>         TV   </value>
+           <data>          DATA </data>
+           <txChainID>     CID  </txChainID>
+           <txAccess>      TA   </txAccess>
+           <txPriorityFee> TPF  </txPriorityFee>
+           <txMaxFee>      TM   </txMaxFee>
+           <txType> DynamicFee </txType>
+           ...
+         </message>
+
+    syntax Int ::= #effectiveGasPrice( Int ) [klabel(#effectiveGasPrice), function]
+ // -------------------------------------------------------------------------------
+    rule [[ #effectiveGasPrice( TXID )
+         => #if ( notBool Ghasbasefee << SCHED >> )
+                orBool TXTYPE ==K Legacy
+                orBool TXTYPE ==K AccessList
+              #then GPRICE
+              #else BFEE +Int minInt(TPF, TM -Int BFEE)
+            #fi
+         ]]
+         <schedule> SCHED </schedule>
+         <baseFee> BFEE </baseFee>
+         <message>
+           <msgID>         TXID   </msgID>
+           <txGasPrice>    GPRICE </txGasPrice>
+           <txType>        TXTYPE </txType>
+           <txPriorityFee> TPF    </txPriorityFee>
+           <txMaxFee>      TM     </txMaxFee>
+           ...
+         </message>
+
+

Block Identifiers

+
    syntax BlockIdentifier ::= Int
+                             | "LATEST"
+                             | "PENDING"
+                             | "EARLIEST"
+ // -------------------------------------
+
+    syntax BlockIdentifier ::= #parseBlockIdentifier ( JSON ) [klabel(#parseBlockIdentifier), function]
+ // ---------------------------------------------------------------------------------------------------
+    rule #parseBlockIdentifier(BLOCKNUM:Int) => BLOCKNUM
+    rule #parseBlockIdentifier("pending")    => PENDING
+    rule #parseBlockIdentifier("latest")     => LATEST
+    rule #parseBlockIdentifier("earliest")   => EARLIEST
+    rule #parseBlockIdentifier(BLOCKNUM)     => #parseWord(BLOCKNUM) [owise]
+
+
endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/word.md b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/word.md deleted file mode 100644 index a108d39f0d..0000000000 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/word.md +++ /dev/null @@ -1,590 +0,0 @@ -Core definitions for `Word` -=========================== - -In this file are defined the basic components for EVM words. - -```k -module WORD - imports INT - imports BOOL - imports BYTES -``` - -Important Powers ----------------- - -Some important numbers that are referred to often during execution. -These can be used for pattern-matching on the LHS of rules as well (`alias` attribute expands all occurrences of these in rules). - -```k - syntax Int ::= "pow5" [macro] /* 2 ^Int 5 */ - | "pow8" [macro] /* 2 ^Int 8 */ - | "pow16" [alias] /* 2 ^Int 16 */ - | "pow24" [alias] /* 2 ^Int 24 */ - | "pow32" [alias] /* 2 ^Int 32 */ - | "pow40" [alias] /* 2 ^Int 40 */ - | "pow48" [alias] /* 2 ^Int 48 */ - | "pow56" [alias] /* 2 ^Int 56 */ - | "pow64" [alias] /* 2 ^Int 64 */ - | "pow72" [alias] /* 2 ^Int 72 */ - | "pow80" [alias] /* 2 ^Int 80 */ - | "pow88" [alias] /* 2 ^Int 88 */ - | "pow96" [alias] /* 2 ^Int 96 */ - | "pow104" [alias] /* 2 ^Int 104 */ - | "pow112" [alias] /* 2 ^Int 112 */ - | "pow120" [alias] /* 2 ^Int 120 */ - | "pow128" [alias] /* 2 ^Int 128 */ - | "pow136" [alias] /* 2 ^Int 136 */ - | "pow144" [alias] /* 2 ^Int 144 */ - | "pow152" [alias] /* 2 ^Int 152 */ - | "pow160" [alias] /* 2 ^Int 160 */ - | "pow168" [alias] /* 2 ^Int 168 */ - | "pow176" [alias] /* 2 ^Int 176 */ - | "pow184" [alias] /* 2 ^Int 184 */ - | "pow192" [alias] /* 2 ^Int 192 */ - | "pow200" [alias] /* 2 ^Int 200 */ - | "pow208" [alias] /* 2 ^Int 208 */ - | "pow216" [alias] /* 2 ^Int 216 */ - | "pow224" [alias] /* 2 ^Int 224 */ - | "pow232" [alias] /* 2 ^Int 232 */ - | "pow240" [alias] /* 2 ^Int 240 */ - | "pow248" [alias] /* 2 ^Int 248 */ - | "pow255" [alias] /* 2 ^Int 255 */ - | "pow256" [alias] /* 2 ^Int 256 */ - // ------------------------------------------------ - rule pow5 => 32 - rule pow8 => 256 - rule pow16 => 65536 - rule pow24 => 16777216 - rule pow32 => 4294967296 - rule pow40 => 1099511627776 - rule pow48 => 281474976710656 - rule pow56 => 72057594037927936 - rule pow64 => 18446744073709551616 - rule pow72 => 4722366482869645213696 - rule pow80 => 1208925819614629174706176 - rule pow88 => 309485009821345068724781056 - rule pow96 => 79228162514264337593543950336 - rule pow104 => 20282409603651670423947251286016 - rule pow112 => 5192296858534827628530496329220096 - rule pow120 => 1329227995784915872903807060280344576 - rule pow128 => 340282366920938463463374607431768211456 - rule pow136 => 87112285931760246646623899502532662132736 - rule pow144 => 22300745198530623141535718272648361505980416 - rule pow152 => 5708990770823839524233143877797980545530986496 - rule pow160 => 1461501637330902918203684832716283019655932542976 - rule pow168 => 374144419156711147060143317175368453031918731001856 - rule pow176 => 95780971304118053647396689196894323976171195136475136 - rule pow184 => 24519928653854221733733552434404946937899825954937634816 - rule pow192 => 6277101735386680763835789423207666416102355444464034512896 - rule pow200 => 1606938044258990275541962092341162602522202993782792835301376 - rule pow208 => 411376139330301510538742295639337626245683966408394965837152256 - rule pow216 => 105312291668557186697918027683670432318895095400549111254310977536 - rule pow224 => 26959946667150639794667015087019630673637144422540572481103610249216 - rule pow232 => 6901746346790563787434755862277025452451108972170386555162524223799296 - rule pow240 => 1766847064778384329583297500742918515827483896875618958121606201292619776 - rule pow248 => 452312848583266388373324160190187140051835877600158453279131187530910662656 - rule pow255 => 57896044618658097711785492504343953926634992332820282019728792003956564819968 - rule pow256 => 115792089237316195423570985008687907853269984665640564039457584007913129639936 -``` - -Maximums and minimums ---------------------- - -The maximum and minimum values of each type are defined below. - -```k - syntax Int ::= "minSInt8" [alias] - | "minSInt8Word" [alias] - | "maxSInt8" [alias] - | "minSInt16" [alias] - | "minSInt16Word" [alias] - | "maxSInt16" [alias] - | "minSInt24" [alias] - | "minSInt24Word" [alias] - | "maxSInt24" [alias] - | "minSInt32" [alias] - | "minSInt32Word" [alias] - | "maxSInt32" [alias] - | "minSInt40" [alias] - | "minSInt40Word" [alias] - | "maxSInt40" [alias] - | "minSInt48" [alias] - | "minSInt48Word" [alias] - | "maxSInt48" [alias] - | "minSInt56" [alias] - | "minSInt56Word" [alias] - | "maxSInt56" [alias] - | "minSInt64" [alias] - | "minSInt64Word" [alias] - | "maxSInt64" [alias] - | "minSInt72" [alias] - | "minSInt72Word" [alias] - | "maxSInt72" [alias] - | "minSInt80" [alias] - | "minSInt80Word" [alias] - | "maxSInt80" [alias] - | "minSInt88" [alias] - | "minSInt88Word" [alias] - | "maxSInt88" [alias] - | "minSInt96" [alias] - | "minSInt96Word" [alias] - | "maxSInt96" [alias] - | "minSInt104" [alias] - | "minSInt104Word" [alias] - | "maxSInt104" [alias] - | "minSInt112" [alias] - | "minSInt112Word" [alias] - | "maxSInt112" [alias] - | "minSInt120" [alias] - | "minSInt120Word" [alias] - | "maxSInt120" [alias] - | "minSInt128" [alias] - | "minSInt128Word" [alias] - | "maxSInt128" [alias] - | "minSInt136" [alias] - | "minSInt136Word" [alias] - | "maxSInt136" [alias] - | "minSInt144" [alias] - | "minSInt144Word" [alias] - | "maxSInt144" [alias] - | "minSInt152" [alias] - | "minSInt152Word" [alias] - | "maxSInt152" [alias] - | "minSInt160" [alias] - | "minSInt160Word" [alias] - | "maxSInt160" [alias] - | "minSInt168" [alias] - | "minSInt168Word" [alias] - | "maxSInt168" [alias] - | "minSInt176" [alias] - | "minSInt176Word" [alias] - | "maxSInt176" [alias] - | "minSInt184" [alias] - | "minSInt184Word" [alias] - | "maxSInt184" [alias] - | "minSInt192" [alias] - | "minSInt192Word" [alias] - | "maxSInt192" [alias] - | "minSInt200" [alias] - | "minSInt200Word" [alias] - | "maxSInt200" [alias] - | "minSInt208" [alias] - | "minSInt208Word" [alias] - | "maxSInt208" [alias] - | "minSInt216" [alias] - | "minSInt216Word" [alias] - | "maxSInt216" [alias] - | "minSInt224" [alias] - | "minSInt224Word" [alias] - | "maxSInt224" [alias] - | "minSInt232" [alias] - | "minSInt232Word" [alias] - | "maxSInt232" [alias] - | "minSInt240" [alias] - | "minSInt240Word" [alias] - | "maxSInt240" [alias] - | "minSInt248" [alias] - | "minSInt248Word" [alias] - | "maxSInt248" [alias] - | "minSInt256" [alias] - | "minSInt256Word" [alias] - | "maxSInt256" [alias] - | "minUInt5" [macro] - | "maxUInt5" [alias] - | "minUInt8" [macro] - | "maxUInt8" [alias] - | "minUInt16" [macro] - | "maxUInt16" [alias] - | "minUInt24" [macro] - | "maxUInt24" [alias] - | "minUInt32" [macro] - | "maxUInt32" [alias] - | "minUInt40" [macro] - | "maxUInt40" [alias] - | "minUInt48" [macro] - | "maxUInt48" [alias] - | "minUInt56" [macro] - | "maxUInt56" [alias] - | "minUInt64" [macro] - | "maxUInt64" [alias] - | "minUInt72" [macro] - | "maxUInt72" [alias] - | "minUInt80" [macro] - | "maxUInt80" [alias] - | "minUInt88" [macro] - | "maxUInt88" [alias] - | "minUInt96" [macro] - | "maxUInt96" [alias] - | "minUInt104" [macro] - | "maxUInt104" [alias] - | "minUInt112" [macro] - | "maxUInt112" [alias] - | "minUInt120" [macro] - | "maxUInt120" [alias] - | "minUInt128" [macro] - | "maxUInt128" [alias] - | "minUInt136" [macro] - | "maxUInt136" [alias] - | "minUInt144" [macro] - | "maxUInt144" [alias] - | "minUInt152" [macro] - | "maxUInt152" [alias] - | "minUInt160" [macro] - | "maxUInt160" [alias] - | "minUInt168" [macro] - | "maxUInt168" [alias] - | "minUInt176" [macro] - | "maxUInt176" [alias] - | "minUInt184" [macro] - | "maxUInt184" [alias] - | "minUInt192" [macro] - | "maxUInt192" [alias] - | "minUInt200" [macro] - | "maxUInt200" [alias] - | "minUInt208" [macro] - | "maxUInt208" [alias] - | "minUInt216" [macro] - | "maxUInt216" [alias] - | "minUInt224" [macro] - | "maxUInt224" [alias] - | "minUInt232" [macro] - | "maxUInt232" [alias] - | "minUInt240" [macro] - | "maxUInt240" [alias] - | "minUInt248" [macro] - | "maxUInt248" [alias] - | "minUInt256" [macro] - | "maxUInt256" [alias] - | "minSFixed128x10" [alias] - | "maxSFixed128x10" [alias] - | "minUFixed128x10" [macro] - | "maxUFixed128x10" [alias] - // ---------------------------------------- - rule minSInt8 => -128 /* -2^7 */ - rule minSInt8Word => 115792089237316195423570985008687907853269984665640564039457584007913129639808 /* -2^7 as evm word */ - rule maxSInt8 => 127 /* 2^7 - 1 */ - rule minSInt16 => -32768 /* -2^15 */ - rule minSInt16Word => 115792089237316195423570985008687907853269984665640564039457584007913129607168 /* -2^15 as evm word */ - rule maxSInt16 => 32767 /* 2^15 - 1 */ - rule minSInt24 => -8388608 /* -2^23 */ - rule minSInt24Word => 115792089237316195423570985008687907853269984665640564039457584007913121251328 /* -2^23 as evm word */ - rule maxSInt24 => 8388607 /* 2^23 - 1 */ - rule minSInt32 => -2147483648 /* -2^31 */ - rule minSInt32Word => 115792089237316195423570985008687907853269984665640564039457584007910982156288 /* -2^31 as evm word */ - rule maxSInt32 => 2147483647 /* 2^31 - 1 */ - rule minSInt40 => -549755813888 /* -2^39 */ - rule minSInt40Word => 115792089237316195423570985008687907853269984665640564039457584007363373826048 /* -2^39 as evm word */ - rule maxSInt40 => 549755813887 /* 2^39 - 1 */ - rule minSInt48 => -140737488355328 /* -2^47 */ - rule minSInt48Word => 115792089237316195423570985008687907853269984665640564039457583867175641284608 /* -2^47 as evm word */ - rule maxSInt48 => 140737488355327 /* 2^47 - 1 */ - rule minSInt56 => -36028797018963968 /* -2^55 */ - rule minSInt56Word => 115792089237316195423570985008687907853269984665640564039457547979116110675968 /* -2^55 as evm word */ - rule maxSInt56 => 36028797018963967 /* 2^55 - 1 */ - rule minSInt64 => -9223372036854775808 /* -2^63 */ - rule minSInt64Word => 115792089237316195423570985008687907853269984665640564039448360635876274864128 /* -2^63 as evm word */ - rule maxSInt64 => 9223372036854775807 /* 2^63 - 1 */ - rule minSInt72 => -2361183241434822606848 /* -2^71 */ - rule minSInt72Word => 115792089237316195423570985008687907853269984665640564037096400766478307033088 /* -2^71 as evm word */ - rule maxSInt72 => 2361183241434822606847 /* 2^71 - 1 */ - rule minSInt80 => -604462909807314587353088 /* -2^79 */ - rule minSInt80Word => 115792089237316195423570985008687907853269984665640563434994674200598542286848 /* -2^79 as evm word */ - rule maxSInt80 => 604462909807314587353087 /* 2^79 - 1 */ - rule minSInt88 => -154742504910672534362390528 /* -2^87 */ - rule minSInt88Word => 115792089237316195423570985008687907853269984665640409296952673335378767249408 /* -2^87 as evm word */ - rule maxSInt88 => 154742504910672534362390527 /* 2^87 - 1 */ - rule minSInt96 => -39614081257132168796771975168 /* -2^95 */ - rule minSInt96Word => 115792089237316195423570985008687907853269984665600949958200451839116357664768 /* -2^95 as evm word */ - rule maxSInt96 => 39614081257132168796771975167 /* 2^95 - 1 */ - rule minSInt104 => -10141204801825835211973625643008 /* -2^103 */ - rule minSInt104Word => 115792089237316195423570985008687907853269984655499359237631748795939503996928 /* -2^103 as evm word */ - rule maxSInt104 => 10141204801825835211973625643007 /* 2^103 - 1 */ - rule minSInt112 => -2596148429267413814265248164610048 /* -2^111 */ - rule minSInt112Word => 115792089237316195423570985008687907853269982069492134772043769742664965029888 /* -2^111 as evm word */ - rule maxSInt112 => 2596148429267413814265248164610047 /* 2^111 - 1 */ - rule minSInt120 => -664613997892457936451903530140172288 /* -2^119 */ - rule minSInt120Word => 115792089237316195423570985008687907853269320051642671581521132104382989467648 /* -2^119 as evm word */ - rule maxSInt120 => 664613997892457936451903530140172287 /* 2^119 - 1 */ - rule minSInt128 => -170141183460469231731687303715884105728 /* -2^127 */ - rule minSInt128Word => 115792089237316195423570985008687907853099843482180094807725896704197245534208 /* -2^127 as evm word */ - rule maxSInt128 => 170141183460469231731687303715884105727 /* 2^127 as evm word */ - rule minSInt136 => -43556142965880123323311949751266331066368 /* -2^135 */ - rule minSInt136Word => 115792089237316195423570985008687907809713841699760440716145634256646798573568 /* -2^135 as evm word */ - rule maxSInt136 => 43556142965880123323311949751266331066367 /* 2^135 - 1 */ - rule minSInt144 => -11150372599265311570767859136324180752990208 /* -2^143 */ - rule minSInt144Word => 115792089237316195423570985008687896702897385400328993271598447683732376649728 /* -2^143 as evm word */ - rule maxSInt144 => 11150372599265311570767859136324180752990207 /* 2^143 - 1 */ - rule minSInt152 => -2854495385411919762116571938898990272765493248 /* -2^151 */ - rule minSInt152Word => 115792089237316195423570985008685053357884572745878447467518685017640364146688 /* -2^151 as evm word */ - rule maxSInt152 => 2854495385411919762116571938898990272765493247 /* 2^151 - 1 */ - rule minSInt160 => -730750818665451459101842416358141509827966271488 /* -2^159 */ - rule minSInt160Word => 115792089237316195423570985007957157034604533206538721623099442498085163368448 /* -2^159 as evm word */ - rule maxSInt160 => 730750818665451459101842416358141509827966271487 /* 2^159 - 1 */ - rule minSInt168 => -187072209578355573530071658587684226515959365500928 /* -2^167 */ - rule minSInt168Word => 115792089237316195423570984821615698274914411135568905451773357491953764139008 /* -2^167 as evm word */ - rule maxSInt168 => 187072209578355573530071658587684226515959365500927 /* 2^167 - 1 */ - rule minSInt176 => -47890485652059026823698344598447161988085597568237568 /* -2^175 */ - rule minSInt176Word => 115792089237316195423570937118202255794243160967295965592295595922315561402368 /* -2^175 as evm word */ - rule maxSInt176 => 47890485652059026823698344598447161988085597568237567 /* 2^175 - 1 */ - rule minSInt184 => -12259964326927110866866776217202473468949912977468817408 /* -2^183 */ - rule minSInt184Word => 115792089237316195423558725044360980742403117889423361565988634094935660822528 /* -2^183 as evm word */ - rule maxSInt184 => 12259964326927110866866776217202473468949912977468817407 /* 2^183 - 1 */ - rule minSInt192 => -3138550867693340381917894711603833208051177722232017256448 /* -2^191 */ - rule minSInt192Word => 115792089237316195420432434140994567471352089954036730831406406285681112383488 /* -2^191 as evm word */ - rule maxSInt192 => 3138550867693340381917894711603833208051177722232017256447 /* 2^191 - 1 */ - rule minSInt200 => -803469022129495137770981046170581301261101496891396417650688 /* -2^199 */ - rule minSInt200Word => 115792089237316194620101962879192770082288938495059262778356087116516711989248 /* -2^199 as evm word */ - rule maxSInt200 => 803469022129495137770981046170581301261101496891396417650687 /* 2^199 - 1 */ - rule minSInt208 => -205688069665150755269371147819668813122841983204197482918576128 /* -2^207 */ - rule minSInt208Word => 115792089237315989735501319857932638482122164996827441197474379810430211063808 /* -2^207 as evm word */ - rule maxSInt208 => 205688069665150755269371147819668813122841983204197482918576127 /* 2^207 - 1 */ - rule minSInt216 => -52656145834278593348959013841835216159447547700274555627155488768 /* -2^215 */ - rule minSInt216Word => 115792089237263539277736706415338948839428149449481116491757309452285974151168 /* -2^215 as evm word */ - rule maxSInt216 => 52656145834278593348959013841835216159447547700274555627155488767 /* 2^215 - 1 */ - rule minSInt224 => -13479973333575319897333507543509815336818572211270286240551805124608 /* -2^223 */ - rule minSInt224Word => 115792089223836222089995665111354400309760169328821991828187297767361324515328 /* -2^223 as evm word */ - rule maxSInt224 => 13479973333575319897333507543509815336818572211270286240551805124607 /* 2^223 - 1 */ - rule minSInt232 => -3450873173395281893717377931138512726225554486085193277581262111899648 /* -2^231 */ - rule minSInt232Word => 115792085786443022028289091291309976714757258440086077954264306426651017740288 /* -2^231 as evm word */ - rule maxSInt232 => 3450873173395281893717377931138512726225554486085193277581262111899647 /* 2^231 - 1 */ - rule minSInt240 => -883423532389192164791648750371459257913741948437809479060803100646309888 /* -2^239 */ - rule minSInt240Word => 115791205813783806231406193359937536394012070923692126229978523204812483330048 /* -2^239 as evm word */ - rule maxSInt240 => 883423532389192164791648750371459257913741948437809479060803100646309887 /* 2^239 - 1 */ - rule minSInt248 => -226156424291633194186662080095093570025917938800079226639565593765455331328 /* -2^247 */ - rule minSInt248Word => 115565932813024562229384322928592814283244066726840484812818018414147674308608 /* -2^247 as evm word */ - rule maxSInt248 => 226156424291633194186662080095093570025917938800079226639565593765455331327 /* 2^247 - 1 */ - rule minSInt256 => -57896044618658097711785492504343953926634992332820282019728792003956564819968 /* -2^255 */ - rule minSInt256Word => 57896044618658097711785492504343953926634992332820282019728792003956564819968 /* -2^255 as evm word */ - rule maxSInt256 => 57896044618658097711785492504343953926634992332820282019728792003956564819967 /* 2^255 - 1 */ - - rule minSFixed128x10 => -1701411834604692317316873037158841057280000000000 /* (-2^487 ) * 10^10 */ - rule maxSFixed128x10 => 1701411834604692317316873037158841057270000000000 /* ( 2^487 - 1) * 10^10 */ - - rule minUInt5 => 0 - rule maxUInt5 => 31 /* 2^5 - 1 */ - rule minUInt8 => 0 - rule maxUInt8 => 255 /* 2^8 - 1 */ - rule minUInt16 => 0 - rule maxUInt16 => 65535 /* 2^16 - 1 */ - rule minUInt24 => 0 - rule maxUInt24 => 16777215 /* 2^24 - 1 */ - rule minUInt32 => 0 - rule maxUInt32 => 4294967295 /* 2^32 - 1 */ - rule minUInt40 => 0 - rule maxUInt40 => 1099511627775 /* 2^40 - 1 */ - rule minUInt48 => 0 - rule maxUInt48 => 281474976710655 /* 2^48 - 1 */ - rule minUInt56 => 0 - rule maxUInt56 => 72057594037927935 /* 2^56 - 1 */ - rule minUInt64 => 0 - rule maxUInt64 => 18446744073709551615 /* 2^64 - 1 */ - rule minUInt72 => 0 - rule maxUInt72 => 4722366482869645213695 /* 2^72 - 1 */ - rule minUInt80 => 0 - rule maxUInt80 => 1208925819614629174706175 /* 2^80 - 1 */ - rule minUInt88 => 0 - rule maxUInt88 => 309485009821345068724781055 /* 2^88 - 1 */ - rule minUInt96 => 0 - rule maxUInt96 => 79228162514264337593543950335 /* 2^96 - 1 */ - rule minUInt104 => 0 - rule maxUInt104 => 20282409603651670423947251286015 /* 2^104 - 1 */ - rule minUInt112 => 0 - rule maxUInt112 => 5192296858534827628530496329220095 /* 2^112 - 1 */ - rule minUInt120 => 0 - rule maxUInt120 => 1329227995784915872903807060280344575 /* 2^120 - 1 */ - rule minUInt128 => 0 - rule maxUInt128 => 340282366920938463463374607431768211455 /* 2^128 - 1 */ - rule minUInt136 => 0 - rule maxUInt136 => 87112285931760246646623899502532662132735 /* 2^136 - 1 */ - rule minUInt144 => 0 - rule maxUInt144 => 22300745198530623141535718272648361505980415 /* 2^144 - 1 */ - rule minUInt152 => 0 - rule maxUInt152 => 5708990770823839524233143877797980545530986495 /* 2^152 - 1 */ - rule minUInt160 => 0 - rule maxUInt160 => 1461501637330902918203684832716283019655932542975 /* 2^160 - 1 */ - rule minUInt168 => 0 - rule maxUInt168 => 374144419156711147060143317175368453031918731001855 /* 2^168 - 1 */ - rule minUInt176 => 0 - rule maxUInt176 => 95780971304118053647396689196894323976171195136475135 /* 2^176 - 1 */ - rule minUInt184 => 0 - rule maxUInt184 => 24519928653854221733733552434404946937899825954937634815 /* 2^184 - 1 */ - rule minUInt192 => 0 - rule maxUInt192 => 6277101735386680763835789423207666416102355444464034512895 /* 2^192 - 1 */ - rule minUInt200 => 0 - rule maxUInt200 => 1606938044258990275541962092341162602522202993782792835301375 /* 2^200 - 1 */ - rule minUInt208 => 0 - rule maxUInt208 => 411376139330301510538742295639337626245683966408394965837152255 /* 2^208 - 1 */ - rule minUInt216 => 0 - rule maxUInt216 => 105312291668557186697918027683670432318895095400549111254310977535 /* 2^216 - 1 */ - rule minUInt224 => 0 - rule maxUInt224 => 26959946667150639794667015087019630673637144422540572481103610249215 /* 2^224 - 1 */ - rule minUInt232 => 0 - rule maxUInt232 => 6901746346790563787434755862277025452451108972170386555162524223799295 /* 2^232 - 1 */ - rule minUInt240 => 0 - rule maxUInt240 => 1766847064778384329583297500742918515827483896875618958121606201292619775 /* 2^240 - 1 */ - rule minUInt248 => 0 - rule maxUInt248 => 452312848583266388373324160190187140051835877600158453279131187530910662655 /* 2^248 - 1 */ - rule minUInt256 => 0 - rule maxUInt256 => 115792089237316195423570985008687907853269984665640564039457584007913129639935 /* 2^256 - 1 */ - - rule minUFixed128x10 => 0 - rule maxUFixed128x10 => 3402823669209384634633746074317682114550000000000 /* ( 2^128 - 1) * 10^10 */ - - syntax Int ::= "notMaxUInt5" [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 */ - | "notMaxUInt8" [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 */ - | "notMaxUInt16" [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 */ - | "notMaxUInt32" [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 */ - | "notMaxUInt64" [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 */ - | "notMaxUInt96" [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 */ - | "notMaxUInt128" [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 */ - | "notMaxUInt160" [alias] /* FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 */ - | "notMaxUInt192" [alias] /* FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 */ - | "notMaxUInt208" [alias] /* FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 */ - | "notMaxUInt224" [alias] /* FFFFFFFF00000000000000000000000000000000000000000000000000000000 */ - | "notMaxUInt240" [alias] /* FFFF000000000000000000000000000000000000000000000000000000000000 */ - | "notMaxUInt248" [alias] /* FF00000000000000000000000000000000000000000000000000000000000000 */ - // ------------------------------------------------------------------------------------------------------------- - rule notMaxUInt5 => 115792089237316195423570985008687907853269984665640564039457584007913129639904 - rule notMaxUInt8 => 115792089237316195423570985008687907853269984665640564039457584007913129639680 - rule notMaxUInt16 => 115792089237316195423570985008687907853269984665640564039457584007913129574400 - rule notMaxUInt32 => 115792089237316195423570985008687907853269984665640564039457584007908834672640 - rule notMaxUInt64 => 115792089237316195423570985008687907853269984665640564039439137263839420088320 - rule notMaxUInt96 => 115792089237316195423570985008687907853269984665561335876943319670319585689600 - rule notMaxUInt128 => 115792089237316195423570985008687907852929702298719625575994209400481361428480 - rule notMaxUInt160 => 115792089237316195423570985007226406215939081747436879206741300988257197096960 - rule notMaxUInt192 => 115792089237316195417293883273301227089434195242432897623355228563449095127040 - rule notMaxUInt208 => 115792089237315784047431654707177369110974345328014318355491175612947292487680 - rule notMaxUInt224 => 115792089210356248756420345214020892766250353992003419616917011526809519390720 - rule notMaxUInt240 => 115790322390251417039241401711187164934754157181743688420499462401711837020160 - rule notMaxUInt248 => 115339776388732929035197660848497720713218148788040405586178452820382218977280 - - syntax Int ::= "eth" [macro] - | "maxBlockNum" [macro] /* 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF == (2 ^ 256) - (2 ^ 255) - 1 */ - // ---------------------------------------------------------------------------------------------------------------------------------------- - rule eth => 1000000000000000000 - rule maxBlockNum => 57896044618658097711785492504343953926634992332820282019728792003956564819967 -``` - -Range of types --------------- - -```k - syntax Bool ::= #rangeBool ( Int ) [klabel(#rangeBool), alias] - | #rangeSInt ( Int , Int ) [klabel(#rangeSInt), alias] - | #rangeUInt ( Int , Int ) [klabel(#rangeUInt), alias] - | #rangeSFixed ( Int , Int , Int ) [klabel(#rangeSFixed), alias] - | #rangeUFixed ( Int , Int , Int ) [klabel(#rangeUFixed), alias] - | #rangeAddress ( Int ) [klabel(#rangeAddress), alias] - | #rangeBytes ( Int , Int ) [klabel(#rangeBytes), alias] - | #rangeNonce ( Int ) [klabel(#rangeNonce), alias] - | #rangeSmall ( Int ) [klabel(#rangeSmall), alias] - | #rangeBlockNum ( Int ) [klabel(#rangeBlockNum), alias] - // ---------------------------------------------------------------------------------- - rule #rangeBool ( X ) => X ==Int 0 orBool X ==Int 1 - - rule #rangeSInt ( 8 , X ) => #range ( minSInt8 <= X <= maxSInt8 ) - rule #rangeSInt ( 16 , X ) => #range ( minSInt16 <= X <= maxSInt16 ) - rule #rangeSInt ( 24 , X ) => #range ( minSInt24 <= X <= maxSInt24 ) - rule #rangeSInt ( 32 , X ) => #range ( minSInt32 <= X <= maxSInt32 ) - rule #rangeSInt ( 40 , X ) => #range ( minSInt40 <= X <= maxSInt40 ) - rule #rangeSInt ( 48 , X ) => #range ( minSInt48 <= X <= maxSInt48 ) - rule #rangeSInt ( 56 , X ) => #range ( minSInt56 <= X <= maxSInt56 ) - rule #rangeSInt ( 64 , X ) => #range ( minSInt64 <= X <= maxSInt64 ) - rule #rangeSInt ( 72 , X ) => #range ( minSInt72 <= X <= maxSInt72 ) - rule #rangeSInt ( 80 , X ) => #range ( minSInt80 <= X <= maxSInt80 ) - rule #rangeSInt ( 88 , X ) => #range ( minSInt88 <= X <= maxSInt88 ) - rule #rangeSInt ( 96 , X ) => #range ( minSInt96 <= X <= maxSInt96 ) - rule #rangeSInt ( 104 , X ) => #range ( minSInt104 <= X <= maxSInt104 ) - rule #rangeSInt ( 112 , X ) => #range ( minSInt112 <= X <= maxSInt112 ) - rule #rangeSInt ( 120 , X ) => #range ( minSInt120 <= X <= maxSInt120 ) - rule #rangeSInt ( 128 , X ) => #range ( minSInt128 <= X <= maxSInt128 ) - rule #rangeSInt ( 136 , X ) => #range ( minSInt136 <= X <= maxSInt136 ) - rule #rangeSInt ( 144 , X ) => #range ( minSInt144 <= X <= maxSInt144 ) - rule #rangeSInt ( 152 , X ) => #range ( minSInt152 <= X <= maxSInt152 ) - rule #rangeSInt ( 160 , X ) => #range ( minSInt160 <= X <= maxSInt160 ) - rule #rangeSInt ( 168 , X ) => #range ( minSInt168 <= X <= maxSInt168 ) - rule #rangeSInt ( 176 , X ) => #range ( minSInt176 <= X <= maxSInt176 ) - rule #rangeSInt ( 184 , X ) => #range ( minSInt184 <= X <= maxSInt184 ) - rule #rangeSInt ( 192 , X ) => #range ( minSInt192 <= X <= maxSInt192 ) - rule #rangeSInt ( 200 , X ) => #range ( minSInt200 <= X <= maxSInt200 ) - rule #rangeSInt ( 208 , X ) => #range ( minSInt208 <= X <= maxSInt208 ) - rule #rangeSInt ( 216 , X ) => #range ( minSInt216 <= X <= maxSInt216 ) - rule #rangeSInt ( 224 , X ) => #range ( minSInt224 <= X <= maxSInt224 ) - rule #rangeSInt ( 232 , X ) => #range ( minSInt232 <= X <= maxSInt232 ) - rule #rangeSInt ( 240 , X ) => #range ( minSInt240 <= X <= maxSInt240 ) - rule #rangeSInt ( 248 , X ) => #range ( minSInt248 <= X <= maxSInt248 ) - rule #rangeSInt ( 256 , X ) => #range ( minSInt256 <= X <= maxSInt256 ) - - rule #rangeUInt ( 5 , X ) => #range ( minUInt5 <= X < pow5 ) - rule #rangeUInt ( 8 , X ) => #range ( minUInt8 <= X < pow8 ) - rule #rangeUInt ( 16 , X ) => #range ( minUInt16 <= X < pow16 ) - rule #rangeUInt ( 24 , X ) => #range ( minUInt24 <= X < pow24 ) - rule #rangeUInt ( 32 , X ) => #range ( minUInt32 <= X < pow32 ) - rule #rangeUInt ( 40 , X ) => #range ( minUInt40 <= X < pow40 ) - rule #rangeUInt ( 48 , X ) => #range ( minUInt48 <= X < pow48 ) - rule #rangeUInt ( 56 , X ) => #range ( minUInt56 <= X < pow56 ) - rule #rangeUInt ( 64 , X ) => #range ( minUInt64 <= X < pow64 ) - rule #rangeUInt ( 72 , X ) => #range ( minUInt72 <= X < pow72 ) - rule #rangeUInt ( 80 , X ) => #range ( minUInt80 <= X < pow80 ) - rule #rangeUInt ( 88 , X ) => #range ( minUInt88 <= X < pow88 ) - rule #rangeUInt ( 96 , X ) => #range ( minUInt96 <= X < pow96 ) - rule #rangeUInt ( 104 , X ) => #range ( minUInt104 <= X < pow104 ) - rule #rangeUInt ( 112 , X ) => #range ( minUInt112 <= X < pow112 ) - rule #rangeUInt ( 120 , X ) => #range ( minUInt120 <= X < pow120 ) - rule #rangeUInt ( 128 , X ) => #range ( minUInt128 <= X < pow128 ) - rule #rangeUInt ( 136 , X ) => #range ( minUInt136 <= X < pow136 ) - rule #rangeUInt ( 144 , X ) => #range ( minUInt144 <= X < pow144 ) - rule #rangeUInt ( 152 , X ) => #range ( minUInt152 <= X < pow152 ) - rule #rangeUInt ( 160 , X ) => #range ( minUInt160 <= X < pow160 ) - rule #rangeUInt ( 168 , X ) => #range ( minUInt168 <= X < pow168 ) - rule #rangeUInt ( 176 , X ) => #range ( minUInt176 <= X < pow176 ) - rule #rangeUInt ( 184 , X ) => #range ( minUInt184 <= X < pow184 ) - rule #rangeUInt ( 192 , X ) => #range ( minUInt192 <= X < pow192 ) - rule #rangeUInt ( 200 , X ) => #range ( minUInt200 <= X < pow200 ) - rule #rangeUInt ( 208 , X ) => #range ( minUInt208 <= X < pow208 ) - rule #rangeUInt ( 216 , X ) => #range ( minUInt216 <= X < pow216 ) - rule #rangeUInt ( 224 , X ) => #range ( minUInt224 <= X < pow224 ) - rule #rangeUInt ( 232 , X ) => #range ( minUInt232 <= X < pow232 ) - rule #rangeUInt ( 240 , X ) => #range ( minUInt240 <= X < pow240 ) - rule #rangeUInt ( 248 , X ) => #range ( minUInt248 <= X < pow248 ) - rule #rangeUInt ( 256 , X ) => #range ( minUInt256 <= X < pow256 ) - - rule #rangeSFixed ( 128 , 10 , X ) => #range ( minSFixed128x10 <= X <= maxSFixed128x10 ) - rule #rangeUFixed ( 128 , 10 , X ) => #range ( minUFixed128x10 <= X <= maxUFixed128x10 ) - rule #rangeAddress ( X ) => #range ( minUInt160 <= X < pow160 ) - rule #rangeBytes ( N , X ) => #range ( 0 <= X < 1 < #range ( 0 <= X < maxUInt64 ) - rule #rangeSmall ( X ) => #range ( 0 <= X < 10 ) - rule #rangeBlockNum ( X ) => #range ( 0 <= X <= maxBlockNum ) - - syntax Bool ::= "#range" "(" Int "<" Int "<" Int ")" [alias] - | "#range" "(" Int "<" Int "<=" Int ")" [alias] - | "#range" "(" Int "<=" Int "<" Int ")" [alias] - | "#range" "(" Int "<=" Int "<=" Int ")" [alias] - // -------------------------------------------------------------- - rule #range ( LB < X < UB ) => LB LB LB <=Int X andBool X LB <=Int X andBool X <=Int UB -``` - -- `chop` interprets an integer modulo `2^256`. - -```k - syntax Int ::= chop ( Int ) [klabel(chop), function, total, smtlib(chop)] - // ------------------------------------------------------------------------- - rule chop ( I:Int ) => I modInt pow256 [concrete, smt-lemma] -``` -- `_<>Byte_` shifts an integer 8 bits to the right. - -```k - syntax Int ::= Int "<>Byte" Int [function] - // ------------------------------------------ - rule N < N <>Byte M => N >>Int (8 *Int M) - -endmodule -``` diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/word/index.html b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/word/index.html new file mode 100644 index 0000000000..dc70143104 --- /dev/null +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/word/index.html @@ -0,0 +1,783 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Core definitions for Word

+

In this file are defined the basic components for EVM words.

+
module WORD
+    imports INT
+    imports BOOL
+    imports BYTES
+
+

Important Powers

+

Some important numbers that are referred to often during execution. +These can be used for pattern-matching on the LHS of rules as well (alias attribute expands all occurrences of these in rules).

+
    syntax Int ::= "pow5"   [macro] /* 2 ^Int 5   */
+                 | "pow8"   [macro] /* 2 ^Int 8   */
+                 | "pow16"  [alias] /* 2 ^Int 16  */
+                 | "pow24"  [alias] /* 2 ^Int 24  */
+                 | "pow32"  [alias] /* 2 ^Int 32  */
+                 | "pow40"  [alias] /* 2 ^Int 40  */
+                 | "pow48"  [alias] /* 2 ^Int 48  */
+                 | "pow56"  [alias] /* 2 ^Int 56  */
+                 | "pow64"  [alias] /* 2 ^Int 64  */
+                 | "pow72"  [alias] /* 2 ^Int 72  */
+                 | "pow80"  [alias] /* 2 ^Int 80  */
+                 | "pow88"  [alias] /* 2 ^Int 88  */
+                 | "pow96"  [alias] /* 2 ^Int 96  */
+                 | "pow104" [alias] /* 2 ^Int 104 */
+                 | "pow112" [alias] /* 2 ^Int 112 */
+                 | "pow120" [alias] /* 2 ^Int 120 */
+                 | "pow128" [alias] /* 2 ^Int 128 */
+                 | "pow136" [alias] /* 2 ^Int 136 */
+                 | "pow144" [alias] /* 2 ^Int 144 */
+                 | "pow152" [alias] /* 2 ^Int 152 */
+                 | "pow160" [alias] /* 2 ^Int 160 */
+                 | "pow168" [alias] /* 2 ^Int 168 */
+                 | "pow176" [alias] /* 2 ^Int 176 */
+                 | "pow184" [alias] /* 2 ^Int 184 */
+                 | "pow192" [alias] /* 2 ^Int 192 */
+                 | "pow200" [alias] /* 2 ^Int 200 */
+                 | "pow208" [alias] /* 2 ^Int 208 */
+                 | "pow216" [alias] /* 2 ^Int 216 */
+                 | "pow224" [alias] /* 2 ^Int 224 */
+                 | "pow232" [alias] /* 2 ^Int 232 */
+                 | "pow240" [alias] /* 2 ^Int 240 */
+                 | "pow248" [alias] /* 2 ^Int 248 */
+                 | "pow255" [alias] /* 2 ^Int 255 */
+                 | "pow256" [alias] /* 2 ^Int 256 */
+ // ------------------------------------------------
+    rule pow5   => 32
+    rule pow8   => 256
+    rule pow16  => 65536
+    rule pow24  => 16777216
+    rule pow32  => 4294967296
+    rule pow40  => 1099511627776
+    rule pow48  => 281474976710656
+    rule pow56  => 72057594037927936
+    rule pow64  => 18446744073709551616
+    rule pow72  => 4722366482869645213696
+    rule pow80  => 1208925819614629174706176
+    rule pow88  => 309485009821345068724781056
+    rule pow96  => 79228162514264337593543950336
+    rule pow104 => 20282409603651670423947251286016
+    rule pow112 => 5192296858534827628530496329220096
+    rule pow120 => 1329227995784915872903807060280344576
+    rule pow128 => 340282366920938463463374607431768211456
+    rule pow136 => 87112285931760246646623899502532662132736
+    rule pow144 => 22300745198530623141535718272648361505980416
+    rule pow152 => 5708990770823839524233143877797980545530986496
+    rule pow160 => 1461501637330902918203684832716283019655932542976
+    rule pow168 => 374144419156711147060143317175368453031918731001856
+    rule pow176 => 95780971304118053647396689196894323976171195136475136
+    rule pow184 => 24519928653854221733733552434404946937899825954937634816
+    rule pow192 => 6277101735386680763835789423207666416102355444464034512896
+    rule pow200 => 1606938044258990275541962092341162602522202993782792835301376
+    rule pow208 => 411376139330301510538742295639337626245683966408394965837152256
+    rule pow216 => 105312291668557186697918027683670432318895095400549111254310977536
+    rule pow224 => 26959946667150639794667015087019630673637144422540572481103610249216
+    rule pow232 => 6901746346790563787434755862277025452451108972170386555162524223799296
+    rule pow240 => 1766847064778384329583297500742918515827483896875618958121606201292619776
+    rule pow248 => 452312848583266388373324160190187140051835877600158453279131187530910662656
+    rule pow255 => 57896044618658097711785492504343953926634992332820282019728792003956564819968
+    rule pow256 => 115792089237316195423570985008687907853269984665640564039457584007913129639936
+
+

Maximums and minimums

+

The maximum and minimum values of each type are defined below.

+
    syntax Int ::= "minSInt8"        [alias]
+                 | "minSInt8Word"    [alias]
+                 | "maxSInt8"        [alias]
+                 | "minSInt16"       [alias]
+                 | "minSInt16Word"   [alias]
+                 | "maxSInt16"       [alias]
+                 | "minSInt24"       [alias]
+                 | "minSInt24Word"   [alias]
+                 | "maxSInt24"       [alias]
+                 | "minSInt32"       [alias]
+                 | "minSInt32Word"   [alias]
+                 | "maxSInt32"       [alias]
+                 | "minSInt40"       [alias]
+                 | "minSInt40Word"   [alias]
+                 | "maxSInt40"       [alias]
+                 | "minSInt48"       [alias]
+                 | "minSInt48Word"   [alias]
+                 | "maxSInt48"       [alias]
+                 | "minSInt56"       [alias]
+                 | "minSInt56Word"   [alias]
+                 | "maxSInt56"       [alias]
+                 | "minSInt64"       [alias]
+                 | "minSInt64Word"   [alias]
+                 | "maxSInt64"       [alias]
+                 | "minSInt72"       [alias]
+                 | "minSInt72Word"   [alias]
+                 | "maxSInt72"       [alias]
+                 | "minSInt80"       [alias]
+                 | "minSInt80Word"   [alias]
+                 | "maxSInt80"       [alias]
+                 | "minSInt88"       [alias]
+                 | "minSInt88Word"   [alias]
+                 | "maxSInt88"       [alias]
+                 | "minSInt96"       [alias]
+                 | "minSInt96Word"   [alias]
+                 | "maxSInt96"       [alias]
+                 | "minSInt104"      [alias]
+                 | "minSInt104Word"  [alias]
+                 | "maxSInt104"      [alias]
+                 | "minSInt112"      [alias]
+                 | "minSInt112Word"  [alias]
+                 | "maxSInt112"      [alias]
+                 | "minSInt120"      [alias]
+                 | "minSInt120Word"  [alias]
+                 | "maxSInt120"      [alias]
+                 | "minSInt128"      [alias]
+                 | "minSInt128Word"  [alias]
+                 | "maxSInt128"      [alias]
+                 | "minSInt136"      [alias]
+                 | "minSInt136Word"  [alias]
+                 | "maxSInt136"      [alias]
+                 | "minSInt144"      [alias]
+                 | "minSInt144Word"  [alias]
+                 | "maxSInt144"      [alias]
+                 | "minSInt152"      [alias]
+                 | "minSInt152Word"  [alias]
+                 | "maxSInt152"      [alias]
+                 | "minSInt160"      [alias]
+                 | "minSInt160Word"  [alias]
+                 | "maxSInt160"      [alias]
+                 | "minSInt168"      [alias]
+                 | "minSInt168Word"  [alias]
+                 | "maxSInt168"      [alias]
+                 | "minSInt176"      [alias]
+                 | "minSInt176Word"  [alias]
+                 | "maxSInt176"      [alias]
+                 | "minSInt184"      [alias]
+                 | "minSInt184Word"  [alias]
+                 | "maxSInt184"      [alias]
+                 | "minSInt192"      [alias]
+                 | "minSInt192Word"  [alias]
+                 | "maxSInt192"      [alias]
+                 | "minSInt200"      [alias]
+                 | "minSInt200Word"  [alias]
+                 | "maxSInt200"      [alias]
+                 | "minSInt208"      [alias]
+                 | "minSInt208Word"  [alias]
+                 | "maxSInt208"      [alias]
+                 | "minSInt216"      [alias]
+                 | "minSInt216Word"  [alias]
+                 | "maxSInt216"      [alias]
+                 | "minSInt224"      [alias]
+                 | "minSInt224Word"  [alias]
+                 | "maxSInt224"      [alias]
+                 | "minSInt232"      [alias]
+                 | "minSInt232Word"  [alias]
+                 | "maxSInt232"      [alias]
+                 | "minSInt240"      [alias]
+                 | "minSInt240Word"  [alias]
+                 | "maxSInt240"      [alias]
+                 | "minSInt248"      [alias]
+                 | "minSInt248Word"  [alias]
+                 | "maxSInt248"      [alias]
+                 | "minSInt256"      [alias]
+                 | "minSInt256Word"  [alias]
+                 | "maxSInt256"      [alias]
+                 | "minUInt5"        [macro]
+                 | "maxUInt5"        [alias]
+                 | "minUInt8"        [macro]
+                 | "maxUInt8"        [alias]
+                 | "minUInt16"       [macro]
+                 | "maxUInt16"       [alias]
+                 | "minUInt24"       [macro]
+                 | "maxUInt24"       [alias]
+                 | "minUInt32"       [macro]
+                 | "maxUInt32"       [alias]
+                 | "minUInt40"       [macro]
+                 | "maxUInt40"       [alias]
+                 | "minUInt48"       [macro]
+                 | "maxUInt48"       [alias]
+                 | "minUInt56"       [macro]
+                 | "maxUInt56"       [alias]
+                 | "minUInt64"       [macro]
+                 | "maxUInt64"       [alias]
+                 | "minUInt72"       [macro]
+                 | "maxUInt72"       [alias]
+                 | "minUInt80"       [macro]
+                 | "maxUInt80"       [alias]
+                 | "minUInt88"       [macro]
+                 | "maxUInt88"       [alias]
+                 | "minUInt96"       [macro]
+                 | "maxUInt96"       [alias]
+                 | "minUInt104"      [macro]
+                 | "maxUInt104"      [alias]
+                 | "minUInt112"      [macro]
+                 | "maxUInt112"      [alias]
+                 | "minUInt120"      [macro]
+                 | "maxUInt120"      [alias]
+                 | "minUInt128"      [macro]
+                 | "maxUInt128"      [alias]
+                 | "minUInt136"      [macro]
+                 | "maxUInt136"      [alias]
+                 | "minUInt144"      [macro]
+                 | "maxUInt144"      [alias]
+                 | "minUInt152"      [macro]
+                 | "maxUInt152"      [alias]
+                 | "minUInt160"      [macro]
+                 | "maxUInt160"      [alias]
+                 | "minUInt168"      [macro]
+                 | "maxUInt168"      [alias]
+                 | "minUInt176"      [macro]
+                 | "maxUInt176"      [alias]
+                 | "minUInt184"      [macro]
+                 | "maxUInt184"      [alias]
+                 | "minUInt192"      [macro]
+                 | "maxUInt192"      [alias]
+                 | "minUInt200"      [macro]
+                 | "maxUInt200"      [alias]
+                 | "minUInt208"      [macro]
+                 | "maxUInt208"      [alias]
+                 | "minUInt216"      [macro]
+                 | "maxUInt216"      [alias]
+                 | "minUInt224"      [macro]
+                 | "maxUInt224"      [alias]
+                 | "minUInt232"      [macro]
+                 | "maxUInt232"      [alias]
+                 | "minUInt240"      [macro]
+                 | "maxUInt240"      [alias]
+                 | "minUInt248"      [macro]
+                 | "maxUInt248"      [alias]
+                 | "minUInt256"      [macro]
+                 | "maxUInt256"      [alias]
+                 | "minSFixed128x10" [alias]
+                 | "maxSFixed128x10" [alias]
+                 | "minUFixed128x10" [macro]
+                 | "maxUFixed128x10" [alias]
+ // ----------------------------------------
+    rule minSInt8        => -128                                                                            /*  -2^7                */
+    rule minSInt8Word    =>  115792089237316195423570985008687907853269984665640564039457584007913129639808 /*  -2^7 as evm word    */
+    rule maxSInt8        =>  127                                                                            /*   2^7 - 1            */
+    rule minSInt16       => -32768                                                                          /*  -2^15               */
+    rule minSInt16Word   =>  115792089237316195423570985008687907853269984665640564039457584007913129607168 /*  -2^15 as evm word   */
+    rule maxSInt16       =>  32767                                                                          /*   2^15 - 1           */
+    rule minSInt24       => -8388608                                                                        /*  -2^23               */
+    rule minSInt24Word   =>  115792089237316195423570985008687907853269984665640564039457584007913121251328 /*  -2^23 as evm word   */
+    rule maxSInt24       =>  8388607                                                                        /*   2^23 - 1           */
+    rule minSInt32       => -2147483648                                                                     /*  -2^31               */
+    rule minSInt32Word   =>  115792089237316195423570985008687907853269984665640564039457584007910982156288 /*  -2^31 as evm word   */
+    rule maxSInt32       =>  2147483647                                                                     /*   2^31 - 1           */
+    rule minSInt40       => -549755813888                                                                   /*  -2^39               */
+    rule minSInt40Word   =>  115792089237316195423570985008687907853269984665640564039457584007363373826048 /*  -2^39 as evm word   */
+    rule maxSInt40       =>  549755813887                                                                   /*   2^39 - 1           */
+    rule minSInt48       => -140737488355328                                                                /*  -2^47               */
+    rule minSInt48Word   =>  115792089237316195423570985008687907853269984665640564039457583867175641284608 /*  -2^47 as evm word   */
+    rule maxSInt48       =>  140737488355327                                                                /*   2^47 - 1           */
+    rule minSInt56       => -36028797018963968                                                              /*  -2^55               */
+    rule minSInt56Word   =>  115792089237316195423570985008687907853269984665640564039457547979116110675968 /*  -2^55 as evm word   */
+    rule maxSInt56       =>  36028797018963967                                                              /*   2^55 - 1           */
+    rule minSInt64       => -9223372036854775808                                                            /*  -2^63               */
+    rule minSInt64Word   =>  115792089237316195423570985008687907853269984665640564039448360635876274864128 /*  -2^63 as evm word   */
+    rule maxSInt64       =>  9223372036854775807                                                            /*   2^63 - 1           */
+    rule minSInt72       => -2361183241434822606848                                                         /*  -2^71               */
+    rule minSInt72Word   =>  115792089237316195423570985008687907853269984665640564037096400766478307033088 /*  -2^71 as evm word   */
+    rule maxSInt72       =>  2361183241434822606847                                                         /*   2^71 - 1           */
+    rule minSInt80       => -604462909807314587353088                                                       /*  -2^79               */
+    rule minSInt80Word   =>  115792089237316195423570985008687907853269984665640563434994674200598542286848 /*  -2^79 as evm word   */
+    rule maxSInt80       =>  604462909807314587353087                                                       /*   2^79 - 1           */
+    rule minSInt88       => -154742504910672534362390528                                                    /*  -2^87               */
+    rule minSInt88Word   =>  115792089237316195423570985008687907853269984665640409296952673335378767249408 /*  -2^87 as evm word   */
+    rule maxSInt88       =>  154742504910672534362390527                                                    /*   2^87 - 1           */
+    rule minSInt96       => -39614081257132168796771975168                                                  /*  -2^95               */
+    rule minSInt96Word   =>  115792089237316195423570985008687907853269984665600949958200451839116357664768 /*  -2^95 as evm word   */
+    rule maxSInt96       =>  39614081257132168796771975167                                                  /*   2^95 - 1           */
+    rule minSInt104      => -10141204801825835211973625643008                                               /*  -2^103              */
+    rule minSInt104Word  =>  115792089237316195423570985008687907853269984655499359237631748795939503996928 /*  -2^103 as evm word  */
+    rule maxSInt104      =>  10141204801825835211973625643007                                               /*   2^103 - 1          */
+    rule minSInt112      => -2596148429267413814265248164610048                                             /*  -2^111              */
+    rule minSInt112Word  =>  115792089237316195423570985008687907853269982069492134772043769742664965029888 /*  -2^111 as evm word  */
+    rule maxSInt112      =>  2596148429267413814265248164610047                                             /*   2^111 - 1          */
+    rule minSInt120      => -664613997892457936451903530140172288                                           /*  -2^119              */
+    rule minSInt120Word  =>  115792089237316195423570985008687907853269320051642671581521132104382989467648 /*  -2^119 as evm word  */
+    rule maxSInt120      =>  664613997892457936451903530140172287                                           /*   2^119 - 1          */
+    rule minSInt128      => -170141183460469231731687303715884105728                                        /*  -2^127              */
+    rule minSInt128Word  =>  115792089237316195423570985008687907853099843482180094807725896704197245534208 /*  -2^127 as evm word  */
+    rule maxSInt128      =>  170141183460469231731687303715884105727                                        /*   2^127 as evm word  */
+    rule minSInt136      => -43556142965880123323311949751266331066368                                      /*  -2^135               */
+    rule minSInt136Word  =>  115792089237316195423570985008687907809713841699760440716145634256646798573568 /*  -2^135 as evm word   */
+    rule maxSInt136      =>  43556142965880123323311949751266331066367                                      /*   2^135 - 1           */
+    rule minSInt144      => -11150372599265311570767859136324180752990208                                   /*  -2^143               */
+    rule minSInt144Word  =>  115792089237316195423570985008687896702897385400328993271598447683732376649728 /*  -2^143 as evm word   */
+    rule maxSInt144      =>  11150372599265311570767859136324180752990207                                   /*   2^143 - 1           */
+    rule minSInt152      => -2854495385411919762116571938898990272765493248                                 /*  -2^151               */
+    rule minSInt152Word  =>  115792089237316195423570985008685053357884572745878447467518685017640364146688 /*  -2^151 as evm word   */
+    rule maxSInt152      =>  2854495385411919762116571938898990272765493247                                 /*   2^151 - 1           */
+    rule minSInt160      => -730750818665451459101842416358141509827966271488                               /*  -2^159               */
+    rule minSInt160Word  =>  115792089237316195423570985007957157034604533206538721623099442498085163368448 /*  -2^159 as evm word   */
+    rule maxSInt160      =>  730750818665451459101842416358141509827966271487                               /*   2^159 - 1           */
+    rule minSInt168      => -187072209578355573530071658587684226515959365500928                            /*  -2^167               */
+    rule minSInt168Word  =>  115792089237316195423570984821615698274914411135568905451773357491953764139008 /*  -2^167 as evm word   */
+    rule maxSInt168      =>  187072209578355573530071658587684226515959365500927                            /*   2^167 - 1           */
+    rule minSInt176      => -47890485652059026823698344598447161988085597568237568                          /*  -2^175               */
+    rule minSInt176Word  =>  115792089237316195423570937118202255794243160967295965592295595922315561402368 /*  -2^175 as evm word   */
+    rule maxSInt176      =>  47890485652059026823698344598447161988085597568237567                          /*   2^175 - 1           */
+    rule minSInt184      => -12259964326927110866866776217202473468949912977468817408                       /*  -2^183               */
+    rule minSInt184Word  =>  115792089237316195423558725044360980742403117889423361565988634094935660822528 /*  -2^183 as evm word   */
+    rule maxSInt184      =>  12259964326927110866866776217202473468949912977468817407                       /*   2^183 - 1           */
+    rule minSInt192      => -3138550867693340381917894711603833208051177722232017256448                     /*  -2^191               */
+    rule minSInt192Word  =>  115792089237316195420432434140994567471352089954036730831406406285681112383488 /*  -2^191 as evm word   */
+    rule maxSInt192      =>  3138550867693340381917894711603833208051177722232017256447                     /*   2^191 - 1           */
+    rule minSInt200      => -803469022129495137770981046170581301261101496891396417650688                   /*  -2^199               */
+    rule minSInt200Word  =>  115792089237316194620101962879192770082288938495059262778356087116516711989248 /*  -2^199 as evm word   */
+    rule maxSInt200      =>  803469022129495137770981046170581301261101496891396417650687                   /*   2^199 - 1           */
+    rule minSInt208      => -205688069665150755269371147819668813122841983204197482918576128                /*  -2^207                */
+    rule minSInt208Word  =>  115792089237315989735501319857932638482122164996827441197474379810430211063808 /*  -2^207  as evm word   */
+    rule maxSInt208      =>  205688069665150755269371147819668813122841983204197482918576127                /*   2^207  - 1           */
+    rule minSInt216      => -52656145834278593348959013841835216159447547700274555627155488768              /*  -2^215                */
+    rule minSInt216Word  =>  115792089237263539277736706415338948839428149449481116491757309452285974151168 /*  -2^215  as evm word   */
+    rule maxSInt216      =>  52656145834278593348959013841835216159447547700274555627155488767              /*   2^215  - 1           */
+    rule minSInt224      => -13479973333575319897333507543509815336818572211270286240551805124608           /*  -2^223               */
+    rule minSInt224Word  =>  115792089223836222089995665111354400309760169328821991828187297767361324515328 /*  -2^223  as evm word  */
+    rule maxSInt224      =>  13479973333575319897333507543509815336818572211270286240551805124607           /*   2^223  - 1          */
+    rule minSInt232      => -3450873173395281893717377931138512726225554486085193277581262111899648         /*  -2^231               */
+    rule minSInt232Word  =>  115792085786443022028289091291309976714757258440086077954264306426651017740288 /*  -2^231  as evm word  */
+    rule maxSInt232      =>  3450873173395281893717377931138512726225554486085193277581262111899647         /*   2^231  - 1          */
+    rule minSInt240      => -883423532389192164791648750371459257913741948437809479060803100646309888       /*  -2^239               */
+    rule minSInt240Word  =>  115791205813783806231406193359937536394012070923692126229978523204812483330048 /*  -2^239  as evm word  */
+    rule maxSInt240      =>  883423532389192164791648750371459257913741948437809479060803100646309887       /*   2^239  - 1          */
+    rule minSInt248      => -226156424291633194186662080095093570025917938800079226639565593765455331328    /*  -2^247               */
+    rule minSInt248Word  =>  115565932813024562229384322928592814283244066726840484812818018414147674308608 /*  -2^247  as evm word  */
+    rule maxSInt248      =>  226156424291633194186662080095093570025917938800079226639565593765455331327    /*   2^247  - 1          */
+    rule minSInt256      => -57896044618658097711785492504343953926634992332820282019728792003956564819968  /*  -2^255               */
+    rule minSInt256Word  =>  57896044618658097711785492504343953926634992332820282019728792003956564819968  /*  -2^255  as evm word  */
+    rule maxSInt256      =>  57896044618658097711785492504343953926634992332820282019728792003956564819967  /*   2^255  - 1          */
+
+    rule minSFixed128x10 => -1701411834604692317316873037158841057280000000000                              /* (-2^487    ) * 10^10 */
+    rule maxSFixed128x10 =>  1701411834604692317316873037158841057270000000000                              /* ( 2^487 - 1) * 10^10 */
+
+    rule minUInt5        =>  0
+    rule maxUInt5        =>  31                                                                             /*   2^5 - 1  */
+    rule minUInt8        =>  0
+    rule maxUInt8        =>  255                                                                            /*   2^8 - 1  */
+    rule minUInt16       =>  0
+    rule maxUInt16       =>  65535                                                                          /*   2^16 - 1  */
+    rule minUInt24       =>  0
+    rule maxUInt24       =>  16777215                                                                       /*   2^24 - 1  */
+    rule minUInt32       =>  0
+    rule maxUInt32       =>  4294967295                                                                     /*   2^32 - 1  */
+    rule minUInt40       =>  0
+    rule maxUInt40       =>  1099511627775                                                                  /*   2^40 - 1  */
+    rule minUInt48       =>  0
+    rule maxUInt48       =>  281474976710655                                                                /*   2^48 - 1  */
+    rule minUInt56       =>  0
+    rule maxUInt56       =>  72057594037927935                                                              /*   2^56 - 1  */
+    rule minUInt64       =>  0
+    rule maxUInt64       =>  18446744073709551615                                                           /*   2^64 - 1  */
+    rule minUInt72       =>  0
+    rule maxUInt72       =>  4722366482869645213695                                                         /*   2^72 - 1  */
+    rule minUInt80       =>  0
+    rule maxUInt80       =>  1208925819614629174706175                                                      /*   2^80 - 1  */
+    rule minUInt88       =>  0
+    rule maxUInt88       =>  309485009821345068724781055                                                    /*   2^88 - 1  */
+    rule minUInt96       =>  0
+    rule maxUInt96       =>  79228162514264337593543950335                                                  /*   2^96 - 1  */
+    rule minUInt104      =>  0
+    rule maxUInt104      =>  20282409603651670423947251286015                                               /*   2^104 - 1  */
+    rule minUInt112      =>  0
+    rule maxUInt112      =>  5192296858534827628530496329220095                                             /*   2^112 - 1  */
+    rule minUInt120      =>  0
+    rule maxUInt120      =>  1329227995784915872903807060280344575                                          /*   2^120 - 1  */
+    rule minUInt128      =>  0
+    rule maxUInt128      =>  340282366920938463463374607431768211455                                        /*   2^128 - 1  */
+    rule minUInt136      =>  0
+    rule maxUInt136      =>  87112285931760246646623899502532662132735                                      /*   2^136 - 1  */
+    rule minUInt144      =>  0
+    rule maxUInt144      =>  22300745198530623141535718272648361505980415                                   /*   2^144 - 1  */
+    rule minUInt152      =>  0
+    rule maxUInt152      =>  5708990770823839524233143877797980545530986495                                 /*   2^152 - 1  */
+    rule minUInt160      =>  0
+    rule maxUInt160      =>  1461501637330902918203684832716283019655932542975                              /*   2^160 - 1  */
+    rule minUInt168      =>  0
+    rule maxUInt168      =>  374144419156711147060143317175368453031918731001855                            /*   2^168 - 1  */
+    rule minUInt176      =>  0
+    rule maxUInt176      =>  95780971304118053647396689196894323976171195136475135                          /*   2^176 - 1  */
+    rule minUInt184      =>  0
+    rule maxUInt184      =>  24519928653854221733733552434404946937899825954937634815                       /*   2^184 - 1  */
+    rule minUInt192      =>  0
+    rule maxUInt192      =>  6277101735386680763835789423207666416102355444464034512895                     /*   2^192 - 1  */
+    rule minUInt200      =>  0
+    rule maxUInt200      =>  1606938044258990275541962092341162602522202993782792835301375                  /*   2^200 - 1  */
+    rule minUInt208      =>  0
+    rule maxUInt208      =>  411376139330301510538742295639337626245683966408394965837152255                /*   2^208 - 1  */
+    rule minUInt216      =>  0
+    rule maxUInt216      =>  105312291668557186697918027683670432318895095400549111254310977535             /*   2^216 - 1  */
+    rule minUInt224      =>  0
+    rule maxUInt224      =>  26959946667150639794667015087019630673637144422540572481103610249215           /*   2^224 - 1  */
+    rule minUInt232      =>  0
+    rule maxUInt232      =>  6901746346790563787434755862277025452451108972170386555162524223799295         /*   2^232 - 1  */
+    rule minUInt240      =>  0
+    rule maxUInt240      =>  1766847064778384329583297500742918515827483896875618958121606201292619775      /*   2^240 - 1  */
+    rule minUInt248      =>  0
+    rule maxUInt248      =>  452312848583266388373324160190187140051835877600158453279131187530910662655    /*   2^248 - 1  */
+    rule minUInt256      =>  0
+    rule maxUInt256      =>  115792089237316195423570985008687907853269984665640564039457584007913129639935 /*   2^256 - 1  */
+
+    rule minUFixed128x10 =>  0
+    rule maxUFixed128x10 =>  3402823669209384634633746074317682114550000000000                              /* ( 2^128 - 1) * 10^10 */
+
+    syntax Int ::= "notMaxUInt5"   [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 */
+                 | "notMaxUInt8"   [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 */
+                 | "notMaxUInt16"  [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 */
+                 | "notMaxUInt32"  [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 */
+                 | "notMaxUInt64"  [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 */
+                 | "notMaxUInt96"  [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 */
+                 | "notMaxUInt128" [alias] /* FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 */
+                 | "notMaxUInt160" [alias] /* FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 */
+                 | "notMaxUInt192" [alias] /* FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 */
+                 | "notMaxUInt208" [alias] /* FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 */
+                 | "notMaxUInt224" [alias] /* FFFFFFFF00000000000000000000000000000000000000000000000000000000 */
+                 | "notMaxUInt240" [alias] /* FFFF000000000000000000000000000000000000000000000000000000000000 */
+                 | "notMaxUInt248" [alias] /* FF00000000000000000000000000000000000000000000000000000000000000 */
+ // -------------------------------------------------------------------------------------------------------------
+    rule notMaxUInt5   => 115792089237316195423570985008687907853269984665640564039457584007913129639904
+    rule notMaxUInt8   => 115792089237316195423570985008687907853269984665640564039457584007913129639680
+    rule notMaxUInt16  => 115792089237316195423570985008687907853269984665640564039457584007913129574400
+    rule notMaxUInt32  => 115792089237316195423570985008687907853269984665640564039457584007908834672640
+    rule notMaxUInt64  => 115792089237316195423570985008687907853269984665640564039439137263839420088320
+    rule notMaxUInt96  => 115792089237316195423570985008687907853269984665561335876943319670319585689600
+    rule notMaxUInt128 => 115792089237316195423570985008687907852929702298719625575994209400481361428480
+    rule notMaxUInt160 => 115792089237316195423570985007226406215939081747436879206741300988257197096960
+    rule notMaxUInt192 => 115792089237316195417293883273301227089434195242432897623355228563449095127040
+    rule notMaxUInt208 => 115792089237315784047431654707177369110974345328014318355491175612947292487680
+    rule notMaxUInt224 => 115792089210356248756420345214020892766250353992003419616917011526809519390720
+    rule notMaxUInt240 => 115790322390251417039241401711187164934754157181743688420499462401711837020160
+    rule notMaxUInt248 => 115339776388732929035197660848497720713218148788040405586178452820382218977280
+
+    syntax Int ::= "eth"         [macro]
+                 | "maxBlockNum" [macro] /* 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF == (2 ^ 256) - (2 ^ 255) - 1 */
+ // ----------------------------------------------------------------------------------------------------------------------------------------
+    rule eth         => 1000000000000000000
+    rule maxBlockNum => 57896044618658097711785492504343953926634992332820282019728792003956564819967
+
+

Range of types

+
    syntax Bool ::= #rangeBool     ( Int )             [klabel(#rangeBool), alias]
+                  | #rangeSInt     ( Int , Int )       [klabel(#rangeSInt), alias]
+                  | #rangeUInt     ( Int , Int )       [klabel(#rangeUInt), alias]
+                  | #rangeSFixed   ( Int , Int , Int ) [klabel(#rangeSFixed), alias]
+                  | #rangeUFixed   ( Int , Int , Int ) [klabel(#rangeUFixed), alias]
+                  | #rangeAddress  ( Int )             [klabel(#rangeAddress), alias]
+                  | #rangeBytes    ( Int , Int )       [klabel(#rangeBytes), alias]
+                  | #rangeNonce    ( Int )             [klabel(#rangeNonce), alias]
+                  | #rangeSmall    ( Int )             [klabel(#rangeSmall), alias]
+                  | #rangeBlockNum ( Int )             [klabel(#rangeBlockNum), alias]
+ // ----------------------------------------------------------------------------------
+    rule #rangeBool    (            X ) => X ==Int 0 orBool X ==Int 1
+
+    rule #rangeSInt    (   8 ,      X ) => #range ( minSInt8        <= X <= maxSInt8        )
+    rule #rangeSInt    (  16 ,      X ) => #range ( minSInt16       <= X <= maxSInt16       )
+    rule #rangeSInt    (  24 ,      X ) => #range ( minSInt24       <= X <= maxSInt24       )
+    rule #rangeSInt    (  32 ,      X ) => #range ( minSInt32       <= X <= maxSInt32       )
+    rule #rangeSInt    (  40 ,      X ) => #range ( minSInt40       <= X <= maxSInt40       )
+    rule #rangeSInt    (  48 ,      X ) => #range ( minSInt48       <= X <= maxSInt48       )
+    rule #rangeSInt    (  56 ,      X ) => #range ( minSInt56       <= X <= maxSInt56       )
+    rule #rangeSInt    (  64 ,      X ) => #range ( minSInt64       <= X <= maxSInt64       )
+    rule #rangeSInt    (  72 ,      X ) => #range ( minSInt72       <= X <= maxSInt72       )
+    rule #rangeSInt    (  80 ,      X ) => #range ( minSInt80       <= X <= maxSInt80       )
+    rule #rangeSInt    (  88 ,      X ) => #range ( minSInt88       <= X <= maxSInt88       )
+    rule #rangeSInt    (  96 ,      X ) => #range ( minSInt96       <= X <= maxSInt96       )
+    rule #rangeSInt    ( 104 ,      X ) => #range ( minSInt104      <= X <= maxSInt104      )
+    rule #rangeSInt    ( 112 ,      X ) => #range ( minSInt112      <= X <= maxSInt112      )
+    rule #rangeSInt    ( 120 ,      X ) => #range ( minSInt120      <= X <= maxSInt120      )
+    rule #rangeSInt    ( 128 ,      X ) => #range ( minSInt128      <= X <= maxSInt128      )
+    rule #rangeSInt    ( 136 ,      X ) => #range ( minSInt136      <= X <= maxSInt136      )
+    rule #rangeSInt    ( 144 ,      X ) => #range ( minSInt144      <= X <= maxSInt144      )
+    rule #rangeSInt    ( 152 ,      X ) => #range ( minSInt152      <= X <= maxSInt152      )
+    rule #rangeSInt    ( 160 ,      X ) => #range ( minSInt160      <= X <= maxSInt160      )
+    rule #rangeSInt    ( 168 ,      X ) => #range ( minSInt168      <= X <= maxSInt168      )
+    rule #rangeSInt    ( 176 ,      X ) => #range ( minSInt176      <= X <= maxSInt176      )
+    rule #rangeSInt    ( 184 ,      X ) => #range ( minSInt184      <= X <= maxSInt184      )
+    rule #rangeSInt    ( 192 ,      X ) => #range ( minSInt192      <= X <= maxSInt192      )
+    rule #rangeSInt    ( 200 ,      X ) => #range ( minSInt200      <= X <= maxSInt200      )
+    rule #rangeSInt    ( 208 ,      X ) => #range ( minSInt208      <= X <= maxSInt208      )
+    rule #rangeSInt    ( 216 ,      X ) => #range ( minSInt216      <= X <= maxSInt216      )
+    rule #rangeSInt    ( 224 ,      X ) => #range ( minSInt224      <= X <= maxSInt224      )
+    rule #rangeSInt    ( 232 ,      X ) => #range ( minSInt232      <= X <= maxSInt232      )
+    rule #rangeSInt    ( 240 ,      X ) => #range ( minSInt240      <= X <= maxSInt240      )
+    rule #rangeSInt    ( 248 ,      X ) => #range ( minSInt248      <= X <= maxSInt248      )
+    rule #rangeSInt    ( 256 ,      X ) => #range ( minSInt256      <= X <= maxSInt256      )
+
+    rule #rangeUInt    (   5 ,      X ) => #range ( minUInt5        <= X <  pow5            )
+    rule #rangeUInt    (   8 ,      X ) => #range ( minUInt8        <= X <  pow8            )
+    rule #rangeUInt    (  16 ,      X ) => #range ( minUInt16       <= X <  pow16           )
+    rule #rangeUInt    (  24 ,      X ) => #range ( minUInt24       <= X <  pow24           )
+    rule #rangeUInt    (  32 ,      X ) => #range ( minUInt32       <= X <  pow32           )
+    rule #rangeUInt    (  40 ,      X ) => #range ( minUInt40       <= X <  pow40           )
+    rule #rangeUInt    (  48 ,      X ) => #range ( minUInt48       <= X <  pow48           )
+    rule #rangeUInt    (  56 ,      X ) => #range ( minUInt56       <= X <  pow56           )
+    rule #rangeUInt    (  64 ,      X ) => #range ( minUInt64       <= X <  pow64           )
+    rule #rangeUInt    (  72 ,      X ) => #range ( minUInt72       <= X <  pow72           )
+    rule #rangeUInt    (  80 ,      X ) => #range ( minUInt80       <= X <  pow80           )
+    rule #rangeUInt    (  88 ,      X ) => #range ( minUInt88       <= X <  pow88           )
+    rule #rangeUInt    (  96 ,      X ) => #range ( minUInt96       <= X <  pow96           )
+    rule #rangeUInt    ( 104 ,      X ) => #range ( minUInt104      <= X <  pow104          )
+    rule #rangeUInt    ( 112 ,      X ) => #range ( minUInt112      <= X <  pow112          )
+    rule #rangeUInt    ( 120 ,      X ) => #range ( minUInt120      <= X <  pow120          )
+    rule #rangeUInt    ( 128 ,      X ) => #range ( minUInt128      <= X <  pow128          )
+    rule #rangeUInt    ( 136 ,      X ) => #range ( minUInt136      <= X <  pow136          )
+    rule #rangeUInt    ( 144 ,      X ) => #range ( minUInt144      <= X <  pow144          )
+    rule #rangeUInt    ( 152 ,      X ) => #range ( minUInt152      <= X <  pow152          )
+    rule #rangeUInt    ( 160 ,      X ) => #range ( minUInt160      <= X <  pow160          )
+    rule #rangeUInt    ( 168 ,      X ) => #range ( minUInt168      <= X <  pow168          )
+    rule #rangeUInt    ( 176 ,      X ) => #range ( minUInt176      <= X <  pow176          )
+    rule #rangeUInt    ( 184 ,      X ) => #range ( minUInt184      <= X <  pow184          )
+    rule #rangeUInt    ( 192 ,      X ) => #range ( minUInt192      <= X <  pow192          )
+    rule #rangeUInt    ( 200 ,      X ) => #range ( minUInt200      <= X <  pow200          )
+    rule #rangeUInt    ( 208 ,      X ) => #range ( minUInt208      <= X <  pow208          )
+    rule #rangeUInt    ( 216 ,      X ) => #range ( minUInt216      <= X <  pow216          )
+    rule #rangeUInt    ( 224 ,      X ) => #range ( minUInt224      <= X <  pow224          )
+    rule #rangeUInt    ( 232 ,      X ) => #range ( minUInt232      <= X <  pow232          )
+    rule #rangeUInt    ( 240 ,      X ) => #range ( minUInt240      <= X <  pow240          )
+    rule #rangeUInt    ( 248 ,      X ) => #range ( minUInt248      <= X <  pow248          )
+    rule #rangeUInt    ( 256 ,      X ) => #range ( minUInt256      <= X <  pow256          )
+
+    rule #rangeSFixed   ( 128 , 10 , X ) => #range ( minSFixed128x10 <= X <= maxSFixed128x10 )
+    rule #rangeUFixed   ( 128 , 10 , X ) => #range ( minUFixed128x10 <= X <= maxUFixed128x10 )
+    rule #rangeAddress  (            X ) => #range ( minUInt160      <= X <  pow160          )
+    rule #rangeBytes    (   N ,      X ) => #range ( 0               <= X <  1 <<Byte N      )
+    rule #rangeNonce    (   X          ) => #range ( 0               <= X < maxUInt64        )
+    rule #rangeSmall    (   X          ) => #range ( 0               <= X < 10               )
+    rule #rangeBlockNum (   X          ) => #range ( 0               <= X <= maxBlockNum     )
+
+    syntax Bool ::= "#range" "(" Int "<"  Int "<"  Int ")" [alias]
+                  | "#range" "(" Int "<"  Int "<=" Int ")" [alias]
+                  | "#range" "(" Int "<=" Int "<"  Int ")" [alias]
+                  | "#range" "(" Int "<=" Int "<=" Int ")" [alias]
+ // --------------------------------------------------------------
+    rule #range ( LB <  X <  UB ) => LB  <Int X andBool X  <Int UB
+    rule #range ( LB <  X <= UB ) => LB  <Int X andBool X <=Int UB
+    rule #range ( LB <= X <  UB ) => LB <=Int X andBool X  <Int UB
+    rule #range ( LB <= X <= UB ) => LB <=Int X andBool X <=Int UB
+
+
    +
  • chop interprets an integer modulo 2^256.
  • +
+
    syntax Int ::= chop ( Int ) [klabel(chop), function, total, smtlib(chop)]
+ // -------------------------------------------------------------------------
+    rule chop ( I:Int ) => I modInt pow256 [concrete, smt-lemma]
+
+
    +
  • _<<Byte_ shifts an integer 8 bits to the left.
  • +
  • _>>Byte_ shifts an integer 8 bits to the right.
  • +
+
    syntax Int ::= Int "<<Byte" Int [function]
+                 | Int ">>Byte" Int [function]
+ // ------------------------------------------
+    rule N <<Byte M => N <<Int (8 *Int M)
+    rule N >>Byte M => N >>Int (8 *Int M)
+
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/kevm-pyk/src/kevm_pyk/py.typed b/kevm-pyk/src/kevm_pyk/py.typed deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/kevm-pyk/src/kevm_pyk/utils.py b/kevm-pyk/src/kevm_pyk/utils.py deleted file mode 100644 index ca5047a61b..0000000000 --- a/kevm-pyk/src/kevm_pyk/utils.py +++ /dev/null @@ -1,471 +0,0 @@ -from __future__ import annotations - -import logging -from abc import ABC, abstractmethod -from contextlib import contextmanager -from dataclasses import dataclass -from pathlib import Path -from typing import TYPE_CHECKING - -from pyk.cterm import CTerm, CTermSymbolic -from pyk.kast import Atts -from pyk.kast.inner import KApply, KInner, KRewrite, KVariable, Subst -from pyk.kast.manip import ( - abstract_term_safely, - bottom_up, - free_vars, - is_anon_var, - set_cell, - split_config_and_constraints, - split_config_from, -) -from pyk.kast.outer import KSequence -from pyk.kcfg import KCFGExplore -from pyk.kore.rpc import KoreClient, KoreExecLogFormat, TransportType, kore_server -from pyk.ktool import TypeInferenceMode -from pyk.proof import APRProof, APRProver -from pyk.proof.implies import EqualityProof, ImpliesProver -from pyk.proof.proof import parallel_advance_proof -from pyk.utils import single - -if TYPE_CHECKING: - from collections.abc import Callable, Collection, Iterable, Iterator - from typing import Final, TypeVar - - from pyk.kast.outer import KClaim, KDefinition - from pyk.kcfg import KCFG - from pyk.kcfg.semantics import KCFGSemantics - from pyk.kore.rpc import FallbackReason - from pyk.ktool.kprint import KPrint - from pyk.ktool.kprove import KProve - from pyk.proof.proof import Proof - from pyk.utils import BugReport - - T1 = TypeVar('T1') - T2 = TypeVar('T2') - -_LOGGER: Final = logging.getLogger(__name__) - - -def claim_dependency_dict(claims: Iterable[KClaim], spec_module_name: str | None = None) -> dict[str, list[str]]: - claims_by_label = {claim.label: claim for claim in claims} - graph: dict[str, list[str]] = {} - for claim in claims: - graph[claim.label] = [] # noqa: B909 - for dependency in claim.dependencies: - if dependency not in claims_by_label: - if spec_module_name is None: - raise ValueError(f'Could not find dependency and no spec_module provided: {dependency}') - else: - spec_dependency = f'{spec_module_name}.{dependency}' - if spec_dependency not in claims_by_label: - raise ValueError(f'Could not find dependency: {dependency} or {spec_dependency}') - dependency = spec_dependency - graph[claim.label].append(dependency) - return graph - - -def get_apr_proof_for_spec( - kprove: KProve, - spec_file: Path, - save_directory: Path | None, - spec_module_name: str | None = None, - include_dirs: Iterable[Path] = (), - md_selector: str | None = None, - claim_labels: Iterable[str] | None = None, - exclude_claim_labels: Iterable[str] | None = None, -) -> APRProof: - if save_directory is None: - save_directory = Path('.') - _LOGGER.info(f'Using default save_directory: {save_directory}') - - _LOGGER.info(f'Extracting claim from file: {spec_file}') - claim = single( - kprove.get_claims( - spec_file, - spec_module_name=spec_module_name, - include_dirs=include_dirs, - md_selector=md_selector, - claim_labels=claim_labels, - exclude_claim_labels=exclude_claim_labels, - type_inference_mode=TypeInferenceMode.SIMPLESUB, - ) - ) - - apr_proof = APRProof.read_proof_data(save_directory, claim.label) - return apr_proof - - -@dataclass -class RunProverParams: - execute_depth: int - terminal_rules: Iterable[str] - cut_point_rules: Iterable[str] - counterexample_info: bool - always_check_subsumption: bool - fast_check_subsumption: bool - - -class APRProofStrategy(ABC): - params: RunProverParams - - def __init__(self, params: RunProverParams) -> None: - self.params = params - - @abstractmethod - def prove(self, proof: APRProof, max_iterations: int | None = None, fail_fast: bool = False) -> None: ... - - -class ParallelStrategy(APRProofStrategy): - _create_kcfg_explore: Callable[[], KCFGExplore] - _max_workers = 1 - - def __init__( - self, - create_kcfg_explore: Callable[[], KCFGExplore], - params: RunProverParams, - max_workers: int = 1, - ) -> None: - self._create_kcfg_explore = create_kcfg_explore - self._max_workers = max_workers - super().__init__(params) - - def prove(self, proof: APRProof, max_iterations: int | None = None, fail_fast: bool = False) -> None: - def create_prover() -> APRProver: - return APRProver( - self._create_kcfg_explore(), - execute_depth=self.params.execute_depth, - terminal_rules=self.params.terminal_rules, - cut_point_rules=self.params.cut_point_rules, - counterexample_info=self.params.counterexample_info, - always_check_subsumption=self.params.always_check_subsumption, - fast_check_subsumption=self.params.fast_check_subsumption, - ) - - parallel_advance_proof( - proof=proof, - create_prover=create_prover, - max_iterations=max_iterations, - fail_fast=fail_fast, - max_workers=self._max_workers, - ) - - -class SequentialStrategy(APRProofStrategy): - _kcfg_explore: KCFGExplore - - def __init__(self, kcfg_explore: KCFGExplore, params: RunProverParams) -> None: - self._kcfg_explore = kcfg_explore - super().__init__(params) - - def prove(self, proof: APRProof, max_iterations: int | None = None, fail_fast: bool = False) -> None: - prover = APRProver( - self._kcfg_explore, - execute_depth=self.params.execute_depth, - terminal_rules=self.params.terminal_rules, - cut_point_rules=self.params.cut_point_rules, - counterexample_info=self.params.counterexample_info, - always_check_subsumption=self.params.always_check_subsumption, - fast_check_subsumption=self.params.fast_check_subsumption, - ) - prover.advance_proof(fail_fast=fail_fast, max_iterations=max_iterations, proof=proof) - - -def select_apr_strategy( - params: RunProverParams, - max_frontier_parallel: int, - kcfg_explore: KCFGExplore | None = None, - create_kcfg_explore: Callable[[], KCFGExplore] | None = None, -) -> APRProofStrategy: - strategy: APRProofStrategy - - if max_frontier_parallel > 1 and create_kcfg_explore is not None: - strategy = ParallelStrategy( - max_workers=max_frontier_parallel, - create_kcfg_explore=create_kcfg_explore, - params=params, - ) - elif kcfg_explore is not None or create_kcfg_explore is not None: - if kcfg_explore is not None: - _kcfg_explore = kcfg_explore - else: - assert create_kcfg_explore is not None - _kcfg_explore = create_kcfg_explore() - strategy = SequentialStrategy( - kcfg_explore=_kcfg_explore, - params=params, - ) - else: - raise ValueError( - 'Must provide at least one of kcfg_explore or create_kcfg_explore, or provide create_kcfg_explore if using max_frontier_parallel > 1.' - ) - return strategy - - -def run_prover( - proof: Proof, - kcfg_explore: KCFGExplore | None = None, - create_kcfg_explore: Callable[[], KCFGExplore] | None = None, - max_depth: int = 1000, - max_iterations: int | None = None, - cut_point_rules: Iterable[str] = (), - terminal_rules: Iterable[str] = (), - fail_fast: bool = False, - counterexample_info: bool = False, - always_check_subsumption: bool = False, - fast_check_subsumption: bool = False, - max_frontier_parallel: int = 1, -) -> bool: - prover: APRProver | ImpliesProver - try: - if type(proof) is APRProof: - strategy = select_apr_strategy( - create_kcfg_explore=create_kcfg_explore, - kcfg_explore=kcfg_explore, - max_frontier_parallel=max_frontier_parallel, - params=RunProverParams( - always_check_subsumption=always_check_subsumption, - counterexample_info=counterexample_info, - cut_point_rules=cut_point_rules, - execute_depth=max_depth, - fast_check_subsumption=fast_check_subsumption, - terminal_rules=terminal_rules, - ), - ) - strategy.prove(fail_fast=fail_fast, max_iterations=max_iterations, proof=proof) - - elif type(proof) is EqualityProof: - if kcfg_explore is not None: - prover = ImpliesProver(proof, kcfg_explore=kcfg_explore) - elif create_kcfg_explore is not None: - prover = ImpliesProver(proof, kcfg_explore=create_kcfg_explore()) - else: - raise ValueError('Must provide at least one of kcfg_explore or create_kcfg_explore for EqualityProof.') - prover.advance_proof(proof) - else: - raise ValueError(f'Do not know how to build prover for proof: {proof}') - - except Exception as e: - if type(proof) is APRProof: - proof.error_info = e - _LOGGER.error(f'Proof crashed: {proof.id}\n{e}', exc_info=True) - return False - - _LOGGER.info(f'Proof status: {proof.status}') - return proof.passed - - -def print_failure_info(proof: Proof, kcfg_explore: KCFGExplore, counterexample_info: bool = False) -> list[str]: - if type(proof) is APRProof: - target = proof.kcfg.node(proof.target) - - res_lines: list[str] = [] - - num_pending = len(proof.pending) - num_failing = len(proof.failing) - res_lines.append( - f'{num_pending + num_failing} Failure nodes. ({num_pending} pending and {num_failing} failing)' - ) - if num_pending > 0: - res_lines.append('') - res_lines.append('Pending nodes:') - for node in proof.pending: - res_lines.append('') - res_lines.append(f'ID: {node.id}:') - if num_failing > 0: - res_lines.append('') - res_lines.append('Failing nodes:') - for node in proof.failing: - res_lines.append('') - res_lines.append(f' Node id: {str(node.id)}') - - node_cterm, _ = kcfg_explore.cterm_symbolic.simplify(node.cterm) - target_cterm, _ = kcfg_explore.cterm_symbolic.simplify(target.cterm) - - res_lines.append(' Failure reason:') - _, reason = kcfg_explore.implication_failure_reason(node_cterm, target_cterm) - res_lines += [f' {line}' for line in reason.split('\n')] - - res_lines.append(' Path condition:') - res_lines += [f' {kcfg_explore.pretty_print(proof.path_constraints(node.id))}'] - if counterexample_info: - res_lines.extend(print_model(node, kcfg_explore)) - - res_lines.append('') - res_lines.append( - 'Join the Runtime Verification Discord server for support: https://discord.com/invite/CurfmXNtbN' - ) - - return res_lines - elif type(proof) is EqualityProof: - return ['EqualityProof failed.'] - else: - raise ValueError('Unknown proof type.') - - -def print_model(node: KCFG.Node, kcfg_explore: KCFGExplore) -> list[str]: - res_lines: list[str] = [] - result_subst = kcfg_explore.cterm_symbolic.get_model(node.cterm) - if type(result_subst) is Subst: - res_lines.append(' Model:') - for var, term in result_subst.to_dict().items(): - term_kast = KInner.from_dict(term) - res_lines.append(f' {var} = {kcfg_explore.pretty_print(term_kast)}') - else: - res_lines.append(' Failed to generate a model.') - - return res_lines - - -def arg_pair_of( - fst_type: Callable[[str], T1], snd_type: Callable[[str], T2], delim: str = ',' -) -> Callable[[str], tuple[T1, T2]]: - def parse(s: str) -> tuple[T1, T2]: - elems = s.split(delim) - length = len(elems) - if length != 2: - raise ValueError(f'Expected 2 elements, found {length}') - return fst_type(elems[0]), snd_type(elems[1]) - - return parse - - -def byte_offset_to_lines(lines: Iterable[str], byte_start: int, byte_width: int) -> tuple[list[str], int, int]: - text_lines = [] - line_start = 0 - for line in lines: - if len(line) < byte_start: - byte_start -= len(line) + 1 - line_start += 1 - else: - break - line_end = line_start - for line in list(lines)[line_start:]: - if byte_start + byte_width < 0: - break - else: - text_lines.append(line) - byte_width -= len(line) + 1 - line_end += 1 - return (text_lines, line_start, line_end) - - -def KDefinition__expand_macros(defn: KDefinition, term: KInner) -> KInner: # noqa: N802 - def _expand_macros(_term: KInner) -> KInner: - if type(_term) is KApply: - prod = defn.symbols[_term.label.name] - if any(key in prod.att for key in [Atts.MACRO, Atts.ALIAS, Atts.MACRO_REC, Atts.ALIAS_REC]): - for r in defn.macro_rules: - assert type(r.body) is KRewrite - _new_term = r.body.apply_top(_term) - if _new_term != _term: - _term = _new_term - break - return _term - - old_term = None - while term != old_term: - old_term = term - term = bottom_up(_expand_macros, term) - - return term - - -def abstract_cell_vars(cterm: KInner, keep_vars: Collection[KVariable] = ()) -> KInner: - state, _ = split_config_and_constraints(cterm) - config, subst = split_config_from(state) - for s in subst: - if type(subst[s]) is KVariable and not is_anon_var(subst[s]) and subst[s] not in keep_vars: - subst[s] = abstract_term_safely(KVariable('_'), base_name=s) # noqa: B909 - return Subst(subst)(config) - - -def ensure_ksequence_on_k_cell(cterm: CTerm) -> CTerm: - k_cell = cterm.cell('K_CELL') - if type(k_cell) is not KSequence: - _LOGGER.info('Introducing artificial KSequence on cell.') - return CTerm.from_kast(set_cell(cterm.kast, 'K_CELL', KSequence([k_cell]))) - return cterm - - -def constraints_for(vars: list[str], constraints: Iterable[KInner]) -> Iterable[KInner]: - accounts_constraints = [] - constraints_changed = True - while constraints_changed: - constraints_changed = False - for constraint in constraints: - if constraint not in accounts_constraints and any(v in vars for v in free_vars(constraint)): - accounts_constraints.append(constraint) - vars.extend(free_vars(constraint)) - constraints_changed = True - return accounts_constraints - - -@contextmanager -def legacy_explore( - kprint: KPrint, - *, - kcfg_semantics: KCFGSemantics | None = None, - id: str | None = None, - port: int | None = None, - kore_rpc_command: str | Iterable[str] | None = None, - llvm_definition_dir: Path | None = None, - smt_timeout: int | None = None, - smt_retry_limit: int | None = None, - smt_tactic: str | None = None, - bug_report: BugReport | None = None, - haskell_log_format: KoreExecLogFormat = KoreExecLogFormat.ONELINE, - haskell_log_entries: Iterable[str] = (), - haskell_threads: int | None = None, - log_axioms_file: Path | None = None, - trace_rewrites: bool = False, - start_server: bool = True, - maude_port: int | None = None, - fallback_on: Iterable[FallbackReason] | None = None, - interim_simplification: int | None = None, - no_post_exec_simplify: bool = False, -) -> Iterator[KCFGExplore]: - if start_server: - # Old way of handling KCFGExplore, to be removed - with kore_server( - definition_dir=kprint.definition_dir, - llvm_definition_dir=llvm_definition_dir, - module_name=kprint.main_module, - port=port, - command=kore_rpc_command, - bug_report=bug_report, - smt_timeout=smt_timeout, - smt_retry_limit=smt_retry_limit, - smt_tactic=smt_tactic, - haskell_log_format=haskell_log_format, - haskell_log_entries=haskell_log_entries, - haskell_threads=haskell_threads, - log_axioms_file=log_axioms_file, - fallback_on=fallback_on, - interim_simplification=interim_simplification, - no_post_exec_simplify=no_post_exec_simplify, - ) as server: - with KoreClient('localhost', server.port, bug_report=bug_report, bug_report_id=id) as client: - cterm_symbolic = CTermSymbolic( - client, kprint.definition, kprint.kompiled_kore, trace_rewrites=trace_rewrites - ) - yield KCFGExplore(cterm_symbolic, kcfg_semantics=kcfg_semantics, id=id) - else: - if port is None: - raise ValueError('Missing port with start_server=False') - if maude_port is None: - dispatch = None - else: - dispatch = { - 'execute': [('localhost', maude_port, TransportType.HTTP)], - 'simplify': [('localhost', maude_port, TransportType.HTTP)], - 'add-module': [ - ('localhost', maude_port, TransportType.HTTP), - ('localhost', port, TransportType.SINGLE_SOCKET), - ], - } - with KoreClient('localhost', port, bug_report=bug_report, bug_report_id=id, dispatch=dispatch) as client: - cterm_symbolic = CTermSymbolic( - client, kprint.definition, kprint.kompiled_kore, trace_rewrites=trace_rewrites - ) - yield KCFGExplore(cterm_symbolic, kcfg_semantics=kcfg_semantics, id=id) diff --git a/kevm-pyk/src/tests/__init__.py b/kevm-pyk/src/tests/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/kevm-pyk/src/tests/conftest.py b/kevm-pyk/src/tests/conftest.py deleted file mode 100644 index 498f08d1d2..0000000000 --- a/kevm-pyk/src/tests/conftest.py +++ /dev/null @@ -1,55 +0,0 @@ -from __future__ import annotations - -from pathlib import Path -from typing import TYPE_CHECKING - -import pytest - -if TYPE_CHECKING: - from pytest import FixtureRequest, Parser - - -def pytest_addoption(parser: Parser) -> None: - parser.addoption( - '--update-expected-output', - action='store_true', - default=False, - help='Write expected output files for proof tests', - ) - parser.addoption( - '--use-booster', - action='store_true', - default=False, - help='Use the kore-rpc-booster binary instead of kore-rpc', - ) - parser.addoption( - '--spec-name', - default=None, - type=str, - help='Run only this specific specification (skip others)', - ) - parser.addoption( - '--kompiled-targets-dir', - type=Path, - help='Use pre-kompiled definitions for proof tests', - ) - - -@pytest.fixture -def update_expected_output(request: FixtureRequest) -> bool: - return request.config.getoption('--update-expected-output') - - -@pytest.fixture(scope='session') -def use_booster(request: FixtureRequest) -> bool: - return request.config.getoption('--use-booster') - - -@pytest.fixture(scope='session') -def spec_name(request: FixtureRequest) -> str | None: - return request.config.getoption('--spec-name') - - -@pytest.fixture(scope='session') -def kompiled_targets_dir(request: FixtureRequest) -> Path | None: - return request.config.getoption('--kompiled-targets-dir') diff --git a/kevm-pyk/src/tests/integration/__init__.py b/kevm-pyk/src/tests/integration/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/kevm-pyk/src/tests/integration/test_conformance.py b/kevm-pyk/src/tests/integration/test_conformance.py deleted file mode 100644 index a1dc0a6eb4..0000000000 --- a/kevm-pyk/src/tests/integration/test_conformance.py +++ /dev/null @@ -1,120 +0,0 @@ -from __future__ import annotations - -import json -import sys -from typing import TYPE_CHECKING - -import pytest -from pyk.kdist import kdist -from pyk.kore.prelude import int_dv -from pyk.kore.syntax import App -from pyk.kore.tools import PrintOutput, kore_print - -from kevm_pyk.interpreter import interpret - -from ..utils import REPO_ROOT - -if TYPE_CHECKING: - from pathlib import Path - from typing import Final - - from pyk.kore.syntax import Pattern - - -sys.setrecursionlimit(10**8) - -TEST_DIR: Final = REPO_ROOT / 'tests/ethereum-tests' -GOLDEN: Final = (REPO_ROOT / 'tests/templates/output-success-llvm.json').read_text().rstrip() - - -def _test(gst_file: Path, schedule: str, mode: str, chainid: int, usegas: bool) -> None: - # Given - with gst_file.open() as f: - gst_data = json.load(f) - - # When - res = interpret(gst_data, schedule, mode, chainid, usegas, check=False) - - # Then - _assert_exit_code_zero(res) - - -def _assert_exit_code_zero(pattern: Pattern) -> None: - assert type(pattern) is App - kevm_cell = pattern.args[0] - assert type(kevm_cell) is App - exit_code_cell = kevm_cell.args[1] - assert type(exit_code_cell) is App - - exit_code = exit_code_cell.args[0] - if exit_code == int_dv(0): - return - - pretty = kore_print(pattern, definition_dir=kdist.get('evm-semantics.llvm'), output=PrintOutput.PRETTY) - assert pretty == GOLDEN - - -def _skipped_tests() -> set[Path]: - def read_test_list(path: Path) -> list[Path]: - return [REPO_ROOT / test_path for test_path in path.read_text().splitlines()] - - slow_tests = read_test_list(REPO_ROOT / 'tests/slow.llvm') - failing_tests = read_test_list(REPO_ROOT / 'tests/failing.llvm') - return set(slow_tests + failing_tests) - - -SKIPPED_TESTS: Final = _skipped_tests() - -VM_TEST_DIR: Final = TEST_DIR / 'LegacyTests/Constantinople/VMTests' -ALL_VM_TESTS: Final = tuple(VM_TEST_DIR.glob('*/*.json')) -VM_TESTS: Final = tuple(test_file for test_file in ALL_VM_TESTS if test_file not in SKIPPED_TESTS) -REST_VM_TESTS: Final = tuple(test_file for test_file in ALL_VM_TESTS if test_file in SKIPPED_TESTS) - - -@pytest.mark.parametrize( - 'test_file', - VM_TESTS, - ids=[str(test_file.relative_to(VM_TEST_DIR)) for test_file in VM_TESTS], -) -def test_vm(test_file: Path) -> None: - _test(test_file, 'DEFAULT', 'VMTESTS', 1, True) - - -@pytest.mark.skip(reason='failing / slow VM tests') -@pytest.mark.parametrize( - 'test_file', - REST_VM_TESTS, - ids=[str(test_file.relative_to(VM_TEST_DIR)) for test_file in REST_VM_TESTS], -) -def test_rest_vm(test_file: Path) -> None: - _test(test_file, 'DEFAULT', 'VMTESTS', 1, True) - - -BCHAIN_NEW_TEST_DIR: Final = TEST_DIR / 'BlockchainTests/GeneralStateTests' -BCHAIN_NEW_TESTS: Final = tuple(BCHAIN_NEW_TEST_DIR.glob('**/*.json')) - -BCHAIN_LEGACY_TEST_DIR: Final = TEST_DIR / 'LegacyTests/Constantinople/BlockchainTests/GeneralStateTests' -BCHAIN_LEGACY_TESTS: Final = tuple(BCHAIN_LEGACY_TEST_DIR.glob('*/*.json')) - -ALL_BCHAIN_TESTS: Final = BCHAIN_NEW_TESTS + BCHAIN_LEGACY_TESTS -BCHAIN_TESTS: Final = tuple(test_file for test_file in ALL_BCHAIN_TESTS if test_file not in SKIPPED_TESTS) -REST_BCHAIN_TESTS: Final = tuple(test_file for test_file in ALL_BCHAIN_TESTS if test_file in SKIPPED_TESTS) - - -@pytest.mark.parametrize( - 'test_file', - BCHAIN_TESTS, - ids=[str(test_file.relative_to(TEST_DIR)) for test_file in BCHAIN_TESTS], -) -def test_bchain(test_file: Path) -> None: - _test(test_file, 'SHANGHAI', 'NORMAL', 1, True) - - -@pytest.mark.skip(reason='failing / slow blockchain tests') -@pytest.mark.parametrize( - 'test_file', - REST_BCHAIN_TESTS, - ids=[str(test_file.relative_to(TEST_DIR)) for test_file in REST_BCHAIN_TESTS], -) -def test_rest_bchain(test_file: Path) -> None: - _test(test_file, 'SHANGHAI', 'NORMAL', 1, True) diff --git a/kevm-pyk/src/tests/integration/test_kast.py b/kevm-pyk/src/tests/integration/test_kast.py deleted file mode 100644 index 8d32082cf9..0000000000 --- a/kevm-pyk/src/tests/integration/test_kast.py +++ /dev/null @@ -1,26 +0,0 @@ -from pyk.kdist import kdist -from pyk.ktool.kprint import KAstInput, KAstOutput, _kast - -from ..utils import REPO_ROOT - - -def test_parse(update_expected_output: bool) -> None: - # Given - evm_file = REPO_ROOT / 'tests/interactive/sumTo10.evm' - expected_file = REPO_ROOT / 'tests/interactive/sumTo10.evm.parse-expected' - expected = expected_file.read_text() - - # When - actual = _kast( - file=evm_file, - definition_dir=kdist.get('evm-semantics.llvm'), - input=KAstInput.PROGRAM, - output=KAstOutput.KORE, - ).stdout - - # Then - if update_expected_output: - expected_file.write_text(actual) - return - - assert actual == expected diff --git a/kevm-pyk/src/tests/integration/test_prove.py b/kevm-pyk/src/tests/integration/test_prove.py deleted file mode 100644 index a31294d4f6..0000000000 --- a/kevm-pyk/src/tests/integration/test_prove.py +++ /dev/null @@ -1,350 +0,0 @@ -from __future__ import annotations - -import logging -import sys -from typing import TYPE_CHECKING, NamedTuple - -import pytest -from filelock import SoftFileLock -from pyk.prelude.ml import is_top -from pyk.proof.reachability import APRProof - -from kevm_pyk import config -from kevm_pyk.__main__ import exec_prove -from kevm_pyk.cli import ProveOptions -from kevm_pyk.kevm import KEVM -from kevm_pyk.kompile import KompileTarget, kevm_kompile - -from ..utils import REPO_ROOT - -if TYPE_CHECKING: - from collections.abc import Callable - from pathlib import Path - from typing import Any, Final - - from pyk.utils import BugReport - from pytest import LogCaptureFixture, TempPathFactory - - -sys.setrecursionlimit(10**8) - -TEST_DIR: Final = REPO_ROOT / 'tests' -SPEC_DIR: Final = TEST_DIR / 'specs' - - -# ------------------- -# Test specifications -# ------------------- - - -def spec_files(dir_name: str, glob: str) -> tuple[Path, ...]: - test_dir = SPEC_DIR / dir_name - res = tuple(test_dir.glob(glob)) - assert res - return res - - -BENCHMARK_TESTS: Final = spec_files('benchmarks', '*-spec.k') -FUNCTIONAL_TESTS: Final = spec_files('functional', '*-spec.k') -OPCODES_TESTS: Final = spec_files('opcodes', '*-spec.k') -ERC20_TESTS: Final = spec_files('erc20', '*/*-spec.k') -BIHU_TESTS: Final = spec_files('bihu', '*-spec.k') -EXAMPLES_TESTS: Final = spec_files('examples', '*-spec.k') + spec_files('examples', '*-spec.md') -MCD_TESTS: Final = spec_files('mcd', '*-spec.k') -OPTIMIZATION_TESTS: Final = (SPEC_DIR / 'opcodes/evm-optimizations-spec.md',) -KONTROL_TESTS: Final = spec_files('kontrol', '*-spec.k') - -ALL_TESTS: Final = sum( - [ - BENCHMARK_TESTS, - FUNCTIONAL_TESTS, - OPCODES_TESTS, - ERC20_TESTS, - BIHU_TESTS, - EXAMPLES_TESTS, - MCD_TESTS, - OPTIMIZATION_TESTS, - KONTROL_TESTS, - ], - (), -) - - -def exclude_list(exclude_file: Path) -> list[Path]: - res = [REPO_ROOT / test_path for test_path in exclude_file.read_text().splitlines()] - assert res - return res - - -FAILING_PYK_TESTS: Final = exclude_list(TEST_DIR / 'failing-symbolic.pyk') -FAILING_BOOSTER_TESTS: Final = exclude_list(TEST_DIR / 'failing-symbolic.haskell-booster') -FAILING_TESTS: Final = exclude_list(TEST_DIR / 'failing-symbolic.haskell') - - -# ----------- -# Kompilation -# ----------- - - -KOMPILE_MAIN_FILE: Final = { - 'benchmarks/functional-spec.k': 'functional-spec.k', - 'bihu/functional-spec.k': 'functional-spec.k', - 'examples/solidity-code-spec.md': 'solidity-code-spec.md', - 'examples/erc20-spec.md': 'erc20-spec.md', - 'examples/erc721-spec.md': 'erc721-spec.md', - 'examples/storage-spec.md': 'storage-spec.md', - 'examples/sum-to-n-spec.k': 'sum-to-n-spec.k', - 'examples/sum-to-n-foundry-spec.k': 'sum-to-n-foundry-spec.k', - 'functional/infinite-gas-spec.k': 'infinite-gas-spec.k', - 'functional/evm-int-simplifications-spec.k': 'evm-int-simplifications-spec.k', - 'functional/int-simplifications-spec.k': 'int-simplifications-spec.k', - 'functional/lemmas-no-smt-spec.k': 'lemmas-no-smt-spec.k', - 'functional/lemmas-spec.k': 'lemmas-spec.k', - 'functional/abi-spec.k': 'abi-spec.k', - 'functional/merkle-spec.k': 'merkle-spec.k', - 'functional/storageRoot-spec.k': 'storageRoot-spec.k', - 'mcd/functional-spec.k': 'functional-spec.k', - 'opcodes/evm-optimizations-spec.md': 'evm-optimizations-spec.md', -} - -KOMPILE_MAIN_MODULE: Final = { - 'benchmarks/functional-spec.k': 'FUNCTIONAL-SPEC-SYNTAX', - 'bihu/functional-spec.k': 'FUNCTIONAL-SPEC-SYNTAX', - 'erc20/functional-spec.k': 'FUNCTIONAL-SPEC-SYNTAX', - 'mcd/functional-spec.k': 'FUNCTIONAL-SPEC-SYNTAX', - 'opcodes/evm-optimizations-spec.md': 'EVM-OPTIMIZATIONS-SPEC-LEMMAS', -} - - -class Target(NamedTuple): - main_file: Path - main_module_name: str - - @property - def id(self) -> str: - """ - The target's id is the two trailing path segments and the main module name - """ - return f'{self.main_file.parts[-2]}-{self.main_file.stem}-{self.main_module_name}' - - def __call__(self, output_dir: Path) -> Path: - return kevm_kompile( - output_dir=output_dir, - target=KompileTarget.HASKELL, - main_file=self.main_file, - main_module=self.main_module_name, - syntax_module=self.main_module_name, - debug=True, - ) - - -@pytest.fixture(scope='module') -def target_dir(kompiled_targets_dir: Path | None, tmp_path_factory: TempPathFactory) -> Path: - if kompiled_targets_dir: - kompiled_targets_dir.mkdir(parents=True, exist_ok=True) - return kompiled_targets_dir - - return tmp_path_factory.mktemp('kompiled') - - -@pytest.fixture(scope='module') -def kompiled_target_for(target_dir: Path) -> Callable[[Path], Path]: - """ - Generate a function that returns a path to the kompiled defintion for a given K spec. Invoke `kompile` only if no kompiled directory is cached for the spec. - """ - - def kompile(spec_file: Path) -> Path: - target = _target_for_spec(spec_file) - lock_file = target_dir / f'{target.id}.lock' - output_dir = target_dir / target.id - with SoftFileLock(lock_file): - if output_dir.exists(): - return output_dir - return target(output_dir) - - return kompile - - -def _target_for_spec(spec_file: Path) -> Target: - spec_file = spec_file.resolve() - spec_id = str(spec_file.relative_to(SPEC_DIR)) - spec_root = SPEC_DIR / spec_file.relative_to(SPEC_DIR).parents[-2] - main_file = spec_root / KOMPILE_MAIN_FILE.get(spec_id, 'verification.k') - main_module_name = KOMPILE_MAIN_MODULE.get(spec_id, 'VERIFICATION') - return Target(main_file, main_module_name) - - -@pytest.mark.parametrize( - 'spec_file', - ALL_TESTS, - ids=[str(spec_file.relative_to(SPEC_DIR)) for spec_file in ALL_TESTS], -) -def test_kompile_targets( - spec_file: Path, kompiled_target_for: Callable[[Path], Path], kompiled_targets_dir: Path | None -) -> None: - """ - This test function is intended to be used to pre-kompile all definitions, - so that the actual proof tests do not need to do the actual compilation, - which is disturbing performance measurment. - - To achieve the desired caching, this test should be run like this: - pytest src/tests/integration/test_prove.py::test_kompile_targets --kompiled-targets-dir ./prekompiled - - This test will be skipped if no --kompiled-targets-dir option is given - """ - if not kompiled_targets_dir or spec_file in FAILING_BOOSTER_TESTS: - pytest.skip() - - kompiled_target_for(spec_file) - - -# --------- -# Pyk tests -# --------- - - -class TParams: - main_claim_id: str | None - leaf_number: int | None - break_on_calls: bool - - def __init__( - self, main_claim_id: str | None = None, leaf_number: int | None = None, break_on_calls: bool = False - ) -> None: - self.main_claim_id = main_claim_id - self.leaf_number = leaf_number - self.break_on_calls = break_on_calls - - -TEST_PARAMS: dict[str, TParams] = { - 'mcd/vat-slip-pass-rough-spec.k': TParams( - main_claim_id='VAT-SLIP-PASS-ROUGH-SPEC.Vat.slip.pass.rough', - leaf_number=1, - ), -} - - -for KONTROL_TEST in KONTROL_TESTS: - TEST_PARAMS[f'kontrol/{KONTROL_TEST.name}'] = TParams(break_on_calls=True) # noqa: B909 - - -def leaf_number(proof: APRProof) -> int: - non_target_leaves = [nd for nd in proof.kcfg.leaves if not proof.is_target(nd.id)] - return len(non_target_leaves) + len(proof.kcfg.predecessors(proof.target)) - - -@pytest.mark.parametrize( - 'spec_file', - ALL_TESTS, - ids=[str(spec_file.relative_to(SPEC_DIR)) for spec_file in ALL_TESTS], -) -def test_pyk_prove( - spec_file: Path, - kompiled_target_for: Callable[[Path], Path], - tmp_path: Path, - caplog: LogCaptureFixture, - use_booster: bool, - bug_report: BugReport | None, - spec_name: str | None, -) -> None: - caplog.set_level(logging.INFO) - - if (not use_booster and spec_file in FAILING_PYK_TESTS) or (use_booster and spec_file in FAILING_BOOSTER_TESTS): - pytest.skip() - - if spec_name is not None and str(spec_file).find(spec_name) < 0: - pytest.skip() - - # Given - log_file = tmp_path / 'log.txt' - use_directory = tmp_path / 'kprove' - use_directory.mkdir() - - # When - try: - definition_dir = kompiled_target_for(spec_file) - name = str(spec_file.relative_to(SPEC_DIR)) - break_on_calls = name in TEST_PARAMS and TEST_PARAMS[name].break_on_calls - options = ProveOptions( - { - 'spec_file': spec_file, - 'definition_dir': definition_dir, - 'includes': [str(include_dir) for include_dir in config.INCLUDE_DIRS], - 'save_directory': use_directory, - 'md_selector': 'foo', # TODO Ignored flag, this is to avoid KeyError - 'use_booster': use_booster, - 'bug_report': bug_report, - 'break_on_calls': break_on_calls, - } - ) - exec_prove(options=options) - if name in TEST_PARAMS: - params = TEST_PARAMS[name] - if params.leaf_number is not None and params.main_claim_id is not None: - apr_proof = APRProof.read_proof_data( - proof_dir=use_directory, - id=params.main_claim_id, - ) - expected_leaf_number = params.leaf_number - actual_leaf_number = leaf_number(apr_proof) - assert expected_leaf_number == actual_leaf_number - except BaseException: - raise - finally: - log_file.write_text(caplog.text) - - -# ------------ -# Legacy tests -# ------------ - - -PROVE_ARGS: Final[dict[str, Any]] = { - 'functional/lemmas-no-smt-spec.k': { - 'haskell_args': ['--smt=none'], - }, -} - - -@pytest.mark.parametrize( - 'spec_file', - FAILING_PYK_TESTS, - ids=[str(spec_file.relative_to(SPEC_DIR)) for spec_file in FAILING_PYK_TESTS], -) -def test_kprove_prove( - spec_file: Path, - kompiled_target_for: Callable[[Path], Path], - tmp_path: Path, - caplog: LogCaptureFixture, - bug_report: BugReport | None, -) -> None: - caplog.set_level(logging.INFO) - - if spec_file in FAILING_TESTS: - pytest.skip() - - # Given - spec_id = str(spec_file.relative_to(SPEC_DIR)) - args = PROVE_ARGS.get(spec_id, {}) - if 'haskell_args' not in args: - args['haskell_args'] = [] - args['haskell_args'] += ['--smt-timeout', '300'] - args['haskell_args'] += ['--smt-retry-limit', '10'] - - log_file = tmp_path / 'log.txt' - use_directory = tmp_path / 'kprove' - use_directory.mkdir() - - # When - try: - definition_dir = kompiled_target_for(spec_file) - kevm = KEVM(definition_dir, use_directory=use_directory) - actual = kevm.prove(spec_file=spec_file, include_dirs=list(config.INCLUDE_DIRS), **args) - except BaseException: - raise - finally: - log_file.write_text(caplog.text) - - # Then - assert len(actual) == 1 - assert is_top(actual[0].kast, weak=True) diff --git a/kevm-pyk/src/tests/integration/test_run.py b/kevm-pyk/src/tests/integration/test_run.py deleted file mode 100644 index f599efe3c7..0000000000 --- a/kevm-pyk/src/tests/integration/test_run.py +++ /dev/null @@ -1,43 +0,0 @@ -from __future__ import annotations - -import json -from typing import TYPE_CHECKING - -import pytest -from pyk.kdist import kdist -from pyk.kore.tools import PrintOutput, kore_print - -from kevm_pyk.interpreter import interpret - -from ..utils import REPO_ROOT - -if TYPE_CHECKING: - from pathlib import Path - from typing import Final - - -FAILING_DIR: Final = REPO_ROOT / 'tests/failing' -TEST_DATA: Final = tuple(FAILING_DIR.glob('*.json')) -assert TEST_DATA - - -@pytest.mark.parametrize('gst_file', TEST_DATA, ids=[str(gst_file.relative_to(FAILING_DIR)) for gst_file in TEST_DATA]) -def test_run(gst_file: Path, update_expected_output: bool) -> None: - # Given - expected_file = gst_file.with_suffix('.json.expected') - expected = expected_file.read_text() - - with gst_file.open() as f: - gst_data = json.load(f) - - # When - pattern = interpret(gst_data, 'SHANGHAI', 'NORMAL', 1, True, check=False) - actual = kore_print(pattern, definition_dir=kdist.get('evm-semantics.llvm'), output=PrintOutput.PRETTY) - - # Then - - if update_expected_output: - expected_file.write_text(actual) - return - - assert actual == expected diff --git a/kevm-pyk/src/tests/integration/utils.py b/kevm-pyk/src/tests/integration/utils.py deleted file mode 100644 index c8cc859480..0000000000 --- a/kevm-pyk/src/tests/integration/utils.py +++ /dev/null @@ -1,10 +0,0 @@ -from __future__ import annotations - -from pathlib import Path -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from typing import Final - - -TEST_DATA_DIR: Final = (Path(__file__).parent / 'test-data').resolve(strict=True) diff --git a/kevm-pyk/src/tests/profiling/__init__.py b/kevm-pyk/src/tests/profiling/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/kevm-pyk/src/tests/profiling/test_gst_to_kore.py b/kevm-pyk/src/tests/profiling/test_gst_to_kore.py deleted file mode 100644 index e573104c78..0000000000 --- a/kevm-pyk/src/tests/profiling/test_gst_to_kore.py +++ /dev/null @@ -1,22 +0,0 @@ -from __future__ import annotations - -import json -from typing import TYPE_CHECKING - -from ..utils import REPO_ROOT - -if TYPE_CHECKING: - from pyk.testing import Profiler - - -GST_FILE = REPO_ROOT / 'tests/ethereum-tests/BlockchainTests/GeneralStateTests/stEIP1559/intrinsic.json' - - -def test_gst_to_kore(profile: Profiler) -> None: - with GST_FILE.open() as f: - gst_data = json.load(f) - - with profile(sort_keys=('cumtime', 'tottime'), limit=30): - from kevm_pyk.gst_to_kore import gst_to_kore - - gst_to_kore(gst_data, 'DEFAULT', 'VMTESTS', 1, True) diff --git a/kevm-pyk/src/tests/profiling/utils.py b/kevm-pyk/src/tests/profiling/utils.py deleted file mode 100644 index c8cc859480..0000000000 --- a/kevm-pyk/src/tests/profiling/utils.py +++ /dev/null @@ -1,10 +0,0 @@ -from __future__ import annotations - -from pathlib import Path -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from typing import Final - - -TEST_DATA_DIR: Final = (Path(__file__).parent / 'test-data').resolve(strict=True) diff --git a/kevm-pyk/src/tests/unit/__init__.py b/kevm-pyk/src/tests/unit/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/kevm-pyk/src/tests/unit/test-data/kevm_pyk_toml_test.toml b/kevm-pyk/src/tests/unit/test-data/kevm_pyk_toml_test.toml deleted file mode 100644 index 16dd2d88cb..0000000000 --- a/kevm-pyk/src/tests/unit/test-data/kevm_pyk_toml_test.toml +++ /dev/null @@ -1,10 +0,0 @@ -[run] -no-usegas = true - -[show-kcfg] -node = [3] -node-delta = ["3, 5", "6, 9"] - -[run.a_profile] -debugger = true -no-usegas = false \ No newline at end of file diff --git a/kevm-pyk/src/tests/unit/test_gst_to_kore.py b/kevm-pyk/src/tests/unit/test_gst_to_kore.py deleted file mode 100644 index b5c14ab92e..0000000000 --- a/kevm-pyk/src/tests/unit/test_gst_to_kore.py +++ /dev/null @@ -1,51 +0,0 @@ -from __future__ import annotations - -import json -from typing import TYPE_CHECKING - -import pytest -from pyk.kore.parser import KoreParser - -from kevm_pyk.gst_to_kore import gst_to_kore - -from ..utils import REPO_ROOT - -if TYPE_CHECKING: - from typing import Final - - -TEST_DATA: Final = ( - ( - 'tests/ethereum-tests/GeneralStateTests/VMTests/vmLogTest/log3.json', - 'tests/interactive/vmLogTest/log3.gst-to-kore.expected', - ), - ( - 'tests/interactive/log3_MaxTopic_d0g0v0.json', - 'tests/interactive/log3_MaxTopic_d0g0v0.json.parse-expected', - ), - ( - 'tests/interactive/CallRecursiveContract_d0g0v0.json', - 'tests/interactive/CallRecursiveContract_d0g0v0.json.parse-expected', - ), -) - - -@pytest.mark.parametrize('gst_path,expected_path', TEST_DATA, ids=[gst_path for gst_path, _ in TEST_DATA]) -def test_gst_to_kore(gst_path: str, expected_path: str, update_expected_output: bool) -> None: - # Given - gst_file = REPO_ROOT / gst_path - gst_data = json.loads(gst_file.read_text()) - - expected_file = REPO_ROOT / expected_path - expected = KoreParser(expected_file.read_text()).pattern() - - # When - actual = gst_to_kore(gst_data, 'SHANGHAI', 'NORMAL', 1, True) - - # Then - if update_expected_output: - with expected_file.open('w') as f: - actual.write(f) - return - - assert actual == expected diff --git a/kevm-pyk/src/tests/unit/test_kevm.py b/kevm-pyk/src/tests/unit/test_kevm.py deleted file mode 100644 index 032b20a256..0000000000 --- a/kevm-pyk/src/tests/unit/test_kevm.py +++ /dev/null @@ -1,52 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import pytest - -if TYPE_CHECKING: - from typing import Final - from pyk.kast.inner import KInner - -from pyk.kast.inner import KApply, KToken - -from kevm_pyk.kevm import KEVM - -TEST_DATA: Final = [ - ('single-ktoken', KToken('0', 'Int'), KToken('0x0', 'Int')), - ('bytes-to-hex-empty', KApply('', [KToken('b""', 'Bytes')]), KApply('', KToken('0x', 'Bytes'))), - ( - 'bytes-to-hex-nonempty', - KApply('', [KToken('b"\\xa6\\xb9c\\x9d"', 'Bytes')]), - KApply('', KToken('0xa6b9639d', 'Bytes')), - ), - ( - 'kast-to-hex', - KApply( - '', - KApply('', KToken('728815563385977040452943777879061427756277306518', 'Int')), - KApply('', KToken('100', 'Int')), - KApply('', KToken('b"\x00\x00\x00\x3c\x60\xf5"', 'Bytes')), - KApply('', KToken('b"\xcc\xff\xff\xfac\x60\xf5"', 'Bytes')), - ), - KApply( - '', - KApply('', KToken('0x7fa9385be102ac3eac297483dd6233d62b3e1496', 'Int')), - KApply('', KToken('0x64', 'Int')), - KApply('', KToken('0x0000003c60f5', 'Bytes')), - KApply('', KToken('0xccfffffa6360f5', 'Bytes')), - ), - ), -] - - -@pytest.mark.parametrize( - 'test_id,input,result', - TEST_DATA, - ids=[test_id for test_id, *_ in TEST_DATA], -) -def test_kinner_to_hex(test_id: str, input: KInner, result: KInner) -> None: - # When - to_hex = KEVM.kinner_to_hex(input) - # Then - assert to_hex == result diff --git a/kevm-pyk/src/tests/unit/test_toml_args.py b/kevm-pyk/src/tests/unit/test_toml_args.py deleted file mode 100644 index 626033de6f..0000000000 --- a/kevm-pyk/src/tests/unit/test_toml_args.py +++ /dev/null @@ -1,61 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -from pyk.cli.pyk import parse_toml_args - -from kevm_pyk.cli import _create_argument_parser, get_argument_type_setter, get_option_string_destination - -from .utils import TEST_DATA_DIR - -if TYPE_CHECKING: - from typing import Final - -TEST_TOML: Final = TEST_DATA_DIR / 'kevm_pyk_toml_test.toml' - - -def test_continue_when_default_toml_absent() -> None: - parser = _create_argument_parser() - cmd_args = ['run', str(TEST_TOML)] - args = parser.parse_args(cmd_args) - assert hasattr(args, 'config_file') - assert str(args.config_file) == 'kevm-pyk.toml' - assert hasattr(args, 'config_profile') - assert str(args.config_profile) == 'default' - args_dict = parse_toml_args(args) - assert len(args_dict) == 0 - - -def test_toml_arg_types() -> None: - parser = _create_argument_parser() - cmd_args = ['show-kcfg', '--config-file', str(TEST_TOML), str(TEST_TOML)] - args = parser.parse_args(cmd_args) - args_dict = parse_toml_args(args, get_option_string_destination, get_argument_type_setter) - assert 'nodes' in args_dict - assert len(args_dict['nodes']) == 1 - assert 'node_deltas' in args_dict - assert len(args_dict['node_deltas']) == 2 - assert len(args_dict['node_deltas'][0]) == 2 - assert len(args_dict['node_deltas'][1]) == 2 - - -def test_toml_read() -> None: - parser = _create_argument_parser() - cmd_args = ['run', '--config-file', str(TEST_TOML), str(TEST_TOML), '--verbose'] - args = parser.parse_args(cmd_args) - args_dict = parse_toml_args(args, get_option_string_destination, get_argument_type_setter) - assert 'usegas' in args_dict - assert not args_dict['usegas'] - assert hasattr(args, 'verbose') - assert args.verbose - - -def test_toml_profiles() -> None: - parser = _create_argument_parser() - cmd_args = ['run', '--config-file', str(TEST_TOML), '--config-profile', 'a_profile', str(TEST_TOML)] - args = parser.parse_args(cmd_args) - args_dict = parse_toml_args(args, get_option_string_destination, get_argument_type_setter) - assert 'debugger' in args_dict - assert args_dict['debugger'] - assert 'usegas' in args_dict - assert args_dict['usegas'] diff --git a/kevm-pyk/src/tests/unit/utils.py b/kevm-pyk/src/tests/unit/utils.py deleted file mode 100644 index c8cc859480..0000000000 --- a/kevm-pyk/src/tests/unit/utils.py +++ /dev/null @@ -1,10 +0,0 @@ -from __future__ import annotations - -from pathlib import Path -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from typing import Final - - -TEST_DATA_DIR: Final = (Path(__file__).parent / 'test-data').resolve(strict=True) diff --git a/kevm-pyk/src/tests/utils.py b/kevm-pyk/src/tests/utils.py deleted file mode 100644 index 542cf63ddb..0000000000 --- a/kevm-pyk/src/tests/utils.py +++ /dev/null @@ -1,10 +0,0 @@ -from __future__ import annotations - -from pathlib import Path -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from typing import Final - - -REPO_ROOT: Final = Path(__file__).parents[3].resolve(strict=True) diff --git a/macos-envrc b/macos-envrc deleted file mode 100644 index 46d215d1f9..0000000000 --- a/macos-envrc +++ /dev/null @@ -1,7 +0,0 @@ -# Copy this file to .envrc, then run `direnv allow` to automatically set -# relevant environment variables when entering this directory. - -PATH_add `brew --prefix bison`/bin -PATH_add `brew --prefix flex`/bin -PATH_add `brew --prefix llvm@14`/bin -PATH_add `brew --prefix openjdk`/bin diff --git a/media/201710-presentation-devcon3.md b/media/201710-presentation-devcon3.md deleted file mode 100644 index d4353c2ea9..0000000000 --- a/media/201710-presentation-devcon3.md +++ /dev/null @@ -1,550 +0,0 @@ ---- -title: 'KEVM: Overview and Progress Report' -subtitle: 'K by Example' -author: -- Everett Hildenbrandt -- Manasvi Saxena -- Nishant Rodrigues -- Lucas Peña -institute: -- University of Illinois, Urbana-Champaign -date: '\today' -theme: metropolis -fontsize: 8pt ---- - -EVM Words -========= - -Utilities ---------- - -. . . - -### Modulo Arithmetic - -``` {.k .uiuck .rvk} - syntax Int ::= chop ( Int ) [function] - // -------------------------------------- - rule chop ( I:Int ) => I %Int pow256 - requires I =Int pow256 - - rule chop ( I:Int ) => I - requires I >=Int 0 andBool I Word` operations incorporate the behavior for EVM arithmetic: - -``` {.k .uiuck .rvk} - syntax Int ::= Int "+Word" Int [function] - | Int "/Word" Int [function] - // ----------------------------------------- - rule W0 +Word W1 => chop( W0 +Int W1 ) - rule W0 /Word 0 => 0 - rule W0 /Word W1 => chop( W0 /Int W1 ) requires W1 =/=K 0 -``` - -Data-Structures over `Word` -=========================== - -A WordStack for EVM -------------------- - -. . . - -### As a cons-list - -A cons-list is used for the EVM wordstack. - -- `.WordStack` serves as the empty worstack, and -- `_:_` serves as the "cons" operator. - -``` {.k .uiuck .rvk} - syntax WordStack [flatPredicate] - syntax WordStack ::= ".WordStack" | Int ":" WordStack - // ----------------------------------------------------- -``` - -This can be thought of as a singly linked-list. - -. . . - -### WordStack Append - -``` {.k .uiuck .rvk} - syntax WordStack ::= WordStack "++" WordStack [function] - // -------------------------------------------------------- - rule .WordStack ++ WS' => WS' - rule (W : WS) ++ WS' => W : (WS ++ WS') -``` - -EVM Configuration -================= - -Keeping Track of World and VM state ------------------------------------ - -The actual configuration contains $60+$ cells. - -### VM Execution State - -Subconfiguration `` contains the execution state of a single VM. - -``` -configuration - $PGM:EthereumSimulation - - .Map // I_b - .WordStack // \mu_s - .Map // \mu_m - 0 // \mu_g - ... - - ... -``` - -Keeping Track of World and VM state ------------------------------------ - -### Network/World State - -Subconfiguration `` contains the network/world state. - -- `multiplicity="*"` allows for multiple co-existing `` cells. - -``` -configuration - ... - - .Map - - - 0 - 0 - .WordStack - .Map - 0 - - - ... - -``` - -EVM Execution -============= - -OpCode Execution ----------------- - -. . . - -### Single Step - -The `#next` operator executes a single step by: - -1. performing some quick checks for exceptional opcodes, -2. executes the opcode if it is not immediately exceptional, -3. increments the program counter, and finally -4. reverts state if any of the above steps threw an exception. - -. . . - -``` {.k .uiuck .rvk} - rule EXECMODE - #next - => #pushCallStack ~> #exceptional? [ OP ] - ~> #exec [ OP ] - ~> #pc [ OP ] - ~> #? #dropCallStack : #popCallStack ~> #exception ?# - ... - - PCOUNT - ... PCOUNT |-> OP ... - requires EXECMODE in (SetItem(NORMAL) SetItem(VMTESTS)) -``` - -EVM Programs -============ - -EVM OpCodes ------------ - -. . . - -### Expressions - -Expression opcodes call the corresponding `Word` operators, then `#push` the -result: - -``` {.k .uiuck .rvk} - syntax BinStackOp ::= "SUB" | "DIV" - // ----------------------------------- - rule SUB W0 W1 => W0 -Word W1 ~> #push ... - rule DIV W0 W1 => W0 /Word W1 ~> #push ... -``` - -. . . - -### Local Memory - -``` {.k .uiuck .rvk} - syntax UnStackOp ::= "MLOAD" - // ---------------------------- - rule MLOAD INDEX => #asWord(#range(LM, INDEX, 32)) ~> #push ... - LM - - syntax BinStackOp ::= "MSTORE" - // ------------------------------ - rule MSTORE I V => . ... - LM => LM [ I := #padToWidth(32, #asByteStack(V)) ] - -``` - -Ethereum Network OpCodes ------------------------- - -. . . - -### Account Storage Operations - -These rules reach into the network state and load/store from account storage: - -``` {.k .uiuck .rvk} - syntax UnStackOp ::= "SLOAD" - // ---------------------------- - rule SLOAD INDEX => VALUE ~> #push ... ACCT - - ACCT - ... INDEX |-> VALUE ... - ... - -``` - -. . . - -``` {.k .uiuck .rvk} - syntax BinStackOp ::= "SSTORE" - // ------------------------------ - rule SSTORE INDEX VALUE => . ... ACCT - - ACCT - STORAGE => STORAGE [ INDEX <- VALUE ] - ... - - requires notBool (INDEX in_keys(STORAGE)) -``` - -Ethereum Network OpCodes ------------------------- - -. . . - -### Call Operations - -For each `CALL*` operation, we make a corresponding call to `#call` and a -state-change to setup the custom parts of the calling environment. - -``` {.k .uiuck .rvk} - syntax CallOp ::= "CALL" - // ------------------------ - rule CALL GCAP ACCTTO VALUE ARGSTART ARGWIDTH RETSTART RETWIDTH - => #checkCall ACCTFROM VALUE - ~> #call ACCTFROM ACCTTO ACCTTO Ccallgas(SCHED, ACCTTO, ACCTS, GCAP, GAVAIL, VALUE) VALUE VALUE #range(LM, ARGSTART, ARGWIDTH) - ~> #return RETSTART RETWIDTH - ... - - SCHED - ACCTFROM - LM - ACCTS - GAVAIL -``` - -Ethereum Gas Calculation -======================== - -Execution Gas -------------- - -The intrinsic gas calculation mirrors the style of the YellowPaper (appendix H). - -. . . - -### SSTORE Gas - -``` {.k .uiuck .rvk} - syntax InternalOp ::= #gasExec ( Schedule , OpCode ) - // ---------------------------------------------------- - rule #gasExec(SCHED, SSTORE INDEX VALUE) - => Csstore(SCHED, VALUE, #lookup(STORAGE, INDEX)) - ... - - ACCT - - ACCT - STORAGE - ... - -``` - -Gas Calculation Functions -------------------------- - -The following functions are defined in the YellowPaper. - -### Csstore - -``` {.k .uiuck .rvk} - syntax Int ::= Csstore ( Schedule , Int , Int ) [function] - // ---------------------------------------------------------- - rule Csstore(SCHED, VALUE, OLD) - => #ifInt VALUE =/=Int 0 andBool OLD ==Int 0 - #then Gsstoreset < SCHED > - #else Gsstorereset < SCHED > - #fi -``` - -. . . - -### Others - -``` {.k .uiuck .rvk} - syntax Int ::= Ccall (Schedule, Int, Map, Int, Int, Int) [function] - | Ccallgas (Schedule, Int, Map, Int, Int, Int) [function] - | Cgascap (Schedule, Int, Int, Int) [function] - | Cextra (Schedule, Int, Map, Int) [function] - | Cxfer (Schedule, Int) [function] - | Cnew (Schedule, Int, Map, Int) [function] - // ---------------------------------------------------------------------- -``` - -Fee Schedule from C++ Implementation ------------------------------------- - -. . . - -### Schedule Constants - -A `ScheduleConst` is a constant determined by the fee schedule. - -``` {.k .uiuck .rvk} - syntax Int ::= ScheduleConst "<" Schedule ">" [function] - - syntax ScheduleConst ::= "Gzero" | "Gbase" | "Gverylow" - // ------------------------------------------------------- -``` - -. . . - -### Default Schedule - -``` {.k .uiuck .rvk} - syntax Schedule ::= "DEFAULT" - // ----------------------------- - rule Gzero < DEFAULT > => 0 - rule Gbase < DEFAULT > => 2 -``` - -. . . - -### EIP150 Schedule - -``` {.k .uiuck .rvk} - syntax Schedule ::= "EIP150" - // ---------------------------- - rule Gbalance < EIP150 > => 400 - rule Gsload < EIP150 > => 200 -``` - -The Sum To N Specification -========================== - -Sum To N Program and Claim --------------------------- - -. . . - -### High Level - -Canonical "hello world" verification example, in no particular language: - - s = 0; - n = N; - while (n > 0) { - s = s + n; - n = n - 1; - } - return s; - -. . . - -### Claim - -$$s = \sum_{i = 1}^N i = \frac{N * (N + 1)}{2}$$ - -Proof Claims ------------- - -. . . - -### Main Claim - -- We start at program counter 0 and end at 53. -- The `` starts small enough and ends with the correct sum. -- The gas consumed is no more than `(52 * N) + 27`. -- `N` is sufficiently low that overflow will not occur in execution. - -. . . - -``` {.k .sum-to-n} - 0 => 53 - WS => 0 : N *Int (N +Int 1) /Int 2 : WS - G => G -Int (52 *Int N +Int 27) - - requires N >=Int 0 - andBool N <=Int 340282366920938463463374607431768211455 - andBool #sizeWordStack(WS) =Int 52 *Int N +Int 27 -``` - -Proof Claims ------------- - -. . . - -### Circularity (Loop Invariant) - -We specify the behaviour of the rest of the program any time it reaches the loop -head: - -- We start at program counter 35 (beginning of loop) and end at 53. -- `` starts with the counter `I` and the partial sum `S`, and -- `` ends with the correct sum. -- The gas consumed for this fragment is no more than `(52 * I) + 21`. -- `S` and `I` are sufficiently low that overflow will not occur - during execution. - -. . . - -``` {.k .sum-to-n} - 35 => 53 - G => G -Int (52 *Int I +Int 21) - - I : S : WS - => 0 : S +Int I *Int (I +Int 1) /Int 2 : WS - - requires I >=Int 0 - andBool S >=Int 0 - andBool S +Int I *Int (I +Int 1) /Int 2 =Int 52 *Int I +Int 21 -``` - -Verifing ABI compliant contracts --------------------------------- - -. . . - -`#abiCallData` generates ABI compliant `callData`: - -``` - syntax WordStack ::= #abiCallData ( String , TypedArgs ) [function] - // ------------------------------------------------------------------- - rule #abiCallData( FNAME , ARGS ) => - #parseByteStack(substrString( - Keccak256(#generateSignature(FNAME +String "(", ARGS)), 0, 8)) - ++ #encodeArgs(.WordStack | ARGS) -``` - -. . . - -Here, we generate `callData` for call the `transfer` function: - -``` - - #abiCallData("transfer",#address(%ACCOUNT_TO),#uint256(TRANSFER)) - -``` - -Note that `TRANSFER` is a symbolic word, - -ERC20: Specifying `transfer` ----------------------------- - -. . . - -- Execution reaches a `RETURN` op code -- Account balances are updated correctly if balances are sufficient. - -``` - #execute => (RETURN _ _ ~> _) - #abiCallData("transfer", ...) - - - (%ACCT_1_BALANCE |-> (B1 => B1 -Int TRANSFER)) - (%ACCT_2_BALANCE |-> (B2 => B2 +Int TRANSFER)) - - ... - - - - requires TRANSFER >Int 0 andBool TRANSFER =Int 0 andBool B1 =Int 0 andBool B2 =Int 0 - andBool #sizeWordStack(WS) -- Runtime Verification, Inc. for K support: -- IOHK for funding and ideas: -- Ethereum Foundation/Devcon3 Teams for hosting: diff --git a/media/201710-presentation-devcon3/index.html b/media/201710-presentation-devcon3/index.html new file mode 100644 index 0000000000..ede8997b37 --- /dev/null +++ b/media/201710-presentation-devcon3/index.html @@ -0,0 +1,961 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

EVM Words

+

Utilities

+

. . .

+

Modulo Arithmetic

+
    syntax Int ::= chop ( Int ) [function]
+ // --------------------------------------
+    rule chop ( I:Int ) => I %Int pow256
+      requires I <Int 0  orBool I >=Int pow256
+
+    rule chop ( I:Int ) => I
+      requires I >=Int 0 andBool I <Int pow256
+
+

. . .

+

Word Arithmetic

+

<op>Word operations incorporate the behavior for EVM arithmetic:

+
    syntax Int ::= Int "+Word" Int [function]
+                 | Int "/Word" Int [function]
+ // -----------------------------------------
+    rule W0 +Word W1 => chop( W0 +Int W1 )
+    rule W0 /Word 0  => 0
+    rule W0 /Word W1 => chop( W0 /Int W1 ) requires W1 =/=K 0
+
+

Data-Structures over Word

+

A WordStack for EVM

+

. . .

+

As a cons-list

+

A cons-list is used for the EVM wordstack.

+
    +
  • .WordStack serves as the empty worstack, and
  • +
  • _:_ serves as the "cons" operator.
  • +
+
    syntax WordStack [flatPredicate]
+    syntax WordStack ::= ".WordStack" | Int ":" WordStack
+ // -----------------------------------------------------
+
+

This can be thought of as a singly linked-list.

+

. . .

+

WordStack Append

+
    syntax WordStack ::= WordStack "++" WordStack [function]
+ // --------------------------------------------------------
+    rule .WordStack ++ WS' => WS'
+    rule (W : WS)   ++ WS' => W : (WS ++ WS')
+
+

EVM Configuration

+

Keeping Track of World and VM state

+

The actual configuration contains 60+60+ cells.

+

VM Execution State

+

Subconfiguration <evm> contains the execution state of a single VM.

+
configuration
+  <k> $PGM:EthereumSimulation </k>
+  <evm>
+    <program>   .Map       </program>   // I_b
+    <wordStack> .WordStack </wordStack> // \mu_s
+    <localMem>  .Map       </localMem>  // \mu_m
+    <gas>       0          </gas>       // \mu_g
+    ...
+  </evm>
+  ...
+
+

Keeping Track of World and VM state

+

Network/World State

+

Subconfiguration <network> contains the network/world state.

+
    +
  • multiplicity="*" allows for multiple co-existing <account> cells.
  • +
+
configuration
+  ...
+  <network>
+    <activeAccounts> .Map </activeAccounts>
+    <accounts>
+      <account multiplicity="*" type="Bag">
+        <acctID>  0          </acctID>
+        <balance> 0          </balance>
+        <code>    .WordStack </code>
+        <storage> .Map       </storage>
+        <nonce>   0          </nonce>
+      </account>
+    </accounts>
+    ...
+  </network>
+
+

EVM Execution

+

OpCode Execution

+

. . .

+

Single Step

+

The #next operator executes a single step by:

+
    +
  1. performing some quick checks for exceptional opcodes,
  2. +
  3. executes the opcode if it is not immediately exceptional,
  4. +
  5. increments the program counter, and finally
  6. +
  7. reverts state if any of the above steps threw an exception.
  8. +
+

. . .

+
    rule <mode> EXECMODE </mode>
+         <k> #next
+          => #pushCallStack ~> #exceptional? [ OP ]
+                            ~> #exec         [ OP ]
+                            ~> #pc           [ OP ]
+          ~> #? #dropCallStack : #popCallStack ~> #exception ?#
+         ...
+         </k>
+         <pc> PCOUNT </pc>
+         <program> ... PCOUNT |-> OP ... </program>
+      requires EXECMODE in (SetItem(NORMAL) SetItem(VMTESTS))
+
+

EVM Programs

+

EVM OpCodes

+

. . .

+

Expressions

+

Expression opcodes call the corresponding <op>Word operators, then #push the +result:

+
    syntax BinStackOp ::= "SUB" | "DIV"
+ // -----------------------------------
+    rule <k> SUB W0 W1 => W0 -Word W1 ~> #push ... </k>
+    rule <k> DIV W0 W1 => W0 /Word W1 ~> #push ... </k>
+
+

. . .

+

Local Memory

+
    syntax UnStackOp ::= "MLOAD"
+ // ----------------------------
+    rule <k> MLOAD INDEX => #asWord(#range(LM, INDEX, 32)) ~> #push ... </k>
+         <localMem> LM </localMem>
+
+    syntax BinStackOp ::= "MSTORE"
+ // ------------------------------
+    rule <k> MSTORE I V => . ... </k>
+         <localMem> LM => LM [ I := #padToWidth(32, #asByteStack(V)) ]
+         </localMem>
+
+

Ethereum Network OpCodes

+

. . .

+

Account Storage Operations

+

These rules reach into the network state and load/store from account storage:

+
    syntax UnStackOp ::= "SLOAD"
+ // ----------------------------
+    rule <k> SLOAD INDEX => VALUE ~> #push ... </k> <id> ACCT </id>
+         <account>
+           <acctID> ACCT </acctID>
+           <storage> ... INDEX |-> VALUE ... </storage>
+           ...
+         </account>
+
+

. . .

+
    syntax BinStackOp ::= "SSTORE"
+ // ------------------------------
+    rule <k> SSTORE INDEX VALUE => . ... </k> <id> ACCT </id>
+         <account>
+           <acctID> ACCT </acctID>
+           <storage> STORAGE => STORAGE [ INDEX <- VALUE ] </storage>
+           ...
+         </account>
+      requires notBool (INDEX in_keys(STORAGE))
+
+

Ethereum Network OpCodes

+

. . .

+

Call Operations

+

For each CALL* operation, we make a corresponding call to #call and a +state-change to setup the custom parts of the calling environment.

+
    syntax CallOp ::= "CALL"
+ // ------------------------
+    rule <k> CALL GCAP ACCTTO VALUE ARGSTART ARGWIDTH RETSTART RETWIDTH
+          => #checkCall ACCTFROM VALUE
+          ~> #call ACCTFROM ACCTTO ACCTTO Ccallgas(SCHED, ACCTTO, ACCTS, GCAP, GAVAIL, VALUE) VALUE VALUE #range(LM, ARGSTART, ARGWIDTH)
+          ~> #return RETSTART RETWIDTH
+         ...
+         </k>
+         <schedule> SCHED </schedule>
+         <id> ACCTFROM </id>
+         <localMem> LM </localMem>
+         <activeAccounts> ACCTS </activeAccounts>
+         <previousGas> GAVAIL </previousGas>
+
+

Ethereum Gas Calculation

+

Execution Gas

+

The intrinsic gas calculation mirrors the style of the YellowPaper (appendix H).

+

. . .

+

SSTORE Gas

+
    syntax InternalOp ::= #gasExec ( Schedule , OpCode )
+ // ----------------------------------------------------
+    rule <k> #gasExec(SCHED, SSTORE INDEX VALUE)
+          => Csstore(SCHED, VALUE, #lookup(STORAGE, INDEX))
+         ...
+         </k>
+         <id> ACCT </id>
+         <account>
+           <acctID> ACCT </acctID>
+           <storage> STORAGE </storage>
+           ...
+         </account>
+
+

Gas Calculation Functions

+

The following functions are defined in the YellowPaper.

+

Csstore

+
    syntax Int ::= Csstore ( Schedule , Int , Int ) [function]
+ // ----------------------------------------------------------
+    rule Csstore(SCHED, VALUE, OLD)
+      => #ifInt VALUE =/=Int 0 andBool OLD ==Int 0
+            #then Gsstoreset   < SCHED >
+            #else Gsstorereset < SCHED >
+         #fi
+
+

. . .

+

Others

+
    syntax Int ::= Ccall    (Schedule, Int, Map, Int, Int, Int) [function]
+                 | Ccallgas (Schedule, Int, Map, Int, Int, Int) [function]
+                 | Cgascap  (Schedule, Int, Int, Int)           [function]
+                 | Cextra   (Schedule, Int, Map, Int)           [function]
+                 | Cxfer    (Schedule, Int)                     [function]
+                 | Cnew     (Schedule, Int, Map, Int)           [function]
+ // ----------------------------------------------------------------------
+
+

Fee Schedule from C++ Implementation

+

. . .

+

Schedule Constants

+

A ScheduleConst is a constant determined by the fee schedule.

+
    syntax Int ::= ScheduleConst "<" Schedule ">" [function]
+
+    syntax ScheduleConst ::= "Gzero" | "Gbase" | "Gverylow"
+ // -------------------------------------------------------
+
+

. . .

+

Default Schedule

+
    syntax Schedule ::= "DEFAULT"
+ // -----------------------------
+    rule Gzero < DEFAULT > => 0
+    rule Gbase < DEFAULT > => 2
+
+

. . .

+

EIP150 Schedule

+
    syntax Schedule ::= "EIP150"
+ // ----------------------------
+    rule Gbalance < EIP150 > => 400
+    rule Gsload   < EIP150 > => 200
+
+

The Sum To N Specification

+

Sum To N Program and Claim

+

. . .

+

High Level

+

Canonical "hello world" verification example, in no particular language:

+
s = 0;
+n = N;
+while (n > 0) {
+    s = s + n;
+    n = n - 1;
+}
+return s;
+
+

. . .

+

Claim

+

ParseError: KaTeX parse error: Unexpected end of input in a macro argument, expected '}' at end of input: …ac{N * (N + 1)}

+

Proof Claims

+

. . .

+

Main Claim

+
    +
  • We start at program counter 0 and end at 53.
  • +
  • The <wordStack> starts small enough and ends with the correct sum.
  • +
  • The gas consumed is no more than (52 * N) + 27.
  • +
  • N is sufficiently low that overflow will not occur in execution.
  • +
+

. . .

+
     <pc>        0  => 53                                </pc>
+     <wordStack> WS => 0 : N *Int (N +Int 1) /Int 2 : WS </wordStack>
+     <gas>       G  => G -Int (52 *Int N +Int 27)        </gas>
+
+  requires N >=Int 0
+   andBool N <=Int 340282366920938463463374607431768211455
+   andBool #sizeWordStack(WS) <Int 1021
+   andBool G >=Int 52 *Int N +Int 27
+
+

Proof Claims

+

. . .

+

Circularity (Loop Invariant)

+

We specify the behaviour of the rest of the program any time it reaches the loop +head:

+
    +
  • We start at program counter 35 (beginning of loop) and end at 53.
  • +
  • <wordStack> starts with the counter I and the partial sum S, and
  • +
  • <wordStack> ends with the correct sum.
  • +
  • The gas consumed for this fragment is no more than (52 * I) + 21.
  • +
  • S and I are sufficiently low that overflow will not occur +during execution.
  • +
+

. . .

+
     <pc> 35 => 53                         </pc>
+     <gas> G => G -Int (52 *Int I +Int 21) </gas>
+
+     <wordStack> I : S                               : WS
+              => 0 : S +Int I *Int (I +Int 1) /Int 2 : WS </wordStack>
+
+  requires I >=Int 0
+   andBool S >=Int 0
+   andBool S +Int I *Int (I +Int 1) /Int 2 <Int pow256
+   andBool #sizeWordStack(WS) <Int 1021
+   andBool G >=Int 52 *Int I +Int 21
+
+

Verifing ABI compliant contracts

+

. . .

+

#abiCallData generates ABI compliant callData:

+
    syntax WordStack ::= #abiCallData ( String , TypedArgs ) [function]
+ // -------------------------------------------------------------------
+    rule #abiCallData( FNAME , ARGS ) =>
+        #parseByteStack(substrString(
+            Keccak256(#generateSignature(FNAME +String "(", ARGS)), 0, 8))
+            ++ #encodeArgs(.WordStack | ARGS)
+
+

. . .

+

Here, we generate callData for call the transfer function:

+
<callData>
+    #abiCallData("transfer",#address(%ACCOUNT_TO),#uint256(TRANSFER))
+</callData>
+
+

Note that TRANSFER is a symbolic word,

+

ERC20: Specifying transfer

+

. . .

+
    +
  • Execution reaches a RETURN op code
  • +
  • Account balances are updated correctly if balances are sufficient.
  • +
+
   <k> #execute => (RETURN _ _ ~> _) </k>
+   <callData>  #abiCallData("transfer", ...) </callData>
+   <accounts>
+     <account>
+       <storage> (%ACCT_1_BALANCE |-> (B1 => B1 -Int TRANSFER))
+                 (%ACCT_2_BALANCE |-> (B2 => B2 +Int TRANSFER))
+       </storage>
+       ...
+     </account>
+   </accounts>
+
+  requires TRANSFER >Int 0 andBool TRANSFER <Int pow256
+   andBool B1 >=Int 0      andBool B1 <Int pow256
+   andBool B2 >=Int 0      andBool B2 <Int pow256
+   andBool B2 +Int TRANSFER <Int pow256
+   andBool B1 -Int TRANSFER >=Int 0
+   andBool #sizeWordStack(WS) <Int 1017
+
+

Other Work

+

KEVM

+

Too much to present here (ask offline).

+

Tests

+
    +
  • Pass all of VMTests (deprecated) and GeneralStateTests.
  • +
  • Almost passing BlockchainTests.
  • +
  • Within an order of magnitude the performance of cpp-ethereum.
  • +
+

Verification

+
    +
  • Verified ERC20 specification over (fixed) HKG Token (see Github repository).
  • +
  • Added ABI-level abstractions for easier specification of proofs (in progress).
  • +
+

High Level Languages (not discussed here)

+
    +
  • EVM-PRIME from IC3 Bootcamp.
  • +
  • Extending with more primitives to give semantics to Viper.
  • +
+

K Framework

+

Language Independent PL/FM Toolkit

+
    +
  • Parser/interpreter/debugger/model-checker/verification tools all exist.
  • +
  • Work towards semantics-based compiler (for even better performance).
  • +
+

Future Directions

+
    +
  • More analysis tools built on KEVM.
  • +
  • Other blockchain language semantics in progress.
  • +
  • Other (non-blockchain) language/systems/network semantics in progress.
  • +
+

The End

+

Acknowledgments

+ +
+
+ + +
+ +
+
+ + EVM Words + + +
+
+ + Data-Structures over Word + + +
+
+ + EVM Configuration + + +
+
+ + EVM Execution + +
+
+ + OpCode Execution + + +
+ +
+
+
+ + EVM Programs + + +
+
+ + Ethereum Gas Calculation + + +
+
+ + The Sum To N Specification + + +
+
+ + Other Work + + +
+
+ + The End + + +
+ +
+ +
+
+ +
+
+ + + + + + + + + + + diff --git a/media/201801-presentation-csf.md b/media/201801-presentation-csf.md deleted file mode 100644 index d0c27f29af..0000000000 --- a/media/201801-presentation-csf.md +++ /dev/null @@ -1,518 +0,0 @@ ---- -title: 'KEVM: A Complete Formal Semantics of the Ethereum Virtual Machine [@hildenbrandt-saxena-zhu-rodrigues-daian-guth-moore-zhang-park-rosu-2018-csf]' -subtitle: 'K, EVM, and KEVM' -author: -- Everett Hildenbrandt -- Manasvi Saxena -- Nishant Rodrigues -- Xiaoran Zhu -- Philip Daian -- Dwight Guth -- Brandon Moore -- Daejun Park -- Yi Zhang -- Andrei \c{S}tef\u{a}nescu -- Grigore Ro\c{s}u -institute: -- University of Illinois, Urbana-Champaign -- Runtime Verification, Inc. -- Cornell Tech, IC3 -- East China Normal University -date: '\today' -theme: metropolis -fontsize: 10pt -header-includes: -- \newcommand{\K}{\ensuremath{\mathbb{K}}} ---- - -Overview --------- - -1. \K{} Framework -2. Ethereum Virtual Machine -3. KEVM Uses - -### Links - -- KEVM Repository: -- K Repository: -- Runtime Verification: -- Verified smart contracts: - -\K{} Framework -============== - -The Vision: Language Independence ---------------------------------- - -Separate development of PL software into two tasks: - -. . . - -### The Programming Language - -PL expert builds rigorous and formal spec of the language in a high-level human-readable semantic framework. - -. . . - -### The Tooling - -Build each tool *once*, and apply it to every language, eg.: - -- Parser -- Interpreter -- Debugger -- Compiler -- Model Checker -- Program Verifier - -The Vision: Language Independence ---------------------------------- - -![K Tooling Overview](media/images/k-overview.png) - -Current Semantics ------------------ - -Many languages have full or partial \K{} semantics, this lists some notable ones (and their primary usage). - -- [C](https://github.com/kframework/c-semantics): detecting undefined behavior -- [Java](https://github.com/kframework/java-semantics): detecting racy code -- [EVM](https://github.com/kframework/evm-semantics): verifying smart contracts -- [LLVM](https://github.com/kframework/llvm-semantics): compiler validation (to x86) -- [JavaScript](https://github.com/kframework/javascript-semantics): finding disagreements between JS engines -- [P4](https://github.com/kframework/p4-semantics): SDN data-layer verification -- many others ... - -\K{} Specifications: Syntax ---------------------------- - -Concrete syntax built using EBNF style: - -```k - syntax Exp ::= Int | Id | "(" Exp ")" [bracket] - | Exp "*" Exp - > Exp "+" Exp // looser binding - - syntax Stmt ::= Id ":=" Exp - | Stmt ";" Stmt - | "return" Exp -``` - -. . . - -This would allow correctly parsing programs like: - -```imp - a := 3 * 2; - b := 2 * a + 5; - return b -``` - -\K{} Specifications: Configuration ----------------------------------- - -Tell \K{} about the structure of your execution state. -For example, a simple imperative language might have: - -```k - configuration $PGM:Program - .Map - .Map -``` - -. . . - -- `` will contain the initial parsed program -- `` contains bindings of variable names to store locations -- `` contains bindings of store locations to integers - -\K{} Specifications: Transition Rules -------------------------------------- - -Using the above grammar and configuration: - -. . . - -### Variable lookup - -```k - rule X:Id => V ... - ... X |-> SX ... - ... SX |-> V ... -``` - -. . . - -### Variable assignment - -```k - rule X := I:Int => . ... - ... X |-> SX ... - ... SX |-> (V => I) ... -``` - -Example Execution ------------------ - -### Program - -```imp - a := 3 * 2; - b := 2 * a + 5; - return b -``` - -### Initial Configuration - -```k - a := 3 * 2 ; b := 2 * a + 5 ; return b - a |-> 0 b |-> 1 - 0 |-> 0 1 |-> 0 -``` - -Example Execution (cont.) -------------------------- - -### Variable assignment - -```k - rule X := I:Int => . ... - ... X |-> SX ... - ... SX |-> (V => I) ... -``` - -### Next Configuration - -```k - a := 6 ~> b := 2 * a + 5 ; return b - a |-> 0 b |-> 1 - 0 |-> 0 1 |-> 0 -``` - -Example Execution (cont.) -------------------------- - -### Variable assignment - -```k - rule X := I:Int => . ... - ... X |-> SX ... - ... SX |-> (V => I) ... -``` - -### Next Configuration - -```k - b := 2 * a + 5 ; return b - a |-> 0 b |-> 1 - 0 |-> 6 1 |-> 0 -``` - -Example Execution (cont.) -------------------------- - -### Variable lookup - -```k - rule X:Id => V ... - ... X |-> SX ... - ... SX |-> V ... -``` - -### Next Configuration - -```k - a ~> b := 2 * [] + 5 ; return b - a |-> 0 b |-> 1 - 0 |-> 6 1 |-> 0 -``` - -Example Execution (cont.) -------------------------- - -### Variable lookup - -```k - rule X:Id => V ... - ... X |-> SX ... - ... SX |-> V ... -``` - -### Next Configuration - -```k - 6 ~> b := 2 * [] + 5 ; return b - a |-> 0 b |-> 1 - 0 |-> 6 1 |-> 0 -``` - -Example Execution (cont.) -------------------------- - -### Variable lookup - -```k - rule X:Id => V ... - ... X |-> SX ... - ... SX |-> V ... -``` - -### Next Configuration - -```k - b := 2 * 6 + 5 ; return b - a |-> 0 b |-> 1 - 0 |-> 6 1 |-> 0 -``` - -Example Execution (cont.) -------------------------- - -### Variable assignment - -```k - rule X := I:Int => . ... - ... X |-> SX ... - ... SX |-> (V => I) ... -``` - -### Next Configuration - -```k - b := 17 ~> return b - a |-> 0 b |-> 1 - 0 |-> 6 1 |-> 0 -``` - -Example Execution (cont.) -------------------------- - -### Variable assignment - -```k - rule X := I:Int => . ... - ... X |-> SX ... - ... SX |-> (V => I) ... -``` - -### Next Configuration - -```k - return b - a |-> 0 b |-> 1 - 0 |-> 6 1 |-> 17 -``` - -Ethereum Virtual Machine -======================== - -Blockchain ----------- - -- Append-only ledger of user-submitted transactions. -- Mostly simple transfers of value. -- Miners select next block of transactions using consensus algorithm.[^notThisTalk] -- Ethereum adds: - - New currency! (Ether) - - Accounts have an associated *storage* and *code* which only transactions by that account can read/modify (onchain). - - Transactions can have associated *programs* written in EVM (Ethereum Virtual Machine).[^smartContracts] - - Miners execute transaction code to calculate the new world state (new account balances, storage, code, etc...). - -[^notThisTalk]: This talk is not about the consensus algorithms. -[^smartContracts]: Cool kids call these programs *smart contracts*, or *contracts*. - -EVM (Ethereum Virtual Machine) ------------------------------- - -Is a stack-based bytecode over 256-bit words. - -Example program (sum 0 - 10): - -\footnotesize - -```evm - PUSH(1, 0) ; PUSH(1, 0) ; MSTORE -; PUSH(1, 10) ; PUSH(1, 32) ; MSTORE -; JUMPDEST -; PUSH(1, 0) ; PUSH(1, 32) ; MLOAD ; GT -; ISZERO ; PUSH(1, 43) ; JUMPI -; PUSH(1, 32) ; MLOAD ; PUSH(1, 0) ; MLOAD ; ADD ; PUSH(1, 0) ; MSTORE -; PUSH(1, 1) ; PUSH(1, 32) ; MLOAD ; SUB ; PUSH(1, 32) ; MSTORE -; PUSH(1, 10) ; JUMP -; JUMPDEST -; PUSH(1, 0) ; MLOAD ; PUSH(1, 0) ; SSTORE -; .OpCodes -``` - -\normalsize - -Enforcing Termination (Gas) ---------------------------- - -- User submitted transactions could have infinite loops (DoS attacks!). -- Solution: - - Each opcode costs some *gas*, paid for in Ether. - - Spent gas awarded to miner, remaining refunded to account. - -Notes: - -- It's important to charge according to actual used compute resources. -- Tuning gas costs is an *ongoing* challenge. - - New hardware available $\rightarrow$ new gas model. -- Hardforks update the gas constants/rules. - -Intercontract Executions (and the ABI) --------------------------------------- - -- Contracts can call other contracts (re-entrancy!). -- Payload to other contract is a raw string of bytes called `callData`. -- *External* to the EVM, the Ethereum ABI has been developed: -- Specifies: - - Calling conventions (how to interpret `callData` correctly). - - Some high-level types (and their mapping to EVM words). - -EVM Nuisances -------------- - -- Unstructured controlflow: dynamically calculable jump destinations. -- 256-bit words: useful for crypto, pain for hardware. -- 8-bit word-array local memory: complicates symbolic reasoning. -- No built-in calling conventions: ABI is declared external to EVM. -- `eval` capability: copying bytes as code and running is bad for analysis. - -KEVM: Status and Current Uses -============================= - -Correctness and Performance ---------------------------- - -- Pass the VMTests and GeneralStateTests of the [Ethereum Test Suite](https://github.com/ethereum/tests). - -. . . - -- Roughly an order of magnitude slower than cpp-ethereum (reference implementation in C++). - - **Test Set** (no. tests) **KEVM** **cpp-ethereum** - ------------------------- --------- ----------------- - VMAll (40683) 99:41 4:42 - GSNormal (22705) 35:00 1:30 - -. . . - -- (Non-empty) lines of code comparison: - - KEVM: 2644 - - cpp-ethereum: 4588 - -Assertion Violation Checker ---------------------------- - -- EVM has designated `INVALID` opcode, halts and discards gas. -- Has been used to specify "assertion failure" in HLLs.[^hlls] -- Symbolically execute and look for paths ending in `INVALID`. - -. . . - -- Co-invariant checking - "`INVALID` never happens". -- Very little tooling effort needed after building semantics. -- Similar techniques used to find undefined behaviour in C programs. - -[^hlls]: High-level languages (which compile to EVM). - -Reachibility Logic Prover [@stefanescu-ciobaca-mereuta-moore-serbanuta-rosu-2014-rta] -------------------------------------------------------------------------------------- - -- Takes operational semantics as input (no axiomatic semantics).[^inthiscaseK] -- Generalization of Hoare Logic: - - Hoare triple: $\{\textit{Pre}\} \textit{Code} \{\textit{Post}\}$ - - Reachability claim: $\widehat{\textit{Code}} \land \widehat{\textit{Pre}} \Rightarrow \epsilon \land \widehat{\textit{Post}}$ - - "Any instance of $\widehat{\textit{Code}}$ which satisfies $\widehat{Pre}$ either does not terminate or reaches an instance of $\epsilon$ (empty program) which satisfies $\widehat{Post}$". - No need for end state in RL to be $\epsilon$ though. -- See paper for example claims. - -. . . - -- Reachability claims are fed to \K{} prover as normal \K{} rules. -- Functional correctness directly specifiable as set reachability claims. -- Correctness bugs often lead to security bugs. - -[^inthiscaseK]: In this case, we use \K{} to specify the operational semantics. - -Reachability Logic Inference System [@stefanescu-ciobaca-mereuta-moore-serbanuta-rosu-2014-rta] ------------------------------------------------------------------------------------------------ - -![RL Inference System](media/images/proof-system.png) - -Case Study: ERC20 ------------------ - -- "Hello world" of Ethereum smart contracts. -- First full contract we verified. -- Key-value store of addresses to token balances. -- Simple methods for purchasing/transferring/selling tokens. - -. . . - -### ERC20 Uses - -- Codify ownership distribution of a company (tokenizing equity). -- Tokenize pink-slips/deeds (eg. tokenizing houses, cars). -- Ponzi schemes. - -Case Study: ERC20 - Scaling Verification ----------------------------------------- - -- First ERC20 verification took several person-months. - -. . . - -- Define state abstractions directly in \K{} itself. - - `nthbyteof` for storing symbolic word (256-bits) as 32 bytes (when written to `localMem`). - - `#abiCallData` allows using actual function name/signature in call instead of packed bytes representation. - -. . . - -- Modular specifications - - Re-use same specs for different implementations, only need delta. - - Have 5 verified implementations of ERC20, all different behaviors.[^verifiedSmartContracts] - -. . . - -- Now, can verify a (reasonable) ERC20 in about a day. - -[^verifiedSmartContracts]: See our audited ERC20s (and other contracts) at . - -Tool-Assisted Security Audits ------------------------------ - -- Runtime Verification, Inc. offers audits as a service, typical process: - 1. Specify high-level business logic in English, confirm with customer.[^usuallyNotDone] - 2. Refine to a mathematical definition, confirm with customer. - 3. Refine to a set of K Reachability Claims, confirm with customer. - 4. Fix bugs in contract and specification until the K prover is satisfied. - 5. Send all documents generated and list of issues found to customer. - -- Independent groups also using KEVM to verify contract stack (eg. [DappHub](https://github.com/kframework/dapphub)). - -[^usuallyNotDone]: Surprisingly, many smart contract developers don't have a high-level specification of their contracts. - -Thanks! -======= - -Conclusion ----------- - -- \K{} used to specify semantics of Ethereum Virtual Machine (EVM). -- Commercial verification efforts carried out with \K{} prover. - -Sponsors --------- - -The work presented in this paper was supported in part by -the Boeing grant on "Formal Analysis Tools for Cyber Security" 2016-2017, -the NSF grants CCF-1318191, CCF-1421575, CNS-1330599, CNS-1514163, and IIP-1660186, -the NSF Graduate Fellowship under Grant No. DGE-1650441, -an IOHK gift, -and a grant from the Ethereum Foundation. diff --git a/media/201801-presentation-csf/index.html b/media/201801-presentation-csf/index.html new file mode 100644 index 0000000000..9df8c696d7 --- /dev/null +++ b/media/201801-presentation-csf/index.html @@ -0,0 +1,963 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Overview

+
    +
  1. \K{} Framework
  2. +
  3. Ethereum Virtual Machine
  4. +
  5. KEVM Uses
  6. +
+ + +

\K{} Framework

+

The Vision: Language Independence

+

Separate development of PL software into two tasks:

+

. . .

+

The Programming Language

+

PL expert builds rigorous and formal spec of the language in a high-level human-readable semantic framework.

+

. . .

+

The Tooling

+

Build each tool once, and apply it to every language, eg.:

+
    +
  • Parser
  • +
  • Interpreter
  • +
  • Debugger
  • +
  • Compiler
  • +
  • Model Checker
  • +
  • Program Verifier
  • +
+

The Vision: Language Independence

+

K Tooling Overview

+

Current Semantics

+

Many languages have full or partial \K{} semantics, this lists some notable ones (and their primary usage).

+
    +
  • C: detecting undefined behavior
  • +
  • Java: detecting racy code
  • +
  • EVM: verifying smart contracts
  • +
  • LLVM: compiler validation (to x86)
  • +
  • JavaScript: finding disagreements between JS engines
  • +
  • P4: SDN data-layer verification
  • +
  • many others ...
  • +
+

\K{} Specifications: Syntax

+

Concrete syntax built using EBNF style:

+
    syntax Exp ::= Int | Id | "(" Exp ")" [bracket]
+                 | Exp "*" Exp
+                 > Exp "+" Exp // looser binding
+
+    syntax Stmt ::= Id ":=" Exp
+                  | Stmt ";" Stmt
+                  | "return" Exp
+
+

. . .

+

This would allow correctly parsing programs like:

+
    a := 3 * 2;
+    b := 2 * a + 5;
+    return b
+
+

\K{} Specifications: Configuration

+

Tell \K{} about the structure of your execution state. +For example, a simple imperative language might have:

+
    configuration <k>     $PGM:Program </k>
+                  <env>   .Map         </env>
+                  <store> .Map         </store>
+
+

. . .

+
    +
  • <k> will contain the initial parsed program
  • +
  • <env> contains bindings of variable names to store locations
  • +
  • <store> contains bindings of store locations to integers
  • +
+

\K{} Specifications: Transition Rules

+

Using the above grammar and configuration:

+

. . .

+

Variable lookup

+
    rule <k> X:Id => V ... </k>
+         <env>   ...  X |-> SX ... </env>
+         <store> ... SX |-> V  ... </store>
+
+

. . .

+

Variable assignment

+
    rule <k> X := I:Int => . ... </k>
+         <env>   ...  X |-> SX       ... </env>
+         <store> ... SX |-> (V => I) ... </store>
+
+

Example Execution

+

Program

+
    a := 3 * 2;
+    b := 2 * a + 5;
+    return b
+
+

Initial Configuration

+
    <k>     a := 3 * 2 ; b := 2 * a + 5 ; return b </k>
+    <env>   a |-> 0    b |-> 1 </env>
+    <store> 0 |-> 0    1 |-> 0 </store>
+
+

Example Execution (cont.)

+

Variable assignment

+
    rule <k> X := I:Int => . ... </k>
+         <env>   ...  X |-> SX       ... </env>
+         <store> ... SX |-> (V => I) ... </store>
+
+

Next Configuration

+
    <k>     a := 6 ~> b := 2 * a + 5 ; return b </k>
+    <env>   a |-> 0    b |-> 1 </env>
+    <store> 0 |-> 0    1 |-> 0 </store>
+
+

Example Execution (cont.)

+

Variable assignment

+
    rule <k> X := I:Int => . ... </k>
+         <env>   ...  X |-> SX       ... </env>
+         <store> ... SX |-> (V => I) ... </store>
+
+

Next Configuration

+
    <k>               b := 2 * a + 5 ; return b </k>
+    <env>   a |-> 0    b |-> 1 </env>
+    <store> 0 |-> 6    1 |-> 0 </store>
+
+

Example Execution (cont.)

+

Variable lookup

+
    rule <k> X:Id => V ... </k>
+         <env>   ...  X |-> SX ... </env>
+         <store> ... SX |-> V  ... </store>
+
+

Next Configuration

+
    <k>     a ~> b := 2 * [] + 5 ; return b </k>
+    <env>   a |-> 0    b |-> 1 </env>
+    <store> 0 |-> 6    1 |-> 0 </store>
+
+

Example Execution (cont.)

+

Variable lookup

+
    rule <k> X:Id => V ... </k>
+         <env>   ...  X |-> SX ... </env>
+         <store> ... SX |-> V  ... </store>
+
+

Next Configuration

+
    <k>     6 ~> b := 2 * [] + 5 ; return b </k>
+    <env>   a |-> 0    b |-> 1 </env>
+    <store> 0 |-> 6    1 |-> 0 </store>
+
+

Example Execution (cont.)

+

Variable lookup

+
    rule <k> X:Id => V ... </k>
+         <env>   ...  X |-> SX ... </env>
+         <store> ... SX |-> V  ... </store>
+
+

Next Configuration

+
    <k>          b := 2 * 6 + 5 ; return b </k>
+    <env>   a |-> 0    b |-> 1 </env>
+    <store> 0 |-> 6    1 |-> 0 </store>
+
+

Example Execution (cont.)

+

Variable assignment

+
    rule <k> X := I:Int => . ... </k>
+         <env>   ...  X |-> SX       ... </env>
+         <store> ... SX |-> (V => I) ... </store>
+
+

Next Configuration

+
    <k>     b := 17 ~> return b </k>
+    <env>   a |-> 0    b |-> 1 </env>
+    <store> 0 |-> 6    1 |-> 0 </store>
+
+

Example Execution (cont.)

+

Variable assignment

+
    rule <k> X := I:Int => . ... </k>
+         <env>   ...  X |-> SX       ... </env>
+         <store> ... SX |-> (V => I) ... </store>
+
+

Next Configuration

+
    <k>                return b </k>
+    <env>   a |-> 0    b |-> 1  </env>
+    <store> 0 |-> 6    1 |-> 17 </store>
+
+

Ethereum Virtual Machine

+

Blockchain

+
    +
  • Append-only ledger of user-submitted transactions.
  • +
  • Mostly simple transfers of value.
  • +
  • Miners select next block of transactions using consensus algorithm.[1]
  • +
  • Ethereum adds: +
      +
    • New currency! (Ether)
    • +
    • Accounts have an associated storage and code which only transactions by that account can read/modify (onchain).
    • +
    • Transactions can have associated programs written in EVM (Ethereum Virtual Machine).[2]
    • +
    • Miners execute transaction code to calculate the new world state (new account balances, storage, code, etc...).
    • +
    +
  • +
+

EVM (Ethereum Virtual Machine)

+

Is a stack-based bytecode over 256-bit words.

+

Example program (sum 0 - 10):

+

\footnotesize

+
  PUSH(1, 0)  ; PUSH(1, 0)  ; MSTORE
+; PUSH(1, 10) ; PUSH(1, 32) ; MSTORE
+; JUMPDEST
+; PUSH(1, 0) ; PUSH(1, 32) ; MLOAD ; GT
+; ISZERO ; PUSH(1, 43) ; JUMPI
+; PUSH(1, 32) ; MLOAD ; PUSH(1, 0)  ; MLOAD ; ADD ; PUSH(1, 0)  ; MSTORE
+; PUSH(1, 1)          ; PUSH(1, 32) ; MLOAD ; SUB ; PUSH(1, 32) ; MSTORE
+; PUSH(1, 10) ; JUMP
+; JUMPDEST
+; PUSH(1, 0) ; MLOAD ; PUSH(1, 0) ; SSTORE
+; .OpCodes
+
+

\normalsize

+

Enforcing Termination (Gas)

+
    +
  • User submitted transactions could have infinite loops (DoS attacks!).
  • +
  • Solution: +
      +
    • Each opcode costs some gas, paid for in Ether.
    • +
    • Spent gas awarded to miner, remaining refunded to account.
    • +
    +
  • +
+

Notes:

+
    +
  • It's important to charge according to actual used compute resources.
  • +
  • Tuning gas costs is an ongoing challenge. +
      +
    • New hardware available \rightarrow new gas model.
    • +
    +
  • +
  • Hardforks update the gas constants/rules.
  • +
+

Intercontract Executions (and the ABI)

+
    +
  • Contracts can call other contracts (re-entrancy!).
  • +
  • Payload to other contract is a raw string of bytes called callData.
  • +
  • External to the EVM, the Ethereum ABI has been developed:
  • +
  • Specifies: +
      +
    • Calling conventions (how to interpret callData correctly).
    • +
    • Some high-level types (and their mapping to EVM words).
    • +
    +
  • +
+

EVM Nuisances

+
    +
  • Unstructured controlflow: dynamically calculable jump destinations.
  • +
  • 256-bit words: useful for crypto, pain for hardware.
  • +
  • 8-bit word-array local memory: complicates symbolic reasoning.
  • +
  • No built-in calling conventions: ABI is declared external to EVM.
  • +
  • eval capability: copying bytes as code and running is bad for analysis.
  • +
+

KEVM: Status and Current Uses

+

Correctness and Performance

+ +

. . .

+
    +
  • +

    Roughly an order of magnitude slower than cpp-ethereum (reference implementation in C++).

    +

    Test Set (no. tests) KEVM cpp-ethereum

    +
    +

    VMAll (40683) 99:41 4:42 +GSNormal (22705) 35:00 1:30

    +
  • +
+

. . .

+
    +
  • +

    (Non-empty) lines of code comparison:

    +

    KEVM: 2644

    +

    cpp-ethereum: 4588

    +
  • +
+

Assertion Violation Checker

+
    +
  • EVM has designated INVALID opcode, halts and discards gas.
  • +
  • Has been used to specify "assertion failure" in HLLs.[3]
  • +
  • Symbolically execute and look for paths ending in INVALID.
  • +
+

. . .

+
    +
  • Co-invariant checking - "INVALID never happens".
  • +
  • Very little tooling effort needed after building semantics.
  • +
  • Similar techniques used to find undefined behaviour in C programs.
  • +
+

Reachibility Logic Prover [@stefanescu-ciobaca-mereuta-moore-serbanuta-rosu-2014-rta]

+
    +
  • Takes operational semantics as input (no axiomatic semantics).[4]
  • +
  • Generalization of Hoare Logic: +
      +
    • Hoare triple: {Pre}Code{Post}\{\textit{Pre}\} \textit{Code} \{\textit{Post}\}
    • +
    • Reachability claim: Code^Pre^ϵPost^\widehat{\textit{Code}} \land \widehat{\textit{Pre}} \Rightarrow \epsilon \land \widehat{\textit{Post}}
    • +
    • "Any instance of Code^\widehat{\textit{Code}} which satisfies Pre^\widehat{Pre} either does not terminate or reaches an instance of ϵ\epsilon (empty program) which satisfies Post^\widehat{Post}". +No need for end state in RL to be ϵ\epsilon though.
    • +
    +
  • +
  • See paper for example claims.
  • +
+

. . .

+
    +
  • Reachability claims are fed to \K{} prover as normal \K{} rules.
  • +
  • Functional correctness directly specifiable as set reachability claims.
  • +
  • Correctness bugs often lead to security bugs.
  • +
+

Reachability Logic Inference System [@stefanescu-ciobaca-mereuta-moore-serbanuta-rosu-2014-rta]

+

RL Inference System

+

Case Study: ERC20

+
    +
  • "Hello world" of Ethereum smart contracts.
  • +
  • First full contract we verified.
  • +
  • Key-value store of addresses to token balances.
  • +
  • Simple methods for purchasing/transferring/selling tokens.
  • +
+

. . .

+

ERC20 Uses

+
    +
  • Codify ownership distribution of a company (tokenizing equity).
  • +
  • Tokenize pink-slips/deeds (eg. tokenizing houses, cars).
  • +
  • Ponzi schemes.
  • +
+

Case Study: ERC20 - Scaling Verification

+
    +
  • First ERC20 verification took several person-months.
  • +
+

. . .

+
    +
  • Define state abstractions directly in \K{} itself. +
      +
    • nthbyteof for storing symbolic word (256-bits) as 32 bytes (when written to localMem).
    • +
    • #abiCallData allows using actual function name/signature in call instead of packed bytes representation.
    • +
    +
  • +
+

. . .

+
    +
  • Modular specifications +
      +
    • Re-use same specs for different implementations, only need delta.
    • +
    • Have 5 verified implementations of ERC20, all different behaviors.[5]
    • +
    +
  • +
+

. . .

+
    +
  • Now, can verify a (reasonable) ERC20 in about a day.
  • +
+

Tool-Assisted Security Audits

+
    +
  • +

    Runtime Verification, Inc. offers audits as a service, typical process:

    +
      +
    1. Specify high-level business logic in English, confirm with customer.[6]
    2. +
    3. Refine to a mathematical definition, confirm with customer.
    4. +
    5. Refine to a set of K Reachability Claims, confirm with customer.
    6. +
    7. Fix bugs in contract and specification until the K prover is satisfied.
    8. +
    9. Send all documents generated and list of issues found to customer.
    10. +
    +
  • +
  • +

    Independent groups also using KEVM to verify contract stack (eg. DappHub).

    +
  • +
+

Thanks!

+

Conclusion

+
    +
  • \K{} used to specify semantics of Ethereum Virtual Machine (EVM).
  • +
  • Commercial verification efforts carried out with \K{} prover.
  • +
+

Sponsors

+

The work presented in this paper was supported in part by +the Boeing grant on "Formal Analysis Tools for Cyber Security" 2016-2017, +the NSF grants CCF-1318191, CCF-1421575, CNS-1330599, CNS-1514163, and IIP-1660186, +the NSF Graduate Fellowship under Grant No. DGE-1650441, +an IOHK gift, +and a grant from the Ethereum Foundation.

+
+
+
    +
  1. This talk is not about the consensus algorithms. ↩︎

    +
  2. +
  3. Cool kids call these programs smart contracts, or contracts. ↩︎

    +
  4. +
  5. High-level languages (which compile to EVM). ↩︎

    +
  6. +
  7. In this case, we use \K{} to specify the operational semantics. ↩︎

    +
  8. +
  9. See our audited ERC20s (and other contracts) at https://github.com/runtimeverification/verified-smart-contracts. ↩︎

    +
  10. +
  11. Surprisingly, many smart contract developers don't have a high-level specification of their contracts. ↩︎

    +
  12. +
+
+
+
+ + +
+ +
+
+ + \K{} Framework + +
+
+ + The Vision: Language Independence + + +
+
+ + \K{} Specifications: Transition Rules + + +
+
+ + Example Execution + + +
+
+ + Example Execution (cont.) + + +
+
+ + Example Execution (cont.) + + +
+
+ + Example Execution (cont.) + + +
+
+ + Example Execution (cont.) + + +
+
+ + Example Execution (cont.) + + +
+
+ + Example Execution (cont.) + + +
+
+ + Example Execution (cont.) + + +
+ +
+
+
+ + Ethereum Virtual Machine + + +
+
+ + KEVM: Status and Current Uses + + +
+
+ + Thanks! + + +
+ +
+ +
+
+ +
+
+ + + + + + + + + + + diff --git a/media/201905-exercise-k-workshop.md b/media/201905-exercise-k-workshop.md deleted file mode 100644 index 7976f95eab..0000000000 --- a/media/201905-exercise-k-workshop.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: 'K Workshop' -subtitle: 'Understanding the K Prover' -author: -- Everett Hildenbrandt -institute: -- Runtime Verification -- ConsenSys -date: '\today' -theme: metropolis -fontsize: 8pt ---- - -Overview --------- - -- Install KEVM and KLab on your machine -- Simple uses of the `./kevm` script -- (Brief) introduction to KEVM -- Verification examples: KEVM lemma proofs, ERC20 `transfer` function -- Open verification challenge - -Install KEVM ------------- - -### KEVM - -- Branch `kevm-lemmas` of KEVM: -- Build instructions in README. - - ```sh - make deps - make build-java - make build-ocaml - ``` - -- Should be able to run: - - ```sh - make test-prove-verified - make test-prove-gen -j3 - ``` - -. . . - -### KLab - -- Branch `master` of KLab: -- Build instructions in README. - - ```sh - make deps-npm - ``` - -- Should be able to run (in KEVM repo with `klab/bin` on your `PATH`): - - ```sh - make tests/specs/verified/kevm-lemmas-spec.k - ./kevm klab-prove tests/specs/verified/kevm-lemmas-spec.k --boundary-cells k,pc - ``` - -`./kevm help` -------------- - -```sh -$ ./kevm help - -usage: ./kevm (run|kast) [--backend (ocaml|java|llvm|haskell)] * - ./kevm interpret [--backend (ocaml|llvm)] - ./kevm prove [--backend (java|haskell)] * - ./kevm klab-(run|prove) * - - ./kevm run : Run a single EVM program - ./kevm interpret : Run JSON EVM programs without K Frontend (external parser) - ./kevm prove : Run an EVM K proof - ./kevm klab-(run|prove) : Run or prove a spec and launch KLab on the execution graph. - - Note: is a path to a file containing an EVM program/test. - is a K specification to be proved. - are any arguments you want to pass to K when executing/proving. - - KLab: Make sure that the 'klab/bin' directory is on your PATH to use this option. -``` - -`./kevm` examples ------------------ - -> - Run a test: `MODE=... SCHEDULE=... ./kevm run tests/etheremu-tests/...` -> - Interpret a test (fast): `MODE=... SCHEDULE=... ./kevm interpret tests/etheremu-tests/...` -> - Run a proof: `./kevm prove tests/specs/*-spec.k` -> - Run a test under KLab: `MODE=... SCHEDULE=... ./kevm klab-run tests/ethereum-tests/...` -> - Run a proof under KLab: `./kevm klab-prove tests/ethereum-tests/...` - -Introduction to KEVM --------------------- - -- File [data.md](../data.md) defines data-structures of EVM. -- File [evm.md](../evm.md) defines the semantics itself. -- File [driver.md](../driver.md) defines the testing harness. -- File [edsl.md](../edsl.md) defines a DSL for aiding specification for proofs. - -Verification Examples ---------------------- - -### KEVM Lemmas - -- File [kevm-lemmas-spec.md](../kevm-lemmas-spec.k) -- Summaries of the "positive" cases of arithmetic opcodes and push -- Work through how to use KLab to discover preconditions -- Complete the push, push, add specification - -```sh -make test-prove-verified -``` - -. . . - -### ERC20 `transfer` functions - -- Run proof. - - ```sh - make test-prove-gen - ``` - -- Explain ini file format of [ds-token-erc20-spec.ini](../tests/specs/ds-token-erc20/ds-token-erc20-spec.ini) -- Delete all except the `transfer` blocks -- Remove `requires` clauses to explore result in KLab - -Open Verification Challenge ---------------------------- - -Rest of time. - -- Work on `transferFrom` function? -- Try to setup your own contract? - -Thanks! -------- - -- ConsenSys for hosting us! -- You all for attending! diff --git a/media/201905-exercise-k-workshop/index.html b/media/201905-exercise-k-workshop/index.html new file mode 100644 index 0000000000..3ea31d06a9 --- /dev/null +++ b/media/201905-exercise-k-workshop/index.html @@ -0,0 +1,390 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Overview

+
    +
  • Install KEVM and KLab on your machine
  • +
  • Simple uses of the ./kevm script
  • +
  • (Brief) introduction to KEVM
  • +
  • Verification examples: KEVM lemma proofs, ERC20 transfer function
  • +
  • Open verification challenge
  • +
+

Install KEVM

+

KEVM

+
    +
  • +

    Branch kevm-lemmas of KEVM: https://github.com/kframework/evm-semantics

    +
  • +
  • +

    Build instructions in README.

    +
    make deps
    +make build-java
    +make build-ocaml
    +
    +
  • +
  • +

    Should be able to run:

    +
    make test-prove-verified
    +make test-prove-gen -j3
    +
    +
  • +
+

. . .

+

KLab

+
    +
  • +

    Branch master of KLab: https://github.com/dapphub/klab

    +
  • +
  • +

    Build instructions in README.

    +
    make deps-npm
    +
    +
  • +
  • +

    Should be able to run (in KEVM repo with klab/bin on your PATH):

    +
    make tests/specs/verified/kevm-lemmas-spec.k
    +./kevm klab-prove tests/specs/verified/kevm-lemmas-spec.k --boundary-cells k,pc
    +
    +
  • +
+

./kevm help

+
$ ./kevm help
+
+usage: ./kevm (run|kast)       [--backend (ocaml|java|llvm|haskell)] <pgm>  <K args>*
+       ./kevm interpret        [--backend (ocaml|llvm)]              <pgm>
+       ./kevm prove            [--backend (java|haskell)]            <spec> <K args>*
+       ./kevm klab-(run|prove)                                       <spec> <K args>*
+
+   ./kevm run       : Run a single EVM program
+   ./kevm interpret : Run JSON EVM programs without K Frontend (external parser)
+   ./kevm prove     : Run an EVM K proof
+   ./kevm klab-(run|prove) : Run or prove a spec and launch KLab on the execution graph.
+
+   Note: <pgm> is a path to a file containing an EVM program/test.
+         <spec> is a K specification to be proved.
+         <K args> are any arguments you want to pass to K when executing/proving.
+
+   KLab: Make sure that the 'klab/bin' directory is on your PATH to use this option.
+
+

./kevm examples

+
+
    +
  • Run a test: MODE=... SCHEDULE=... ./kevm run tests/etheremu-tests/...
  • +
  • Interpret a test (fast): MODE=... SCHEDULE=... ./kevm interpret tests/etheremu-tests/...
  • +
  • Run a proof: ./kevm prove tests/specs/*-spec.k
  • +
  • Run a test under KLab: MODE=... SCHEDULE=... ./kevm klab-run tests/ethereum-tests/...
  • +
  • Run a proof under KLab: ./kevm klab-prove tests/ethereum-tests/...
  • +
+
+

Introduction to KEVM

+
    +
  • File data.md defines data-structures of EVM.
  • +
  • File evm.md defines the semantics itself.
  • +
  • File driver.md defines the testing harness.
  • +
  • File edsl.md defines a DSL for aiding specification for proofs.
  • +
+

Verification Examples

+

KEVM Lemmas

+
    +
  • File kevm-lemmas-spec.md
  • +
  • Summaries of the "positive" cases of arithmetic opcodes and push
  • +
  • Work through how to use KLab to discover preconditions
  • +
  • Complete the push, push, add specification
  • +
+
make test-prove-verified
+
+

. . .

+

ERC20 transfer functions

+
    +
  • +

    Run proof.

    +
    make test-prove-gen
    +
    +
  • +
  • +

    Explain ini file format of ds-token-erc20-spec.ini

    +
  • +
  • +

    Delete all except the transfer blocks

    +
  • +
  • +

    Remove requires clauses to explore result in KLab

    +
  • +
+

Open Verification Challenge

+

Rest of time.

+
    +
  • Work on transferFrom function?
  • +
  • Try to setup your own contract?
  • +
+

Thanks!

+
    +
  • ConsenSys for hosting us!
  • +
  • You all for attending!
  • +
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/media/201908-trufflecon-firefly.md b/media/201908-trufflecon-firefly.md deleted file mode 100644 index 20768ded3b..0000000000 --- a/media/201908-trufflecon-firefly.md +++ /dev/null @@ -1,180 +0,0 @@ ---- -title: 'Firefly' -subtitle: 'Solidity testing using KEVM' -author: -- Everett Hildenbrandt -- Grigore Rosu -institute: -- Runtime Verification -date: '\today' -theme: metropolis -fontsize: 8pt ---- - -Overview --------- - -- (Brief) Introduction to KEVM -- Introduction to Firefly -- Firefly Demo -- Future Directions - -(Brief) Introduction to KEVM ----------------------------- - -- Repository: -- Considered the canonical spec of EVM: -- All K tooling is derived automatically: - - Reference EVM interpreter - - Symbolic execution engine - - EVM bytecode formal verification engine - - Several EVM bytecode debugger options - -Introduction to Firefly ------------------------ - -- `npm` package here: . -- Drop-in replacement for `ganache-cli`, can be used directly by Truffle. - - Instead of: - - ```sh - npx ganache-cli - ``` - - run: - - ```sh - npx kevm-ganache-cli - ``` - -. . . - -### Why?? - -- Higher confidence in results (run tests with both!). -- More features to come: - - Test coverage metrics. - - Automated property verification. - - Test generation. - - Contract symbolic execution. - - ... your ideas?? - -Firefly Demo - Setup --------------------- - -Instructions from : - -. . . - -### Install KEVM (once) - -**TODO**: Update release URL. - -```sh -sudo apt install nodejs npm curl git -curl --location 'https://github.com/kframework/evm-semantics/releases/download/v1.0.0-a47e4b2/kevm_1.0.0_amd64.deb' \ - --output kevm_1.0.0_amd64.deb -sudo apt install ./kevm_1.0.0_amd64.deb -``` - -. . . - -### Install `npx` (once) - -```sh -sudo npm install -g npx -``` - -Firefly Demo - Run OpenZeppelin Tests -------------------------------------- - -### Start `kevm-ganache-cli` - -```sh -npx kevm-ganache-cli \ - --gasLimit 0xfffffffffff \ - --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501200,1000000000000000000000000" \ - --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501201,1000000000000000000000000" \ - --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501202,1000000000000000000000000" \ - --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501203,1000000000000000000000000" \ - --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501204,1000000000000000000000000" \ - --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501205,1000000000000000000000000" \ - --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501206,1000000000000000000000000" \ - --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501207,1000000000000000000000000" \ - --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501208,1000000000000000000000000" \ - --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501209,1000000000000000000000000" -``` - -. . . - -### Run OpenZeppelin tests - -```sh -git clone 'https://github.com/OpenZeppelin/openzeppelin-contracts.git' -cd openzeppelin-contracts -git checkout b8c8308 -npm install -npx truffle test test/token/ERC20/ERC20.test.js -``` - -KEVM Extensions - Event Monitoring ----------------------------------- - -Compile semantics with additional file `media/201908-trufflecon/kevm-ltl.md`. - -```k - syntax LTLEvent ::= "overflow" - // ------------------------------ - rule ADD W0 W1 ... - EVENTS (.Set => SetItem(overflow)) - requires notBool overflow in EVENTS - andBool W0 +Word W1 =/=Int W0 +Int W1 - [priority(24)] - - syntax LTLEvent ::= "revert" - // ---------------------------- - rule REVERT _ _ ... - EVENTS (.Set => SetItem(revert)) - requires notBool revert in EVENTS - [priority(24)] -``` - -- Monitors built-in to the KEVM semantics as an extension. -- Can build arbitrary LTL formula over the monitors. - -KEVM Extensions - LTL Model Checking ------------------------------------- - -### Input file `addition.evm` - -```evm -load { "gas" : 10000000 - // Query: always ((~ overflow) \/ eventually revert) - // , "code" : UNSAFEADD(100 , 100) // True - // , "code" : UNSAFEADD(maxUInt256 , 100) // False - // , "code" : SAFEADD(100 , 100) // True - , "code" : SAFEADD(maxUInt256 , 100) // True - } - -start -``` - -. . . - -### Query - -```sh -./kevm run --backend llvm media/201908-trufflecon/addition.evm -cLTLFORMULA='always (overflow -> eventually revert)' -``` - -Truffle Firefly Plugin ----------------------- - -- Developed with help from Truffle devs today as plugin! -- Modified OpenZeppelin test-suite which links to `truffle-plugin-firefly`. - -```sh -npx truffle run firefly SafeMath 'always (overflow -> eventually revert)' -``` - diff --git a/media/201908-trufflecon-firefly/index.html b/media/201908-trufflecon-firefly/index.html new file mode 100644 index 0000000000..465cce5d51 --- /dev/null +++ b/media/201908-trufflecon-firefly/index.html @@ -0,0 +1,422 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Overview

+
    +
  • (Brief) Introduction to KEVM
  • +
  • Introduction to Firefly
  • +
  • Firefly Demo
  • +
  • Future Directions
  • +
+

(Brief) Introduction to KEVM

+ +

Introduction to Firefly

+ +

. . .

+

Why??

+
    +
  • Higher confidence in results (run tests with both!).
  • +
  • More features to come: +
      +
    • Test coverage metrics.
    • +
    • Automated property verification.
    • +
    • Test generation.
    • +
    • Contract symbolic execution.
    • +
    • ... your ideas??
    • +
    +
  • +
+

Firefly Demo - Setup

+

Instructions from https://www.npmjs.com/package/kevm-ganache-cli:

+

. . .

+

Install KEVM (once)

+

TODO: Update release URL.

+
sudo apt install nodejs npm curl git
+curl --location 'https://github.com/kframework/evm-semantics/releases/download/v1.0.0-a47e4b2/kevm_1.0.0_amd64.deb' \
+     --output kevm_1.0.0_amd64.deb
+sudo apt install ./kevm_1.0.0_amd64.deb
+
+

. . .

+

Install npx (once)

+
sudo npm install -g npx
+
+

Firefly Demo - Run OpenZeppelin Tests

+

Start kevm-ganache-cli

+
npx kevm-ganache-cli                                                                                         \
+    --gasLimit 0xfffffffffff                                                                                 \
+    --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501200,1000000000000000000000000" \
+    --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501201,1000000000000000000000000" \
+    --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501202,1000000000000000000000000" \
+    --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501203,1000000000000000000000000" \
+    --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501204,1000000000000000000000000" \
+    --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501205,1000000000000000000000000" \
+    --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501206,1000000000000000000000000" \
+    --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501207,1000000000000000000000000" \
+    --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501208,1000000000000000000000000" \
+    --account="0x2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501209,1000000000000000000000000"
+
+

. . .

+

Run OpenZeppelin tests

+
git clone 'https://github.com/OpenZeppelin/openzeppelin-contracts.git'
+cd openzeppelin-contracts
+git checkout b8c8308
+npm install
+npx truffle test test/token/ERC20/ERC20.test.js
+
+

KEVM Extensions - Event Monitoring

+

Compile semantics with additional file media/201908-trufflecon/kevm-ltl.md.

+
    syntax LTLEvent ::= "overflow"
+ // ------------------------------
+    rule <k> ADD W0 W1 ... </k>
+         <events> EVENTS (.Set => SetItem(overflow)) </events>
+      requires notBool overflow in EVENTS
+       andBool W0 +Word W1 =/=Int W0 +Int W1
+      [priority(24)]
+
+    syntax LTLEvent ::= "revert"
+ // ----------------------------
+    rule <k> REVERT _ _ ... </k>
+         <events> EVENTS (.Set => SetItem(revert)) </events>
+      requires notBool revert in EVENTS
+      [priority(24)]
+
+
    +
  • Monitors built-in to the KEVM semantics as an extension.
  • +
  • Can build arbitrary LTL formula over the monitors.
  • +
+

KEVM Extensions - LTL Model Checking

+

Input file addition.evm

+
load { "gas"  : 10000000
+  // Query: always ((~ overflow) \/ eventually revert)
+  // , "code" : UNSAFEADD(100        , 100) // True
+  // , "code" : UNSAFEADD(maxUInt256 , 100) // False
+  // , "code" :   SAFEADD(100        , 100) // True
+     , "code" :   SAFEADD(maxUInt256 , 100) // True
+     }
+
+start
+
+

. . .

+

Query

+
./kevm run --backend llvm media/201908-trufflecon/addition.evm -cLTLFORMULA='always (overflow -> eventually revert)'
+
+

Truffle Firefly Plugin

+
    +
  • Developed with help from Truffle devs today as plugin!
  • +
  • Modified OpenZeppelin test-suite which links to truffle-plugin-firefly.
  • +
+
npx truffle run firefly SafeMath 'always (overflow -> eventually revert)'
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/media/201908-trufflecon-workshop.md b/media/201908-trufflecon-workshop.md deleted file mode 100644 index 0e65694486..0000000000 --- a/media/201908-trufflecon-workshop.md +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: 'K/KEVM Formal Verification Workshop' -subtitle: 'Understanding the K Prover and Runtime Verification' -author: -- Everett Hildenbrandt -- Grigore Rosu -institute: -- Runtime Verification -date: '\today' -theme: metropolis -fontsize: 8pt ---- - -Overview --------- - -- Install KEVM and KLab on your machine -- Simple uses of the `./kevm` script -- (Brief) introduction to KEVM -- Verification examples: Single opcode (`ADD`), ERC20 `transfer` function -- LTL runtime verification example - -Install KEVM: Docker Way ------------------------- - -### Get Docker Container - -```sh -docker login -# it will ask for username and password -# email will NOT work, they need their dockerhub USERNAME -# Proxy user: ehildenbproxy -# Proxy pass: ehildenb-proxy - -docker run -it -u user -w /home/user/evm-semantics \ - runtimeverificationinc/evm-semantics:trufflecon -``` - -### Setup Environment - -```sh -cd ../ -eval $(cat env) -cd evm-semantics -which klab -``` - -Install KEVM: From Source -------------------------- - -### KEVM - -- Branch `trufflecon` of KEVM: -- Build instructions in README. - - ```sh - make llvm-deps - make build-java - ``` - -. . . - -### KLab - -- Branch `master` of KLab: -- Build instructions in README. - - ```sh - make deps-npm - ``` - -- Patch KLab (comment lines 90 - 94 of `lib/behavior.js`). -- Should be able to run (in KEVM repo with `klab/bin` on your `PATH`): - - ```sh - ./kevm klab-prove add-spec.k - ./kevm klab-view add-spec.k - ``` - -`./kevm help` -------------- - -```sh -usage: ./kevm run [--backend (ocaml|java|llvm|haskell)] * - ./kevm interpret [--backend (ocaml|llvm)] * - ./kevm kast [--backend (ocaml|java)] * - ./kevm prove [--backend (java|haskell)] * -m - ./kevm search [--backend (java|haskell)] * - ./kevm klab-run * - ./kevm klab-prove * -m - ./kevm klab-view - - ./kevm run : Run a single EVM program - ./kevm interpret : Run JSON EVM programs without K Frontend (external parser) - ./kevm kast : Parse an EVM program and output it in a supported format - ./kevm prove : Run an EVM K proof - ./kevm search : Search for a K pattern in an EVM program execution - ./kevm klab-(run|prove) : Run program or prove spec and dump StateLogs which KLab can read - ./kevm klab-view : View the statelog associated with a given program or spec - - Note: is a path to a file containing an EVM program/test. - is a K specification to be proved. - is an argument you want to pass to K. - is an argument you want to pass to the derived interpreter. - is the format for Kast to output the term in. - is the configuration pattern to search for. - is the module to take as axioms when doing verification. - - klab-view: Make sure that the 'klab/bin' directory is on your PATH to use this option. -``` - -`./kevm` examples ------------------ - -- Run a test: `./kevm run tests/etheremu-tests/...` -- Interpret a test (fast): `./kevm interpret tests/etheremu-tests/...` -- Run a proof: `./kevm prove tests/specs/*-spec.k` -- Run a test under KLab: `./kevm klab-run tests/ethereum-tests/...` -- Run a proof under KLab: `./kevm klab-prove tests/ethereum-tests/...` - -- Environment variables `MODE` and `SCHEDULE` control how KEVM executes. -- `MODE` can be `NORMAL` or `VMTESTS`. -- `SCHEDULE` can be `DEFAULT`, `FRONTIER`, `HOMESTEAD`, `TANGERINE_WHISTLE`, `SPURIOUS_DRAGON`, `BYZANTIUM`, `CONSTANTINOPLE`, or `PETERSBURG`. - -Introduction to KEVM --------------------- - -- [data.md](../data.md) defines data-structures of EVM. -- [network.md](../network.md) defines the EVMC status codes. -- [evm.md](../evm.md) defines the semantics itself. -- [driver.md](../driver.md) defines the testing harness. -- [edsl.md](../edsl.md) defines a DSL for aiding specification for proofs. -- [evm-node.md](../evm-node.md) defines the protobuf interface to use KEVM over RPC. - -Understanding the K Prover: Single Opcode ------------------------------------------ - -File `add-spec.k`: - -```k -requires "evm.k" - -module ADD-SPEC - imports EVM - - rule #next [ ADD ] => . ... - SCHEDULE - W0 : W1 : WS => chop(W0 +Int W1) : WS - PCOUNT => PCOUNT +Int 1 - G => G -Int Gverylow < SCHEDULE > - requires G >=Int Gverylow < SCHEDULE > - andBool notBool ( #stackUnderflow ( W0 : W1 : WS , ADD ) - orBool #stackOverflow ( W0 : W1 : WS , ADD ) - ) -endmodule -``` - -. . . - -- `./kevm prove add-spec.k --def-module EVM` -- `./kevm klab-prove add-spec.k --def-module EVM` -- `./kevm klab-view add-spec.k --def-module EVM` - -. . . - -- Try with side-conditions removed. - -LTL Runtime Verification ------------------------- - -- Compile semantics with `media/201908-trufflecon/kevm-ltl.md`, which instruments semantics (*without* modifying it). -- Build definition: - - ```sh - cp media/201908-trufflecon/kevm-ltl.md kevm-ltl.md - make MAIN_MODULE=KEVM-LTL MAIN_DEFN_FILE=kevm-ltl build-llvm - ``` - -- Try verifying a property: - - ```sh - ./kevm run --backend llvm media/201908-trufflecon/addition.evm -cLTLFORMULA='eventually revert' - ./kevm run --backend llvm media/201908-trufflecon/addition.evm -cLTLFORMULA='always ((~ overflow) \/ eventually revert)' - ``` - -Thanks! -------- - -- TruffleCon for hosting us! -- You all for attending! diff --git a/media/201908-trufflecon-workshop/index.html b/media/201908-trufflecon-workshop/index.html new file mode 100644 index 0000000000..0a97c88f27 --- /dev/null +++ b/media/201908-trufflecon-workshop/index.html @@ -0,0 +1,450 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Overview

+
    +
  • Install KEVM and KLab on your machine
  • +
  • Simple uses of the ./kevm script
  • +
  • (Brief) introduction to KEVM
  • +
  • Verification examples: Single opcode (ADD), ERC20 transfer function
  • +
  • LTL runtime verification example
  • +
+

Install KEVM: Docker Way

+

Get Docker Container

+
docker login
+# it will ask for username and password
+# email will NOT work, they need their dockerhub USERNAME
+# Proxy user: ehildenbproxy
+# Proxy pass: ehildenb-proxy
+
+docker run -it -u user -w /home/user/evm-semantics  \
+    runtimeverificationinc/evm-semantics:trufflecon
+
+

Setup Environment

+
cd ../
+eval $(cat env)
+cd evm-semantics
+which klab
+
+

Install KEVM: From Source

+

KEVM

+ +

. . .

+

KLab

+
    +
  • +

    Branch master of KLab: https://github.com/dapphub/klab

    +
  • +
  • +

    Build instructions in README.

    +
    make deps-npm
    +
    +
  • +
  • +

    Patch KLab (comment lines 90 - 94 of lib/behavior.js).

    +
  • +
  • +

    Should be able to run (in KEVM repo with klab/bin on your PATH):

    +
    ./kevm klab-prove add-spec.k
    +./kevm klab-view  add-spec.k
    +
    +
  • +
+

./kevm help

+
usage: ./kevm run        [--backend (ocaml|java|llvm|haskell)] <pgm>  <K arg>*
+       ./kevm interpret  [--backend (ocaml|llvm)]              <pgm>  <interpreter arg>*
+       ./kevm kast       [--backend (ocaml|java)]              <pgm>  <output format> <K arg>*
+       ./kevm prove      [--backend (java|haskell)]            <spec> <K arg>* -m <def_module>
+       ./kevm search     [--backend (java|haskell)]            <pgm>  <pattern> <K arg>*
+       ./kevm klab-run                                         <pgm>  <K arg>*
+       ./kevm klab-prove                                       <spec> <K arg>* -m <def_module>
+       ./kevm klab-view                                        <spec>
+
+   ./kevm run       : Run a single EVM program
+   ./kevm interpret : Run JSON EVM programs without K Frontend (external parser)
+   ./kevm kast      : Parse an EVM program and output it in a supported format
+   ./kevm prove     : Run an EVM K proof
+   ./kevm search    : Search for a K pattern in an EVM program execution
+   ./kevm klab-(run|prove) : Run program or prove spec and dump StateLogs which KLab can read
+   ./kevm klab-view : View the statelog associated with a given program or spec
+
+   Note: <pgm> is a path to a file containing an EVM program/test.
+         <spec> is a K specification to be proved.
+         <K arg> is an argument you want to pass to K.
+         <interpreter arg> is an argument you want to pass to the derived interpreter.
+         <output format> is the format for Kast to output the term in.
+         <pattern> is the configuration pattern to search for.
+         <def_module> is the module to take as axioms when doing verification.
+
+   klab-view: Make sure that the 'klab/bin' directory is on your PATH to use this option.
+
+

./kevm examples

+
    +
  • +

    Run a test: ./kevm run tests/etheremu-tests/...

    +
  • +
  • +

    Interpret a test (fast): ./kevm interpret tests/etheremu-tests/...

    +
  • +
  • +

    Run a proof: ./kevm prove tests/specs/*-spec.k

    +
  • +
  • +

    Run a test under KLab: ./kevm klab-run tests/ethereum-tests/...

    +
  • +
  • +

    Run a proof under KLab: ./kevm klab-prove tests/ethereum-tests/...

    +
  • +
  • +

    Environment variables MODE and SCHEDULE control how KEVM executes.

    +
  • +
  • +

    MODE can be NORMAL or VMTESTS.

    +
  • +
  • +

    SCHEDULE can be DEFAULT, FRONTIER, HOMESTEAD, TANGERINE_WHISTLE, SPURIOUS_DRAGON, BYZANTIUM, CONSTANTINOPLE, or PETERSBURG.

    +
  • +
+

Introduction to KEVM

+
    +
  • data.md defines data-structures of EVM.
  • +
  • network.md defines the EVMC status codes.
  • +
  • evm.md defines the semantics itself.
  • +
  • driver.md defines the testing harness.
  • +
  • edsl.md defines a DSL for aiding specification for proofs.
  • +
  • evm-node.md defines the protobuf interface to use KEVM over RPC.
  • +
+

Understanding the K Prover: Single Opcode

+

File add-spec.k:

+
requires "evm.k"
+
+module ADD-SPEC
+    imports EVM
+
+    rule <k> #next [ ADD ] => . ... </k>
+         <schedule> SCHEDULE </schedule>
+         <wordStack> W0 : W1 : WS => chop(W0 +Int W1) : WS </wordStack>
+         <pc> PCOUNT => PCOUNT +Int 1 </pc>
+         <gas> G => G -Int Gverylow < SCHEDULE > </gas>
+      requires G >=Int Gverylow < SCHEDULE >
+       andBool notBool ( #stackUnderflow ( W0 : W1 : WS , ADD )
+                  orBool #stackOverflow  ( W0 : W1 : WS , ADD )
+                       )
+endmodule
+
+

. . .

+
    +
  • ./kevm prove add-spec.k --def-module EVM
  • +
  • ./kevm klab-prove add-spec.k --def-module EVM
  • +
  • ./kevm klab-view add-spec.k --def-module EVM
  • +
+

. . .

+
    +
  • Try with side-conditions removed.
  • +
+

LTL Runtime Verification

+
    +
  • +

    Compile semantics with media/201908-trufflecon/kevm-ltl.md, which instruments semantics (without modifying it).

    +
  • +
  • +

    Build definition:

    +
    cp media/201908-trufflecon/kevm-ltl.md kevm-ltl.md
    +make MAIN_MODULE=KEVM-LTL MAIN_DEFN_FILE=kevm-ltl build-llvm
    +
    +
  • +
  • +

    Try verifying a property:

    +
    ./kevm run --backend llvm media/201908-trufflecon/addition.evm -cLTLFORMULA='eventually revert'
    +./kevm run --backend llvm media/201908-trufflecon/addition.evm -cLTLFORMULA='always ((~ overflow) \/ eventually revert)'
    +
    +
  • +
+

Thanks!

+
    +
  • TruffleCon for hosting us!
  • +
  • You all for attending!
  • +
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/media/201908-trufflecon/add-gas-spec.k b/media/201908-trufflecon/add-gas-spec.k deleted file mode 100644 index f72dcaebf9..0000000000 --- a/media/201908-trufflecon/add-gas-spec.k +++ /dev/null @@ -1,14 +0,0 @@ -requires "evm.k" - -module ADD-GAS-SPEC - imports EVM - - rule #next [ ADD ] => . ... - SCHEDULE - W0 : W1 : WS => chop(W0 +Int W1) : WS - PCOUNT => PCOUNT +Int 1 - G => G -Int Gverylow < SCHEDULE > - requires notBool ( #stackUnderflow ( W0 : W1 : WS , ADD ) - orBool #stackOverflow ( W0 : W1 : WS , ADD ) - ) -endmodule diff --git a/media/201908-trufflecon/add-overflow-spec.k b/media/201908-trufflecon/add-overflow-spec.k deleted file mode 100644 index 86c28ead47..0000000000 --- a/media/201908-trufflecon/add-overflow-spec.k +++ /dev/null @@ -1,14 +0,0 @@ -requires "evm.k" - -module ADD-OVERFLOW-SPEC - imports EVM - - rule #next [ ADD ] => . ... - SCHEDULE - W0 : W1 : WS => chop(W0 +Int W1) : WS - PCOUNT => PCOUNT +Int 1 - G => G -Int Gverylow < SCHEDULE > - requires G >=Int Gverylow < SCHEDULE > - andBool notBool ( #stackUnderflow ( W0 : W1 : WS , ADD ) - ) -endmodule diff --git a/media/201908-trufflecon/add-spec.k b/media/201908-trufflecon/add-spec.k deleted file mode 100644 index 4d01e97045..0000000000 --- a/media/201908-trufflecon/add-spec.k +++ /dev/null @@ -1,15 +0,0 @@ -requires "evm.k" - -module ADD-SPEC - imports EVM - - rule #next [ ADD ] => . ... - SCHEDULE - W0 : W1 : WS => chop(W0 +Int W1) : WS - PCOUNT => PCOUNT +Int 1 - G => G -Int Gverylow < SCHEDULE > - requires G >=Int Gverylow < SCHEDULE > - andBool notBool ( #stackUnderflow ( W0 : W1 : WS , ADD ) - orBool #stackOverflow ( W0 : W1 : WS , ADD ) - ) -endmodule diff --git a/media/201908-trufflecon/addition.evm b/media/201908-trufflecon/addition.evm deleted file mode 100644 index ee44b00f30..0000000000 --- a/media/201908-trufflecon/addition.evm +++ /dev/null @@ -1,9 +0,0 @@ -load { "gas" : 10000000 - // Query: always ((~ overflow) \/ eventually revert) - // , "code" : UNSAFEADD(100 , 100) // True - // , "code" : UNSAFEADD(maxUInt256 , 100) // False - // , "code" : SAFEADD(100 , 100) // True - , "code" : SAFEADD(maxUInt256 , 100) // True - } - -start diff --git a/media/201908-trufflecon/kevm-ltl.md b/media/201908-trufflecon/kevm-ltl.md deleted file mode 100644 index 4a9d01f246..0000000000 --- a/media/201908-trufflecon/kevm-ltl.md +++ /dev/null @@ -1,175 +0,0 @@ -```k -requires "evm.k" - -module LTL - imports BOOL - imports SET - imports LIST - - configuration - - $LTLFORMULA:LTLFormula - .EventId - .Set - .List - - - syntax EventId ::= ".EventId" - // ----------------------------- - - syntax KItem ::= EventId "{" Set "}" - // ------------------------------------ - - syntax KItem ::= LTLFormula - // --------------------------- - - syntax LTLFormula ::= LTLderive ( LTLFormula , Set ) [function] - // --------------------------------------------------------------- - - syntax LTLEvent - // --------------- - - syntax LTLAtom ::= "True" - | "False" - // -------------------------- - rule LTLderive(LTLA:LTLAtom, _) => LTLA - - syntax LTLFormula ::= "(" LTLFormula ")" [bracket] - | LTLAtom - | LTLEvent - // ------------------------------ - rule LTLderive(E:LTLEvent, ES) => True requires E in ES - rule LTLderive(E:LTLEvent, ES) => False requires notBool E in ES - - syntax LTLFormula ::= "~" LTLFormula - | LTLFormula "\\/" LTLFormula - | LTLFormula "/\\" LTLFormula - // ------------------------------------------------- - rule ~ True => False [anywhere] - rule ~ False => True [anywhere] - - rule True \/ FORM2 => True [anywhere] - rule FORM1 \/ True => True [anywhere] - - rule False \/ FORM2 => FORM2 [anywhere] - rule FORM1 \/ False => FORM1 [anywhere] - - rule True /\ FORM2 => FORM2 [anywhere] - rule FORM1 /\ True => FORM1 [anywhere] - - rule False /\ FORM2 => False [anywhere] - rule FORM1 /\ False => False [anywhere] - - rule LTLderive(~ FORM , ES) => ~ LTLderive(FORM, ES) - rule LTLderive(FORM1 \/ FORM2 , ES) => LTLderive(FORM1, ES) \/ LTLderive(FORM2, ES) - rule LTLderive(FORM1 /\ FORM2 , ES) => LTLderive(FORM1, ES) /\ LTLderive(FORM2, ES) - - syntax LTLFormula ::= LTLFormula "->" LTLFormula [macro] - // -------------------------------------------------------- - rule FORM1 -> FORM2 => (~ FORM1) \/ FORM2 - - syntax LTLFormula ::= "always" LTLFormula - | "eventually" LTLFormula - // --------------------------------------------- - rule LTLderive(always FORM, ES) => LTLderive(FORM, ES) /\ always FORM - rule LTLderive(eventually FORM, ES) => LTLderive(FORM, ES) \/ eventually FORM - - syntax LTLFormula ::= LTLterminate ( LTLFormula ) [function] - // ------------------------------------------------------------ - rule LTLterminate(~ FORM1) => ~ LTLterminate(FORM1) - rule LTLterminate(FORM1 /\ FORM2) => LTLterminate(FORM1) /\ LTLterminate(FORM2) - rule LTLterminate(FORM1 \/ FORM2) => LTLterminate(FORM1) \/ LTLterminate(FORM2) - - rule LTLterminate(always _) => True - rule LTLterminate(eventually _) => False -endmodule - -module KEVM-LTL - imports EVM - imports LTL - - configuration - - - - - - syntax EthereumSimulation ::= EthereumCommand | EthereumCommand EthereumSimulation - // ---------------------------------------------------------------------------------- - rule ETC:EthereumCommand ETS:EthereumSimulation => ETC ~> ETS ... - - syntax JSON ::= OpCodes | Int - // ----------------------------- - - syntax EthereumCommand ::= "load" JSON | "start" - // ------------------------------------------------ - rule load { "gas" : GAVAIL , "code" : OPS:OpCodes , .JSONList } => . ... - true - _ => GAVAIL - _ => #asMapOpCodes(OPS) - _ => 0 - - rule load { "gas" : _ , "code" : OPS:OpCodes , .JSONList } => . ... - false - _ => #asMapOpCodes(OPS) - _ => 0 - - rule start => #execute ... - - syntax OpCodes ::= UNSAFEADD ( Int , Int ) [function] - | SAFEADD ( Int , Int ) [function] - // ----------------------------------------------------- - rule UNSAFEADD(X, Y) => PUSH(32, X) ; PUSH(32, Y) ; ADD ; .OpCodes - rule SAFEADD(X, Y) => PUSH(32, X) ; PUSH(32, Y) ; ADD ; PUSH(32, 0) ; MSTORE // add - ; PUSH(32, X) ; PUSH(32, 0) ; MLOAD ; GT ; PUSH(32, 372) ; JUMPI // check overflow - ; PUSH(32, Y) ; PUSH(32, 0) ; MLOAD ; GT ; PUSH(32, 372) ; JUMPI // check overflow - ; PUSH(32, 0) ; PUSH(32, 0) ; REVERT // revert - ; JUMPDEST ; PUSH(32, 0) ; MLOAD ; .OpCodes // no revert - - syntax EventId ::= Int - // ---------------------- - rule #execute ... - PCOUNT - FORM => LTLderive(FORM, EVENTS) - EID => PCOUNT - EVENTS => .Set - TRACE:List (.List => ListItem(EID { EVENTS })) - requires EID =/=K PCOUNT - [priority(24)] - - rule #halt - FORM => LTLderive(FORM, EVENTS) - EID => .EventId - EVENTS => .Set - TRACE:List (.List => ListItem(EID { EVENTS })) - requires EID =/=K .EventId - [priority(24)] - - rule #halt - FORM => LTLterminate(FORM) - .EventId - requires notBool isLTLAtom(FORM) - - syntax LTLEvent ::= "overflow" - // ------------------------------ - rule ADD W0 W1 ... - EVENTS (.Set => SetItem(overflow)) - requires notBool overflow in EVENTS - andBool W0 +Word W1 =/=Int W0 +Int W1 - [priority(24)] - - syntax LTLEvent ::= "revert" - // ---------------------------- - rule REVERT _ _ ... - EVENTS (.Set => SetItem(revert)) - requires notBool revert in EVENTS - [priority(24)] - - syntax LTLEvent ::= "invalid" - // ----------------------------- - rule INVALID ... - EVENTS (.Set => SetItem(invalid)) - requires notBool invalid in EVENTS - [priority(24)] -endmodule -``` diff --git a/media/201908-trufflecon/kevm-ltl/index.html b/media/201908-trufflecon/kevm-ltl/index.html new file mode 100644 index 0000000000..bddf842a3b --- /dev/null +++ b/media/201908-trufflecon/kevm-ltl/index.html @@ -0,0 +1,353 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+
requires "evm.k"
+
+module LTL
+    imports BOOL
+    imports SET
+    imports LIST
+
+    configuration
+      <ltl>
+        <formula> $LTLFORMULA:LTLFormula </formula>
+        <eventsId> .EventId </eventsId>
+        <events> .Set </events>
+        <trace> .List </trace>
+      </ltl>
+
+    syntax EventId ::= ".EventId"
+ // -----------------------------
+
+    syntax KItem ::= EventId "{" Set "}"
+ // ------------------------------------
+
+    syntax KItem ::= LTLFormula
+ // ---------------------------
+
+    syntax LTLFormula ::= LTLderive ( LTLFormula , Set ) [function]
+ // ---------------------------------------------------------------
+
+    syntax LTLEvent
+ // ---------------
+
+    syntax LTLAtom ::= "True"
+                     | "False"
+ // --------------------------
+    rule LTLderive(LTLA:LTLAtom, _) => LTLA
+
+    syntax LTLFormula ::= "(" LTLFormula ")" [bracket]
+                        | LTLAtom
+                        | LTLEvent
+ // ------------------------------
+    rule LTLderive(E:LTLEvent, ES) => True  requires         E in ES
+    rule LTLderive(E:LTLEvent, ES) => False requires notBool E in ES
+
+    syntax LTLFormula ::= "~" LTLFormula
+                        | LTLFormula "\\/" LTLFormula
+                        | LTLFormula "/\\" LTLFormula
+ // -------------------------------------------------
+    rule ~ True  => False [anywhere]
+    rule ~ False => True  [anywhere]
+
+    rule True  \/ FORM2 => True [anywhere]
+    rule FORM1 \/ True  => True [anywhere]
+
+    rule False \/ FORM2 => FORM2 [anywhere]
+    rule FORM1 \/ False => FORM1 [anywhere]
+
+    rule True  /\ FORM2 => FORM2 [anywhere]
+    rule FORM1 /\ True  => FORM1 [anywhere]
+
+    rule False /\ FORM2 => False [anywhere]
+    rule FORM1 /\ False => False [anywhere]
+
+    rule LTLderive(~ FORM         , ES) => ~ LTLderive(FORM, ES)
+    rule LTLderive(FORM1 \/ FORM2 , ES) => LTLderive(FORM1, ES) \/ LTLderive(FORM2, ES)
+    rule LTLderive(FORM1 /\ FORM2 , ES) => LTLderive(FORM1, ES) /\ LTLderive(FORM2, ES)
+
+    syntax LTLFormula ::= LTLFormula "->" LTLFormula [macro]
+ // --------------------------------------------------------
+    rule FORM1 -> FORM2 => (~ FORM1) \/ FORM2
+
+    syntax LTLFormula ::= "always"     LTLFormula
+                        | "eventually" LTLFormula
+ // ---------------------------------------------
+    rule LTLderive(always     FORM, ES) => LTLderive(FORM, ES) /\ always     FORM
+    rule LTLderive(eventually FORM, ES) => LTLderive(FORM, ES) \/ eventually FORM
+
+    syntax LTLFormula ::= LTLterminate ( LTLFormula ) [function]
+ // ------------------------------------------------------------
+    rule LTLterminate(~ FORM1)        => ~ LTLterminate(FORM1)
+    rule LTLterminate(FORM1 /\ FORM2) => LTLterminate(FORM1) /\ LTLterminate(FORM2)
+    rule LTLterminate(FORM1 \/ FORM2) => LTLterminate(FORM1) \/ LTLterminate(FORM2)
+
+    rule LTLterminate(always _)     => True
+    rule LTLterminate(eventually _) => False
+endmodule
+
+module KEVM-LTL
+    imports EVM
+    imports LTL
+
+    configuration
+      <kevm-ltl>
+        <kevm/>
+        <ltl/>
+      </kevm-ltl>
+
+    syntax EthereumSimulation ::= EthereumCommand | EthereumCommand EthereumSimulation
+ // ----------------------------------------------------------------------------------
+    rule <k> ETC:EthereumCommand ETS:EthereumSimulation => ETC ~> ETS ... </k>
+
+    syntax JSON ::= OpCodes | Int
+ // -----------------------------
+
+    syntax EthereumCommand ::= "load" JSON | "start"
+ // ------------------------------------------------
+    rule <k> load { "gas" : GAVAIL , "code" : OPS:OpCodes , .JSONList } => . ... </k>
+         <useGas> true </useGas>
+         <gas> _ => GAVAIL </gas>
+         <program> _ => #asMapOpCodes(OPS) </program>
+         <exit-code> _ => 0 </exit-code>
+
+    rule <k> load { "gas" : _ , "code" : OPS:OpCodes , .JSONList } => . ... </k>
+         <useGas> false </useGas>
+         <program> _ => #asMapOpCodes(OPS) </program>
+         <exit-code> _ => 0 </exit-code>
+
+    rule <k> start => #execute ... </k>
+
+    syntax OpCodes ::= UNSAFEADD ( Int , Int ) [function]
+                     |   SAFEADD ( Int , Int ) [function]
+ // -----------------------------------------------------
+    rule UNSAFEADD(X, Y) => PUSH(32, X) ; PUSH(32, Y) ; ADD ; .OpCodes
+    rule   SAFEADD(X, Y) => PUSH(32, X) ; PUSH(32, Y) ; ADD ; PUSH(32, 0) ; MSTORE         // add
+                          ; PUSH(32, X) ; PUSH(32, 0) ; MLOAD ; GT ; PUSH(32, 372) ; JUMPI // check overflow
+                          ; PUSH(32, Y) ; PUSH(32, 0) ; MLOAD ; GT ; PUSH(32, 372) ; JUMPI // check overflow
+                          ; PUSH(32, 0) ; PUSH(32, 0) ; REVERT                             // revert
+                          ; JUMPDEST ; PUSH(32, 0) ; MLOAD ; .OpCodes                      // no revert
+
+    syntax EventId ::= Int
+ // ----------------------
+    rule <k> #execute ... </k>
+         <pc> PCOUNT </pc>
+         <formula> FORM => LTLderive(FORM, EVENTS) </formula>
+         <eventsId> EID => PCOUNT </eventsId>
+         <events> EVENTS => .Set </events>
+         <trace> TRACE:List (.List => ListItem(EID { EVENTS })) </trace>
+      requires EID =/=K PCOUNT
+      [priority(24)]
+
+    rule <k> #halt </k>
+         <formula> FORM => LTLderive(FORM, EVENTS) </formula>
+         <eventsId> EID => .EventId </eventsId>
+         <events> EVENTS => .Set </events>
+         <trace> TRACE:List (.List => ListItem(EID { EVENTS })) </trace>
+      requires EID =/=K .EventId
+      [priority(24)]
+
+    rule <k> #halt </k>
+         <formula> FORM => LTLterminate(FORM) </formula>
+         <eventsId> .EventId </eventsId>
+      requires notBool isLTLAtom(FORM)
+
+    syntax LTLEvent ::= "overflow"
+ // ------------------------------
+    rule <k> ADD W0 W1 ... </k>
+         <events> EVENTS (.Set => SetItem(overflow)) </events>
+      requires notBool overflow in EVENTS
+       andBool W0 +Word W1 =/=Int W0 +Int W1
+      [priority(24)]
+
+    syntax LTLEvent ::= "revert"
+ // ----------------------------
+    rule <k> REVERT _ _ ... </k>
+         <events> EVENTS (.Set => SetItem(revert)) </events>
+      requires notBool revert in EVENTS
+      [priority(24)]
+
+    syntax LTLEvent ::= "invalid"
+ // -----------------------------
+    rule <k> INVALID ... </k>
+         <events> EVENTS (.Set => SetItem(invalid)) </events>
+      requires notBool invalid in EVENTS
+      [priority(24)]
+endmodule
+
+
+
+ + +
+ +
+
+ +
+
+ + + + + + + + + + + diff --git a/media/citations.md b/media/citations.md deleted file mode 100644 index 36c9ee09c8..0000000000 --- a/media/citations.md +++ /dev/null @@ -1,1151 +0,0 @@ - -References ----------- - ---- -references: -- id: luumaking - type: no-type - author: - - family: Luu - given: Loi - - family: Chu - given: Duc-Hiep - - family: Olickel - given: Hrishi - - family: Saxena - given: Prateek - - family: Hobor - given: Aquinas - issued: - - year: '2016' - title: Making smart contracts smarter - publisher: Cryptology ePrint Archive, Report 2016/633 - note: - -- id: hiraidefining - type: no-type - author: - - family: Hirai - given: Yoichi - issued: - - year: '2017' - title: Defining the ethereum virtual machine for interactive theorem provers - publisher: WSTC17, International Conference on Financial Cryptography and Data Security - -- id: guth2013formal - type: article-journal - author: - - family: Guth - given: Dwight - issued: - - year: '2013' - title: A formal semantics of Python 3.3 - note: - -- id: mulligan2014lem - type: paper-conference - author: - - family: Mulligan - given: Dominic P - - family: Owens - given: Scott - - family: Gray - given: Kathryn E - - family: Ridge - given: Tom - - family: Sewell - given: Peter - issued: - - year: '2014' - title: 'Lem: Reusable engineering of real-world semantics' - title-short: Lem - container-title: ACM sigplan notices - collection-number: '9' - publisher: ACM - page: '175-188' - volume: '49' - -- id: chen2003towards - type: article-journal - author: - - family: Chen - given: Feng - - family: Roşu - given: Grigore - issued: - - year: '2003' - title: 'Towards monitoring-oriented programming: A paradigm combining specification - and implementation' - title-short: Towards monitoring-oriented programming - container-title: Electronic Notes in Theoretical Computer Science - publisher: Elsevier - page: '108-127' - volume: '89' - issue: '2' - -- id: kapproach - type: no-type - author: - - family: Rosu - given: Grigore - - literal: others - issued: - - year: '2017' - title: Programming language design and semantics - publisher: Formal Systems Lab, University of Illinois - note: - -- id: szabo1994smart - type: article-journal - author: - - family: Szabo - given: Nick - issued: - - year: '1994' - title: Smart contracts - container-title: Unpublished manuscript - note: - -- id: peters2016understanding - type: chapter - author: - - family: Peters - given: Gareth W - - family: Panayi - given: Efstathios - issued: - - year: '2016' - title: 'Understanding modern banking ledgers through blockchain technologies: - Future of transaction processing and smart contracts on the internet of money' - title-short: Understanding modern banking ledgers through blockchain technologies - container-title: Banking beyond banks and money - publisher: Springer - page: '239-278' - -- id: atzei2016survey - type: article-journal - author: - - family: Atzei - given: Nicola - - family: Bartoletti - given: Massimo - - family: Cimoli - given: Tiziana - issued: - - year: '2016' - title: A survey of attacks on Ethereum smart contracts. - container-title: IACR Cryptology ePrint Archive - page: '1007' - volume: '2016' - -- id: narayanan2016bitcoin - type: book - author: - - family: Narayanan - given: Arvind - - family: Bonneau - given: Joseph - - family: Felten - given: Edward - - family: Miller - given: Andrew - - family: Goldfeder - given: Steven - issued: - - year: '2016' - title: 'Bitcoin and cryptocurrency technologies: A comprehensive introduction' - title-short: Bitcoin and cryptocurrency technologies - publisher: Princeton University Press - -- id: sasson2014zerocash - type: paper-conference - author: - - family: Sasson - given: Eli Ben - - family: Chiesa - given: Alessandro - - family: Garman - given: Christina - - family: Green - given: Matthew - - family: Miers - given: Ian - - family: Tromer - given: Eran - - family: Virza - given: Madars - issued: - - year: '2014' - title: 'Zerocash: Decentralized anonymous payments from bitcoin' - title-short: Zerocash - container-title: Security and privacy (sp), 2014 ieee symposium on - publisher: IEEE - page: '459-474' - -- id: ethereum - type: no-type - author: - - family: Buterin - given: Vitalik - - literal: Ethereum Foundation - issued: - - year: '2013' - title: Ethereum White Paper - publisher: Ethereum - note: - -- id: barras1997coq - type: thesis - author: - - family: Barras - given: Bruno - - family: Boutin - given: Samuel - - family: Cornes - given: Cristina - - family: Courant - given: Judicaël - - family: Filliatre - given: Jean-Christophe - - family: Gimenez - given: Eduardo - - family: Herbelin - given: Hugo - - family: Huet - given: Gerard - - family: Munoz - given: Cesar - - family: Murthy - given: Chetan - - literal: others - issued: - - year: '1997' - title: 'The coq proof assistant reference manual: Version 6.1' - title-short: The coq proof assistant reference manual - publisher: Inria - genre: PhD thesis - -- id: ethsplit - type: article-journal - author: - - family: Quenston - given: Andrew - issued: - - year: '2016' - title: Ethereum’s blockchain accidentally splits - publisher: CryptoCoinsNews - note: - -- id: daofork - type: article-journal - author: - - family: Castillo - given: Michael - dropping-particle: del - issued: - - year: '2016' - title: Ethereum executes blockchain hard fork to return DAO funds - publisher: Coindesk - note: - -- id: icorush - type: article-journal - author: - - family: Melendez - given: Steven - issued: - - year: '2017' - title: 'Inside the ico bubble: Why initial coin offerings have raised more than - \$1 billion since January' - title-short: Inside the ico bubble - publisher: Fast Company - note: - -- id: hkg - type: article-journal - author: - - family: Manning - given: Jim - issued: - - year: '2017' - title: Ether.Camp’s hkg token has a bug and needs to be reissued - publisher: ETHNews - note: - -- id: paritymultisig - type: article-journal - author: - - family: Breidenbach - given: Lorenz - - family: Daian - given: Phil - - family: Juels - given: Ari - - family: Sirer - given: Emin Gün - issued: - - year: '2017' - title: An in-depth look at the parity multisig bug - publisher: Hacking Distributed - note: - -- id: paritymultisig2 - type: no-type - author: - - family: Steiner - given: Jutta - issued: - - year: '2017' - title: 'Security is a process: A postmortem on the parity multi-sig library self-destruct' - title-short: Security is a process - publisher: Ethcore - note: - -- id: smartbillions - type: no-type - author: - - family: Solana - given: Jasmine - issued: - - year: '2017' - title: \$500K hack challenge backfires on blockchain lottery SmartBillions - publisher: CalvinAyre - note: - -- id: mkr - type: article-journal - author: - - family: jupiter0 - issued: - - year: '2016' - title: 'From the MAKER DAO slack: “Today we discovered a vulnerability in the - ETH token wrapper which would let anyone drain it.”' - title-short: From the MAKER DAO slack - publisher: Reddit - note: - -- id: eea - type: article-journal - author: - - family: Ainger - given: Neil - issued: - - year: '2017' - title: Bigger than bitcoin? Enterprise Ethereum Alliance grows in size - publisher: CNBC - note: - -- id: moser2013inquiry - type: paper-conference - author: - - family: Moser - given: Malte - - family: Bohme - given: Rainer - - family: Breuker - given: Dominic - issued: - - year: '2013' - title: An inquiry into money laundering tools in the bitcoin ecosystem - container-title: ECrime researchers summit (eCRS), 2013 - publisher: IEEE - page: '1-14' - -- id: coindeskformal - type: article-journal - author: - - family: Rizzo - given: Pete - issued: - - year: '2016' - title: In formal verification push, Ethereum seeks smart contract certainty - publisher: Coindesk - note: - -- id: daian2016runtime - type: paper-conference - author: - - family: Daian - given: Philip - - family: Guth - given: Dwight - - family: Hathhorn - given: Chris - - family: Li - given: Yilong - - family: Pek - given: Edgar - - family: Saxena - given: Manasvi - - family: Serbanuta - given: Traian Florin - - family: Rosu - given: Grigore - issued: - - year: '2016' - month: '09' - title: 'Runtime verification at work: A tutorial' - title-short: Runtime verification at work - container-title: Runtime verification - 16th international conference, RV 2016 madrid, - spain, september 23-30, 2016, proceedings - collection-title: Lecture notes in computer science - publisher: Springer - page: '46-67' - volume: '10012' - DOI: http://dx.doi.org/10.1007/978-3-319-46982-9_5 - -- id: ellison2012executable - type: paper-conference - author: - - family: Ellison - given: Chucky - - family: Rosu - given: Grigore - issued: - - year: '2012' - month: 01 - title: An executable formal semantics of c with applications - container-title: Proceedings of the 39th acm sigplan-sigact symposium on principles - of programming languages (popl’12) - publisher: ACM - page: '533-544' - DOI: http://doi.acm.org/10.1145/2103656.2103719 - -- id: thinkingsecurity - type: article-journal - author: - - family: Buterin - given: Vitalik - issued: - - year: '2016' - title: Thinking about smart contract security - publisher: Ethereum Blog - note: - -- id: ethfoundationformal - type: article-journal - author: - - family: Reitwiessner - given: Christian - issued: - - year: '2016' - title: 'Dev update: Formal methods' - title-short: Dev update - publisher: Ethereum Blog - note: - -- id: ong2015evaluating - type: article-journal - author: - - family: Ong - given: Bobby - - family: Lee - given: Teik Ming - - family: Li - given: Guo - - family: Chuen - given: DLK - issued: - - year: '2015' - title: Evaluating the potential of alternative cryptocurrencies - container-title: 'Handbook of digital currency. Amsterdam: Elsevier' - page: '81-135' - -- id: wilkinson2014storj - type: article-journal - author: - - family: Wilkinson - given: Shawn - - family: Boshevski - given: Tome - - family: Brandoff - given: Josh - - family: Buterin - given: Vitalik - issued: - - year: '2014' - title: Storj a peer-to-peer cloud storage network - publisher: Citeseer - note: - -- id: delmolino2016step - type: paper-conference - author: - - family: Delmolino - given: Kevin - - family: Arnett - given: Mitchell - - family: Kosba - given: Ahmed - - family: Miller - given: Andrew - - family: Shi - given: Elaine - issued: - - year: '2016' - title: 'Step by step towards creating a safe smart contract: Lessons and insights - from a cryptocurrency lab' - title-short: Step by step towards creating a safe smart contract - container-title: International conference on financial cryptography and data security - publisher: Springer - page: '79-94' - -- id: kogias2016enhancing - type: paper-conference - author: - - family: Kogias - given: Eleftherios Kokoris - - family: Jovanovic - given: Philipp - - family: Gailly - given: Nicolas - - family: Khoffi - given: Ismail - - family: Gasser - given: Linus - - family: Ford - given: Bryan - issued: - - year: '2016' - title: Enhancing bitcoin security and performance with strong consistency via collective - signing - container-title: 25th USENIX security symposium (USENIX security 16) - publisher: USENIX Association - publisher-place: Austin, TX - page: '279-296' - URL: https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/kogias - ISBN: '978-1-931971-32-4' - -- id: stefanescu-park-yuwen-li-rosu-2016-oopsla - type: paper-conference - author: - - family: Ştefănescu - given: Andrei - - family: Park - given: Daejun - - family: Yuwen - given: Shijiao - - family: Li - given: Yilong - - family: Roşu - given: Grigore - issued: - - year: '2016' - month: '11' - title: Semantics-based program verifiers for all languages - container-title: Proceedings of the 31th conference on object-oriented programming, - systems, languages, and applications (oopsla’16) - publisher: ACM - -- id: rosu-serbanuta-2010-jlap - type: article-journal - author: - - family: Roşu - given: Grigore - - family: Şerbănuţă - given: Traian Florin - issued: - - year: '2010' - title: An overview of the K semantic framework - container-title: Journal of Logic and Algebraic Programming - page: '397-434' - volume: '79' - issue: '6' - note: - DOI: 10.1016/j.jlap.2010.03.012 - -- id: serbanuta-rosu-2010-wrla - type: paper-conference - author: - - family: Şerbanuţă - given: Traian Florin - - family: Roşu - given: Grigore - issued: - - year: '2010' - month: 03 - title: 'K-Maude: A rewriting based tool for semantics of programming languages' - title-short: K-Maude - container-title: Proceedings of the 8th international workshop on rewriting logic - and its applications (wrla’10) - publisher: Springer - page: '104-122' - DOI: http://dx.doi.org/10.1007/978-3-642-16310-4_8 - -- id: nakamoto2008bitcoin - type: no-type - author: - - family: Nakamoto - given: Satoshi - issued: - - year: '2008' - title: 'Bitcoin: A peer-to-peer electronic cash system' - title-short: Bitcoin - note: - -- id: dao-attack - type: no-type - author: - - family: Daian - given: Phil - issued: - - year: '2016' - title: DAO attack - note: - -- id: hathhorn-ellison-rosu-2015-pldi - type: paper-conference - author: - - family: Hathhorn - given: Chris - - family: Ellison - given: Chucky - - family: Roşu - given: Grigore - issued: - - year: '2015' - month: 06 - title: Defining the undefinedness of c - container-title: Proceedings of the 36th acm sigplan conference on programming language - design and implementation (pldi’15) - publisher: ACM - page: '336-345' - DOI: http://dx.doi.org/10.1145/2813885.2737979 - -- id: bogdanas-rosu-2015-popl - type: paper-conference - author: - - family: Bogdănaş - given: Denis - - family: Roşu - given: Grigore - issued: - - year: '2015' - month: 01 - title: '[K-Java: A Complete Semantics of Java]{.nocase}' - container-title: Proceedings of the 42nd symposium on principles of programming - languages (popl’15) - publisher: ACM - page: '445-456' - DOI: http://dx.doi.org/10.1145/2676726.2676982 - -- id: park-stefanescu-rosu-2015-pldi - type: paper-conference - author: - - family: Park - given: Daejun - - family: Ştefănescu - given: Andrei - - family: Roşu - given: Grigore - issued: - - year: '2015' - month: 06 - title: 'KJS: A complete formal semantics of JavaScript' - title-short: KJS - container-title: Proceedings of the 36th acm sigplan conference on programming language - design and implementation (pldi’15) - publisher: ACM - page: '346-356' - DOI: http://dx.doi.org/10.1145/2737924.2737991 - -- id: ellison-2012-thesis - type: thesis - author: - - family: Ellison - given: Chucky - issued: - - year: '2012' - month: 07 - title: A formal semantics of C with applications - publisher: University of Illinois - genre: PhD thesis - -- id: stefanescu-ciobaca-mereuta-moore-serbanuta-rosu-2014-rta - type: paper-conference - author: - - family: Ştefănescu - given: Andrei - - family: Ciobâcă - given: Ştefan - - family: Mereuţă - given: Radu - - family: Moore - given: Brandon M. - - family: Şerbănuţă - given: Traian Florin - - family: Roşu - given: Grigore - issued: - - year: '2014' - month: 07 - title: All-path reachability logic - container-title: Proceedings of the joint 25th international conference on rewriting - techniques and applications and 12th international conference on typed lambda - calculi and applications (rta-tlca’14) - collection-title: LNCS - publisher: Springer - page: '425-440' - volume: '8560' - DOI: http://dx.doi.org/10.1007/978-3-319-08918-8_29 - -- id: de2008z3 - type: paper-conference - author: - - family: De Moura - given: Leonardo - - family: Bjørner - given: Nikolaj - issued: - - year: '2008' - title: 'Z3: An efficient smt solver' - title-short: Z3 - container-title: International conference on tools and algorithms for the construction - and analysis of systems - publisher: Springer Berlin Heidelberg - page: '337-340' - -- id: guth-hathhorn-saxena-rosu-2016-cav - type: paper-conference - author: - - family: Guth - given: Dwight - - family: Hathhorn - given: Chris - - family: Saxena - given: Manasvi - - family: Rosu - given: Grigore - issued: - - year: '2016' - month: 07 - title: 'RV-Match: Practical semantics-based program analysis' - title-short: RV-Match - container-title: Computer aided verification - 28th international conference (CAV - 2016), toronto, on, canada, july 17-23, 2016, proceedings, part I - collection-title: LNCS - publisher: Springer - page: '447-453' - volume: '9779' - DOI: http://dx.doi.org/10.1007/978-3-319-41528-4_24 - -- id: fstar-etaps - type: paper-conference - author: - - family: Grishchenko - given: Ilya - - family: Maffei - given: Matteo - - family: Schneidewind - given: Clara - editor: - - family: Bauer - given: Lujo - - family: Küsters - given: Ralf - issued: - - year: '2018' - title: A semantic framework for the security analysis of ethereum smart contracts - container-title: Principles of security and trust - publisher: Springer International Publishing - publisher-place: Cham - page: '243-269' - abstract: 'Smart contracts are programs running on cryptocurrency (e.g., Ethereum) - blockchains, whose popularity stem from the possibility to perform financial transactions, - such as payments and auctions, in a distributed environment without need for any - trusted third party. Given their financial nature, bugs or vulnerabilities in - these programs may lead to catastrophic consequences, as witnessed by recent attacks. - Unfortunately, programming smart contracts is a delicate task that requires strong - expertise: Ethereum smart contracts are written in Solidity, a dedicated language - resembling JavaScript, and shipped over the blockchain in the EVM bytecode format. - In order to rigorously verify the security of smart contracts, it is of paramount - importance to formalize their semantics as well as the security properties of - interest, in particular at the level of the bytecode being executed.' - ISBN: '978-3-319-89722-6' - -- id: fstar-tr - type: article-journal - author: - - family: Grishchenko - given: Ilya - - family: Maffei - given: Matteo - - family: Schneidewind - given: Clara - issued: - - year: '2018' - title: A semantic framework for the security analysis of ethereum smart contracts. - technical report. - note: - -- id: wood2014ethereum - type: article-journal - author: - - family: Wood - given: Gavin - issued: - - year: '2014' - title: 'Ethereum: A secure decentralised generalised transaction ledger' - title-short: Ethereum - note: (Updated for EIP-150 in 2017) - -- id: solidity - type: no-type - author: - - literal: Ethereum - issued: - - year: '2017' - title: Ethereum solidity documentation - note: - -- id: serpent - type: no-type - author: - - literal: Ethereum - issued: - - year: '2017' - title: Ethereum serpent documentation - note: - -- id: ktoisabelle - type: no-type - author: - - family: Li - given: Liyi - issued: - - year: '2015' - title: K Framework to Isabelle - note: - -- id: why3 - type: chapter - author: - - family: Filliâtre - given: Jean-Christophe - - family: Paskevich - given: Andrei - editor: - - family: Felleisen - given: Matthias - - family: Gardner - given: Philippa - issued: - - year: '2013' - title: Why3 — where programs meet provers - container-title: 'Programming languages and systems: 22nd european symposium on - programming, esop 2013, held as part of the european joint conferences on theory - and practice of software, etaps 2013, rome, italy, march 16-24, 2013. proceedings' - publisher: Springer Berlin Heidelberg - publisher-place: Berlin, Heidelberg - page: '125-128' - URL: https://doi.org/10.1007/978-3-642-37036-6_8 - DOI: 10.1007/978-3-642-37036-6_8 - ISBN: '978-3-642-37036-6' - -- id: rosu-2015-rta - type: article-journal - author: - - family: Roşu - given: Grigore - issued: - - year: '2017' - title: Matching logic - container-title: Logical Methods in Computer Science - volume: to appear - DOI: http://arxiv.org/abs/1705.06312 - -- id: meseguer-20-years-rewriting - type: article-journal - author: - - family: Meseguer - given: José - issued: - - year: '2012' - title: Twenty years of rewriting logic - container-title: The Journal of Logic and Algebraic Programming - page: 721 - 781 - volume: '81' - issue: '7' - note: Rewriting Logic and its Applications - URL: http://www.sciencedirect.com/science/article/pii/S1567832612000707 - DOI: http://dx.doi.org/10.1016/j.jlap.2012.06.003 - ISSN: '1567-8326' - -- id: rosu-stefanescu-2012-fm - type: paper-conference - author: - - family: Roşu - given: Grigore - - family: Ştefănescu - given: Andrei - issued: - - year: '2012' - month: '8' - title: From Hoare Logic to Matching Logic Reachability - container-title: Proceedings of the 18th international symposium on formal methods - (fm’12) - collection-title: LNCS - publisher: Springer - page: '387-402' - volume: '7436' - abstract: 'Matching logic reachability has been recently proposed as an alternative - program verification approach. Unlike Hoare logic, where one defines a language-specific - proof system that needs to be proved sound for each language separately, matching - logic reachability provides a \*language-independent\* and \*sound\* proof system - that directly uses the trusted operational semantics of the language as axioms. - Matching logic reachability thus has a clear practical advantage: it eliminates - the need for an additional semantics of the same language in order to reason about - programs, and implicitly eliminates the need for tedious soundness proofs. What - is not clear, however, is whether matching logic reachability is as powerful as - Hoare logic. This paper introduces a technique to mechanically translate Hoare - logic proof derivations into equivalent matching logic reachability proof derivations. - The presented technique has two consequences: first, it suggests that matching - logic reachability has no theoretical limitation over Hoare logic; and second, - it provides a new approach to prove Hoare logics sound.' - DOI: http://dx.doi.org/10.1007/978-3-642-32759-9_32 - -- id: ethereum-abi - type: no-type - author: - - literal: Ethereum - issued: - - year: '2017' - title: Ethereum application binary support - note: - -- id: viper-url - type: no-type - author: - - literal: Ethereum - issued: - - year: '2017' - title: Viper - new experimental programming language - note: - -- id: viper-snapshot - type: no-type - author: - - literal: Ethereum - issued: - - year: '2017' - title: Viper compiler snapshot (commit a886850c1d) - note: - -- id: k-url - type: no-type - author: - - literal: Formal Systems Lab, UIUC - issued: - - year: '2006' - title: The K framework - note: - -- id: evm-repo - type: no-type - author: - - literal: KEVM Team - issued: - - year: '2017' - title: 'KEVM: Semantics of evm in k' - title-short: KEVM - publisher: - -- id: verified-smart-contracts - type: no-type - author: - - literal: KEVM - - literal: Runtime Verification - issued: - - year: '2018' - title: 'Github: Verified Smart Contracts' - title-short: Github - publisher: - -- id: yellowpaper-bug-136 - type: no-type - author: - - literal: KEVM Team - issued: - - year: '2017' - title: Yellowpaper Issue 136 - publisher: Link to issues removed for double blind review - -- id: yellowpaper-bug-160 - type: no-type - author: - - literal: KEVM Team - issued: - - year: '2017' - title: Yellowpaper Issue 160 - publisher: Link to issues removed for double blind review - -- id: yellowpaper-bug-216 - type: no-type - author: - - literal: KEVM Team - issued: - - year: '2017' - title: Yellowpaper Issue 216 - publisher: Link to issues removed for double blind review - -- id: ViperBugsReported - type: no-type - author: - - literal: KEVM Team - issued: - - year: '2017' - title: Viper Issue 410, 411, 448, 449, 450, 451, 453, 469 - publisher: , , - , , - , , - , - note: 'Accessed:' - -- id: semantics-based-verifiers - type: paper-conference - author: - - family: Ştefănescu - given: Andrei - - family: Park - given: Daejun - - family: Yuwen - given: Shijao - - family: Li - given: Yilong - - family: Roşu - given: Grigore - issued: - - year: '2016' - title: Semantics-based program verifiers for all languages - container-title: OOPSLA - publisher: ACM - page: '74-91' - DOI: 10.1145/2983990.2984027 - -- id: k-tutorial-url - type: no-type - author: - - literal: FSL, UIUC - issued: - - year: '2012' - title: K tutorial - publisher: - -- id: trailofbits-manticore - type: no-type - author: - - family: Bits - given: Trail - dropping-particle: of - issued: - - year: '2017' - title: 'Manticore: Symbolic execution for humans' - title-short: Manticore - publisher: - -- id: rosu-2017-lmcs - type: article-journal - author: - - family: Roşu - given: Grigore - issued: - - year: '2017' - title: Matching logic - container-title: Logical Methods in Computer Science - DOI: http://arxiv.org/abs/1705.06312 - -- id: erc-20-url - type: no-type - author: - - literal: The Ethereum Foundation - issued: - - year: '2017' - title: ERC20 token standard - publisher: - -- id: ethereum-tests-url - type: no-type - author: - - literal: The Ethereum Foundation - issued: - - year: '2015' - title: Ethereum tests - publisher: - -- id: viper-docs-url - type: no-type - author: - - literal: The Ethereum Foundation - issued: - - year: '2017' - title: Viper - publisher: - -- id: jellopaper - type: no-type - author: - - literal: KEVM Team - issued: - - year: '2017' - title: The evm semantic “jello paper" - publisher: - -- id: securify - type: no-type - author: - - literal: Software Reliability Lab, ETH Zurich - issued: - - year: '2017' - title: Securify formal verification of ethereum smart contracts - note: https://securify.ch/ - -- id: hildenbrandt-saxena-zhu-rodrigues-daian-guth-moore-zhang-park-rosu-2018-csf - type: paper-conference - author: - - family: Hildenbrandt - given: Everett - - family: Saxena - given: Manasvi - - family: Zhu - given: Xiaoran - - family: Rodrigues - given: Nishant - - family: Daian - given: Philip - - family: Guth - given: Dwight - - family: Moore - given: Brandon - - family: Zhang - given: Yi - - family: Park - given: Daejun - - family: Ştefănescu - given: Andrei - - family: Roşu - given: Grigore - issued: - - year: '2018' - title: 'KEVM: A complete semantics of the ethereum virtual machine' - title-short: KEVM - container-title: Computer security foundations symposium - abstract: 'A developing field of interest for the distributed systems and applied - cryptography communities is that of smart contracts: self-executing financial - instruments that synchronize their state, often through a blockchain. One such - smart contract system that has seen widespread practical adoption is Ethereum, - which has grown to a market capacity of 100 billion USD and clears an excess of - 500,000 daily transactions.Unfortunately, the rise of these technologies has been - marred by a series of costly bugs and exploits. Increasingly, the Ethereum community - has turned to formal methods and rigorous program analysis tools. This trend holds - great promise due to the relative simplicity of smart contracts and bounded-time - deterministic execution inherent to the Ethereum Virtual Machine (EVM).Here we - present KEVM, an executable formal specification of the EVM’s bytecode stack-based - language built with the Framework, designed to serve as a solid foundation for - further formal analyses. We empirically evaluate the correctness and performance - of KEVM using the official Ethereum test suite [@ethereum-tests-url]ethereum-tests-url. - To demonstrate the usability, several extensions of the semantics are presented - and two different-language implementations of the ERC20 Standard Token are verified - against the ERC20 specification. These results are encouraging for the executable - semantics approach to language prototyping and specification.' ---- diff --git a/media/citations/index.html b/media/citations/index.html new file mode 100644 index 0000000000..c22856c338 --- /dev/null +++ b/media/citations/index.html @@ -0,0 +1,1563 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

References

+
+

references:

+
    +
  • +

    id: luumaking +type: no-type +author:

    +
      +
    • family: Luu +given: Loi
    • +
    • family: Chu +given: Duc-Hiep
    • +
    • family: Olickel +given: Hrishi
    • +
    • family: Saxena +given: Prateek
    • +
    • family: Hobor +given: Aquinas +issued:
    • +
    • year: '2016' +title: Making smart contracts smarter +publisher: Cryptology ePrint Archive, Report 2016/633 +note: http://eprint.iacr.org/2016/633
    • +
    +
  • +
  • +

    id: hiraidefining +type: no-type +author:

    +
      +
    • family: Hirai +given: Yoichi +issued:
    • +
    • year: '2017' +title: Defining the ethereum virtual machine for interactive theorem provers +publisher: WSTC17, International Conference on Financial Cryptography and Data Security
    • +
    +
  • +
  • +

    id: guth2013formal +type: article-journal +author:

    + +
  • +
  • +

    id: mulligan2014lem +type: paper-conference +author:

    +
      +
    • family: Mulligan +given: Dominic P
    • +
    • family: Owens +given: Scott
    • +
    • family: Gray +given: Kathryn E
    • +
    • family: Ridge +given: Tom
    • +
    • family: Sewell +given: Peter +issued:
    • +
    • year: '2014' +title: 'Lem: Reusable engineering of real-world semantics' +title-short: Lem +container-title: ACM sigplan notices +collection-number: '9' +publisher: ACM +page: '175-188' +volume: '49'
    • +
    +
  • +
  • +

    id: chen2003towards +type: article-journal +author:

    +
      +
    • family: Chen +given: Feng
    • +
    • family: Roşu +given: Grigore +issued:
    • +
    • year: '2003' +title: 'Towards monitoring-oriented programming: A paradigm combining specification +and implementation' +title-short: Towards monitoring-oriented programming +container-title: Electronic Notes in Theoretical Computer Science +publisher: Elsevier +page: '108-127' +volume: '89' +issue: '2'
    • +
    +
  • +
  • +

    id: kapproach +type: no-type +author:

    + +
  • +
  • +

    id: szabo1994smart +type: article-journal +author:

    + +
  • +
  • +

    id: peters2016understanding +type: chapter +author:

    +
      +
    • family: Peters +given: Gareth W
    • +
    • family: Panayi +given: Efstathios +issued:
    • +
    • year: '2016' +title: 'Understanding modern banking ledgers through blockchain technologies: +Future of transaction processing and smart contracts on the internet of money' +title-short: Understanding modern banking ledgers through blockchain technologies +container-title: Banking beyond banks and money +publisher: Springer +page: '239-278'
    • +
    +
  • +
  • +

    id: atzei2016survey +type: article-journal +author:

    +
      +
    • family: Atzei +given: Nicola
    • +
    • family: Bartoletti +given: Massimo
    • +
    • family: Cimoli +given: Tiziana +issued:
    • +
    • year: '2016' +title: A survey of attacks on Ethereum smart contracts. +container-title: IACR Cryptology ePrint Archive +page: '1007' +volume: '2016'
    • +
    +
  • +
  • +

    id: narayanan2016bitcoin +type: book +author:

    +
      +
    • family: Narayanan +given: Arvind
    • +
    • family: Bonneau +given: Joseph
    • +
    • family: Felten +given: Edward
    • +
    • family: Miller +given: Andrew
    • +
    • family: Goldfeder +given: Steven +issued:
    • +
    • year: '2016' +title: 'Bitcoin and cryptocurrency technologies: A comprehensive introduction' +title-short: Bitcoin and cryptocurrency technologies +publisher: Princeton University Press
    • +
    +
  • +
  • +

    id: sasson2014zerocash +type: paper-conference +author:

    +
      +
    • family: Sasson +given: Eli Ben
    • +
    • family: Chiesa +given: Alessandro
    • +
    • family: Garman +given: Christina
    • +
    • family: Green +given: Matthew
    • +
    • family: Miers +given: Ian
    • +
    • family: Tromer +given: Eran
    • +
    • family: Virza +given: Madars +issued:
    • +
    • year: '2014' +title: 'Zerocash: Decentralized anonymous payments from bitcoin' +title-short: Zerocash +container-title: Security and privacy (sp), 2014 ieee symposium on +publisher: IEEE +page: '459-474'
    • +
    +
  • +
  • +

    id: ethereum +type: no-type +author:

    + +
  • +
  • +

    id: barras1997coq +type: thesis +author:

    +
      +
    • family: Barras +given: Bruno
    • +
    • family: Boutin +given: Samuel
    • +
    • family: Cornes +given: Cristina
    • +
    • family: Courant +given: Judicaël
    • +
    • family: Filliatre +given: Jean-Christophe
    • +
    • family: Gimenez +given: Eduardo
    • +
    • family: Herbelin +given: Hugo
    • +
    • family: Huet +given: Gerard
    • +
    • family: Munoz +given: Cesar
    • +
    • family: Murthy +given: Chetan
    • +
    • literal: others +issued:
    • +
    • year: '1997' +title: 'The coq proof assistant reference manual: Version 6.1' +title-short: The coq proof assistant reference manual +publisher: Inria +genre: PhD thesis
    • +
    +
  • +
  • +

    id: ethsplit +type: article-journal +author:

    + +
  • +
  • +

    id: daofork +type: article-journal +author:

    +
      +
    • family: Castillo +given: Michael +dropping-particle: del +issued:
    • +
    • year: '2016' +title: Ethereum executes blockchain hard fork to return DAO funds +publisher: Coindesk +note: http://goo.gl/MpwrhS
    • +
    +
  • +
  • +

    id: icorush +type: article-journal +author:

    +
      +
    • family: Melendez +given: Steven +issued:
    • +
    • year: '2017' +title: 'Inside the ico bubble: Why initial coin offerings have raised more than +$1 billion since January' +title-short: Inside the ico bubble +publisher: Fast Company +note: http://goo.gl/7b5nCd
    • +
    +
  • +
  • +

    id: hkg +type: article-journal +author:

    + +
  • +
  • +

    id: paritymultisig +type: article-journal +author:

    + +
  • +
  • +

    id: paritymultisig2 +type: no-type +author:

    +
      +
    • family: Steiner +given: Jutta +issued:
    • +
    • year: '2017' +title: 'Security is a process: A postmortem on the parity multi-sig library self-destruct' +title-short: Security is a process +publisher: Ethcore +note: http://goo.gl/LBh1vR
    • +
    +
  • +
  • +

    id: smartbillions +type: no-type +author:

    + +
  • +
  • +

    id: mkr +type: article-journal +author:

    + +
  • +
  • +

    id: eea +type: article-journal +author:

    + +
  • +
  • +

    id: moser2013inquiry +type: paper-conference +author:

    +
      +
    • family: Moser +given: Malte
    • +
    • family: Bohme +given: Rainer
    • +
    • family: Breuker +given: Dominic +issued:
    • +
    • year: '2013' +title: An inquiry into money laundering tools in the bitcoin ecosystem +container-title: ECrime researchers summit (eCRS), 2013 +publisher: IEEE +page: '1-14'
    • +
    +
  • +
  • +

    id: coindeskformal +type: article-journal +author:

    + +
  • +
  • +

    id: daian2016runtime +type: paper-conference +author:

    +
      +
    • family: Daian +given: Philip
    • +
    • family: Guth +given: Dwight
    • +
    • family: Hathhorn +given: Chris
    • +
    • family: Li +given: Yilong
    • +
    • family: Pek +given: Edgar
    • +
    • family: Saxena +given: Manasvi
    • +
    • family: Serbanuta +given: Traian Florin
    • +
    • family: Rosu +given: Grigore +issued:
    • +
    • year: '2016' +month: '09' +title: 'Runtime verification at work: A tutorial' +title-short: Runtime verification at work +container-title: Runtime verification - 16th international conference, RV 2016 madrid, +spain, september 23-30, 2016, proceedings +collection-title: Lecture notes in computer science +publisher: Springer +page: '46-67' +volume: '10012' +DOI: http://dx.doi.org/10.1007/978-3-319-46982-9_5
    • +
    +
  • +
  • +

    id: ellison2012executable +type: paper-conference +author:

    +
      +
    • family: Ellison +given: Chucky
    • +
    • family: Rosu +given: Grigore +issued:
    • +
    • year: '2012' +month: 01 +title: An executable formal semantics of c with applications +container-title: Proceedings of the 39th acm sigplan-sigact symposium on principles +of programming languages (popl’12) +publisher: ACM +page: '533-544' +DOI: http://doi.acm.org/10.1145/2103656.2103719
    • +
    +
  • +
  • +

    id: thinkingsecurity +type: article-journal +author:

    + +
  • +
  • +

    id: ethfoundationformal +type: article-journal +author:

    + +
  • +
  • +

    id: ong2015evaluating +type: article-journal +author:

    +
      +
    • family: Ong +given: Bobby
    • +
    • family: Lee +given: Teik Ming
    • +
    • family: Li +given: Guo
    • +
    • family: Chuen +given: DLK +issued:
    • +
    • year: '2015' +title: Evaluating the potential of alternative cryptocurrencies +container-title: 'Handbook of digital currency. Amsterdam: Elsevier' +page: '81-135'
    • +
    +
  • +
  • +

    id: wilkinson2014storj +type: article-journal +author:

    +
      +
    • family: Wilkinson +given: Shawn
    • +
    • family: Boshevski +given: Tome
    • +
    • family: Brandoff +given: Josh
    • +
    • family: Buterin +given: Vitalik +issued:
    • +
    • year: '2014' +title: Storj a peer-to-peer cloud storage network +publisher: Citeseer +note: https://storj.io/storj.pdf
    • +
    +
  • +
  • +

    id: delmolino2016step +type: paper-conference +author:

    +
      +
    • family: Delmolino +given: Kevin
    • +
    • family: Arnett +given: Mitchell
    • +
    • family: Kosba +given: Ahmed
    • +
    • family: Miller +given: Andrew
    • +
    • family: Shi +given: Elaine +issued:
    • +
    • year: '2016' +title: 'Step by step towards creating a safe smart contract: Lessons and insights +from a cryptocurrency lab' +title-short: Step by step towards creating a safe smart contract +container-title: International conference on financial cryptography and data security +publisher: Springer +page: '79-94'
    • +
    +
  • +
  • +

    id: kogias2016enhancing +type: paper-conference +author:

    +
      +
    • family: Kogias +given: Eleftherios Kokoris
    • +
    • family: Jovanovic +given: Philipp
    • +
    • family: Gailly +given: Nicolas
    • +
    • family: Khoffi +given: Ismail
    • +
    • family: Gasser +given: Linus
    • +
    • family: Ford +given: Bryan +issued:
    • +
    • year: '2016' +title: Enhancing bitcoin security and performance with strong consistency via collective +signing +container-title: 25th USENIX security symposium (USENIX security 16) +publisher: USENIX Association +publisher-place: Austin, TX +page: '279-296' +URL: https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/kogias +ISBN: '978-1-931971-32-4'
    • +
    +
  • +
  • +

    id: stefanescu-park-yuwen-li-rosu-2016-oopsla +type: paper-conference +author:

    +
      +
    • family: Ştefănescu +given: Andrei
    • +
    • family: Park +given: Daejun
    • +
    • family: Yuwen +given: Shijiao
    • +
    • family: Li +given: Yilong
    • +
    • family: Roşu +given: Grigore +issued:
    • +
    • year: '2016' +month: '11' +title: Semantics-based program verifiers for all languages +container-title: Proceedings of the 31th conference on object-oriented programming, +systems, languages, and applications (oopsla’16) +publisher: ACM
    • +
    +
  • +
  • +

    id: rosu-serbanuta-2010-jlap +type: article-journal +author:

    +
      +
    • family: Roşu +given: Grigore
    • +
    • family: Şerbănuţă +given: Traian Florin +issued:
    • +
    • year: '2010' +title: An overview of the K semantic framework +container-title: Journal of Logic and Algebraic Programming +page: '397-434' +volume: '79' +issue: '6' +note: https://kframework.org/ +DOI: 10.1016/j.jlap.2010.03.012
    • +
    +
  • +
  • +

    id: serbanuta-rosu-2010-wrla +type: paper-conference +author:

    +
      +
    • family: Şerbanuţă +given: Traian Florin
    • +
    • family: Roşu +given: Grigore +issued:
    • +
    • year: '2010' +month: 03 +title: 'K-Maude: A rewriting based tool for semantics of programming languages' +title-short: K-Maude +container-title: Proceedings of the 8th international workshop on rewriting logic +and its applications (wrla’10) +publisher: Springer +page: '104-122' +DOI: http://dx.doi.org/10.1007/978-3-642-16310-4_8
    • +
    +
  • +
  • +

    id: nakamoto2008bitcoin +type: no-type +author:

    +
      +
    • family: Nakamoto +given: Satoshi +issued:
    • +
    • year: '2008' +title: 'Bitcoin: A peer-to-peer electronic cash system' +title-short: Bitcoin +note: https://bitcoin.org/bitcoin.pdf
    • +
    +
  • +
  • +

    id: dao-attack +type: no-type +author:

    + +
  • +
  • +

    id: hathhorn-ellison-rosu-2015-pldi +type: paper-conference +author:

    +
      +
    • family: Hathhorn +given: Chris
    • +
    • family: Ellison +given: Chucky
    • +
    • family: Roşu +given: Grigore +issued:
    • +
    • year: '2015' +month: 06 +title: Defining the undefinedness of c +container-title: Proceedings of the 36th acm sigplan conference on programming language +design and implementation (pldi’15) +publisher: ACM +page: '336-345' +DOI: http://dx.doi.org/10.1145/2813885.2737979
    • +
    +
  • +
  • +

    id: bogdanas-rosu-2015-popl +type: paper-conference +author:

    +
      +
    • family: Bogdănaş +given: Denis
    • +
    • family: Roşu +given: Grigore +issued:
    • +
    • year: '2015' +month: 01 +title: '[K-Java: A Complete Semantics of Java]{.nocase}' +container-title: Proceedings of the 42nd symposium on principles of programming +languages (popl’15) +publisher: ACM +page: '445-456' +DOI: http://dx.doi.org/10.1145/2676726.2676982
    • +
    +
  • +
  • +

    id: park-stefanescu-rosu-2015-pldi +type: paper-conference +author:

    +
      +
    • family: Park +given: Daejun
    • +
    • family: Ştefănescu +given: Andrei
    • +
    • family: Roşu +given: Grigore +issued:
    • +
    • year: '2015' +month: 06 +title: 'KJS: A complete formal semantics of JavaScript' +title-short: KJS +container-title: Proceedings of the 36th acm sigplan conference on programming language +design and implementation (pldi’15) +publisher: ACM +page: '346-356' +DOI: http://dx.doi.org/10.1145/2737924.2737991
    • +
    +
  • +
  • +

    id: ellison-2012-thesis +type: thesis +author:

    +
      +
    • family: Ellison +given: Chucky +issued:
    • +
    • year: '2012' +month: 07 +title: A formal semantics of C with applications +publisher: University of Illinois +genre: PhD thesis
    • +
    +
  • +
  • +

    id: stefanescu-ciobaca-mereuta-moore-serbanuta-rosu-2014-rta +type: paper-conference +author:

    +
      +
    • family: Ştefănescu +given: Andrei
    • +
    • family: Ciobâcă +given: Ştefan
    • +
    • family: Mereuţă +given: Radu
    • +
    • family: Moore +given: Brandon M.
    • +
    • family: Şerbănuţă +given: Traian Florin
    • +
    • family: Roşu +given: Grigore +issued:
    • +
    • year: '2014' +month: 07 +title: All-path reachability logic +container-title: Proceedings of the joint 25th international conference on rewriting +techniques and applications and 12th international conference on typed lambda +calculi and applications (rta-tlca’14) +collection-title: LNCS +publisher: Springer +page: '425-440' +volume: '8560' +DOI: http://dx.doi.org/10.1007/978-3-319-08918-8_29
    • +
    +
  • +
  • +

    id: de2008z3 +type: paper-conference +author:

    +
      +
    • family: De Moura +given: Leonardo
    • +
    • family: Bjørner +given: Nikolaj +issued:
    • +
    • year: '2008' +title: 'Z3: An efficient smt solver' +title-short: Z3 +container-title: International conference on tools and algorithms for the construction +and analysis of systems +publisher: Springer Berlin Heidelberg +page: '337-340'
    • +
    +
  • +
  • +

    id: guth-hathhorn-saxena-rosu-2016-cav +type: paper-conference +author:

    +
      +
    • family: Guth +given: Dwight
    • +
    • family: Hathhorn +given: Chris
    • +
    • family: Saxena +given: Manasvi
    • +
    • family: Rosu +given: Grigore +issued:
    • +
    • year: '2016' +month: 07 +title: 'RV-Match: Practical semantics-based program analysis' +title-short: RV-Match +container-title: Computer aided verification - 28th international conference (CAV +2016), toronto, on, canada, july 17-23, 2016, proceedings, part I +collection-title: LNCS +publisher: Springer +page: '447-453' +volume: '9779' +DOI: http://dx.doi.org/10.1007/978-3-319-41528-4_24
    • +
    +
  • +
  • +

    id: fstar-etaps +type: paper-conference +author:

    +
      +
    • family: Grishchenko +given: Ilya
    • +
    • family: Maffei +given: Matteo
    • +
    • family: Schneidewind +given: Clara +editor:
    • +
    • family: Bauer +given: Lujo
    • +
    • family: Küsters +given: Ralf +issued:
    • +
    • year: '2018' +title: A semantic framework for the security analysis of ethereum smart contracts +container-title: Principles of security and trust +publisher: Springer International Publishing +publisher-place: Cham +page: '243-269' +abstract: 'Smart contracts are programs running on cryptocurrency (e.g., Ethereum) +blockchains, whose popularity stem from the possibility to perform financial transactions, +such as payments and auctions, in a distributed environment without need for any +trusted third party. Given their financial nature, bugs or vulnerabilities in +these programs may lead to catastrophic consequences, as witnessed by recent attacks. +Unfortunately, programming smart contracts is a delicate task that requires strong +expertise: Ethereum smart contracts are written in Solidity, a dedicated language +resembling JavaScript, and shipped over the blockchain in the EVM bytecode format. +In order to rigorously verify the security of smart contracts, it is of paramount +importance to formalize their semantics as well as the security properties of +interest, in particular at the level of the bytecode being executed.' +ISBN: '978-3-319-89722-6'
    • +
    +
  • +
  • +

    id: fstar-tr +type: article-journal +author:

    +
      +
    • family: Grishchenko +given: Ilya
    • +
    • family: Maffei +given: Matteo
    • +
    • family: Schneidewind +given: Clara +issued:
    • +
    • year: '2018' +title: A semantic framework for the security analysis of ethereum smart contracts. +technical report. +note: https://secpriv.tuwien.ac.at/tools/ethsemantics
    • +
    +
  • +
  • +

    id: wood2014ethereum +type: article-journal +author:

    +
      +
    • family: Wood +given: Gavin +issued:
    • +
    • year: '2014' +title: 'Ethereum: A secure decentralised generalised transaction ledger' +title-short: Ethereum +note: (Updated for EIP-150 in 2017) http://yellowpaper.io/
    • +
    +
  • +
  • +

    id: solidity +type: no-type +author:

    + +
  • +
  • +

    id: serpent +type: no-type +author:

    + +
  • +
  • +

    id: ktoisabelle +type: no-type +author:

    + +
  • +
  • +

    id: why3 +type: chapter +author:

    +
      +
    • family: Filliâtre +given: Jean-Christophe
    • +
    • family: Paskevich +given: Andrei +editor:
    • +
    • family: Felleisen +given: Matthias
    • +
    • family: Gardner +given: Philippa +issued:
    • +
    • year: '2013' +title: Why3 — where programs meet provers +container-title: 'Programming languages and systems: 22nd european symposium on +programming, esop 2013, held as part of the european joint conferences on theory +and practice of software, etaps 2013, rome, italy, march 16-24, 2013. proceedings' +publisher: Springer Berlin Heidelberg +publisher-place: Berlin, Heidelberg +page: '125-128' +URL: https://doi.org/10.1007/978-3-642-37036-6_8 +DOI: 10.1007/978-3-642-37036-6_8 +ISBN: '978-3-642-37036-6'
    • +
    +
  • +
  • +

    id: rosu-2015-rta +type: article-journal +author:

    +
      +
    • family: Roşu +given: Grigore +issued:
    • +
    • year: '2017' +title: Matching logic +container-title: Logical Methods in Computer Science +volume: to appear +DOI: http://arxiv.org/abs/1705.06312
    • +
    +
  • +
  • +

    id: meseguer-20-years-rewriting +type: article-journal +author:

    +
      +
    • family: Meseguer +given: José +issued:
    • +
    • year: '2012' +title: Twenty years of rewriting logic +container-title: The Journal of Logic and Algebraic Programming +page: 721 - 781 +volume: '81' +issue: '7' +note: Rewriting Logic and its Applications +URL: http://www.sciencedirect.com/science/article/pii/S1567832612000707 +DOI: http://dx.doi.org/10.1016/j.jlap.2012.06.003 +ISSN: '1567-8326'
    • +
    +
  • +
  • +

    id: rosu-stefanescu-2012-fm +type: paper-conference +author:

    +
      +
    • family: Roşu +given: Grigore
    • +
    • family: Ştefănescu +given: Andrei +issued:
    • +
    • year: '2012' +month: '8' +title: From Hoare Logic to Matching Logic Reachability +container-title: Proceedings of the 18th international symposium on formal methods +(fm’12) +collection-title: LNCS +publisher: Springer +page: '387-402' +volume: '7436' +abstract: 'Matching logic reachability has been recently proposed as an alternative +program verification approach. Unlike Hoare logic, where one defines a language-specific +proof system that needs to be proved sound for each language separately, matching +logic reachability provides a *language-independent* and *sound* proof system +that directly uses the trusted operational semantics of the language as axioms. +Matching logic reachability thus has a clear practical advantage: it eliminates +the need for an additional semantics of the same language in order to reason about +programs, and implicitly eliminates the need for tedious soundness proofs. What +is not clear, however, is whether matching logic reachability is as powerful as +Hoare logic. This paper introduces a technique to mechanically translate Hoare +logic proof derivations into equivalent matching logic reachability proof derivations. +The presented technique has two consequences: first, it suggests that matching +logic reachability has no theoretical limitation over Hoare logic; and second, +it provides a new approach to prove Hoare logics sound.' +DOI: http://dx.doi.org/10.1007/978-3-642-32759-9_32
    • +
    +
  • +
  • +

    id: ethereum-abi +type: no-type +author:

    + +
  • +
  • +

    id: viper-url +type: no-type +author:

    + +
  • +
  • +

    id: viper-snapshot +type: no-type +author:

    + +
  • +
  • +

    id: k-url +type: no-type +author:

    +
      +
    • literal: Formal Systems Lab, UIUC +issued:
    • +
    • year: '2006' +title: The K framework +note: https://kframework.org
    • +
    +
  • +
  • +

    id: evm-repo +type: no-type +author:

    + +
  • +
  • +

    id: verified-smart-contracts +type: no-type +author:

    + +
  • +
  • +

    id: yellowpaper-bug-136 +type: no-type +author:

    +
      +
    • literal: KEVM Team +issued:
    • +
    • year: '2017' +title: Yellowpaper Issue 136 +publisher: Link to issues removed for double blind review
    • +
    +
  • +
  • +

    id: yellowpaper-bug-160 +type: no-type +author:

    +
      +
    • literal: KEVM Team +issued:
    • +
    • year: '2017' +title: Yellowpaper Issue 160 +publisher: Link to issues removed for double blind review
    • +
    +
  • +
  • +

    id: yellowpaper-bug-216 +type: no-type +author:

    +
      +
    • literal: KEVM Team +issued:
    • +
    • year: '2017' +title: Yellowpaper Issue 216 +publisher: Link to issues removed for double blind review
    • +
    +
  • +
  • +

    id: ViperBugsReported +type: no-type +author:

    + +
  • +
  • +

    id: semantics-based-verifiers +type: paper-conference +author:

    +
      +
    • family: Ştefănescu +given: Andrei
    • +
    • family: Park +given: Daejun
    • +
    • family: Yuwen +given: Shijao
    • +
    • family: Li +given: Yilong
    • +
    • family: Roşu +given: Grigore +issued:
    • +
    • year: '2016' +title: Semantics-based program verifiers for all languages +container-title: OOPSLA +publisher: ACM +page: '74-91' +DOI: 10.1145/2983990.2984027
    • +
    +
  • +
  • +

    id: k-tutorial-url +type: no-type +author:

    + +
  • +
  • +

    id: trailofbits-manticore +type: no-type +author:

    +
      +
    • family: Bits +given: Trail +dropping-particle: of +issued:
    • +
    • year: '2017' +title: 'Manticore: Symbolic execution for humans' +title-short: Manticore +publisher: https://github.com/trailofbits/manticore
    • +
    +
  • +
  • +

    id: rosu-2017-lmcs +type: article-journal +author:

    +
      +
    • family: Roşu +given: Grigore +issued:
    • +
    • year: '2017' +title: Matching logic +container-title: Logical Methods in Computer Science +DOI: http://arxiv.org/abs/1705.06312
    • +
    +
  • +
  • +

    id: erc-20-url +type: no-type +author:

    + +
  • +
  • +

    id: ethereum-tests-url +type: no-type +author:

    + +
  • +
  • +

    id: viper-docs-url +type: no-type +author:

    + +
  • +
  • +

    id: jellopaper +type: no-type +author:

    +
      +
    • literal: KEVM Team +issued:
    • +
    • year: '2017' +title: The evm semantic “jello paper" +publisher: https://jellopaper.org/
    • +
    +
  • +
  • +

    id: securify +type: no-type +author:

    +
      +
    • literal: Software Reliability Lab, ETH Zurich +issued:
    • +
    • year: '2017' +title: Securify formal verification of ethereum smart contracts +note: https://securify.ch/
    • +
    +
  • +
  • +

    id: hildenbrandt-saxena-zhu-rodrigues-daian-guth-moore-zhang-park-rosu-2018-csf +type: paper-conference +author:

    +
      +
    • family: Hildenbrandt +given: Everett
    • +
    • family: Saxena +given: Manasvi
    • +
    • family: Zhu +given: Xiaoran
    • +
    • family: Rodrigues +given: Nishant
    • +
    • family: Daian +given: Philip
    • +
    • family: Guth +given: Dwight
    • +
    • family: Moore +given: Brandon
    • +
    • family: Zhang +given: Yi
    • +
    • family: Park +given: Daejun
    • +
    • family: Ştefănescu +given: Andrei
    • +
    • family: Roşu +given: Grigore +issued:
    • +
    • year: '2018' +title: 'KEVM: A complete semantics of the ethereum virtual machine' +title-short: KEVM +container-title: Computer security foundations symposium +abstract: 'A developing field of interest for the distributed systems and applied +cryptography communities is that of smart contracts: self-executing financial +instruments that synchronize their state, often through a blockchain. One such +smart contract system that has seen widespread practical adoption is Ethereum, +which has grown to a market capacity of 100 billion USD and clears an excess of +500,000 daily transactions.Unfortunately, the rise of these technologies has been +marred by a series of costly bugs and exploits. Increasingly, the Ethereum community +has turned to formal methods and rigorous program analysis tools. This trend holds +great promise due to the relative simplicity of smart contracts and bounded-time +deterministic execution inherent to the Ethereum Virtual Machine (EVM).Here we +present KEVM, an executable formal specification of the EVM’s bytecode stack-based +language built with the Framework, designed to serve as a solid foundation for +further formal analyses. We empirically evaluate the correctness and performance +of KEVM using the official Ethereum test suite [@ethereum-tests-url]ethereum-tests-url. +To demonstrate the usability, several extensions of the semantics are presented +and two different-language implementations of the ERC20 Standard Token are verified +against the ERC20 specification. These results are encouraging for the executable +semantics approach to language prototyping and specification.'
    • +
    +
  • +
+
+
+
+ + +
+ + + +
+
+ +
+
+ + + + + + + + + + + diff --git a/media/images/k-overview.png b/media/images/k-overview.png deleted file mode 100644 index 8dc8cdc74f..0000000000 Binary files a/media/images/k-overview.png and /dev/null differ diff --git a/media/images/proof-system.png b/media/images/proof-system.png deleted file mode 100644 index ad031fe144..0000000000 Binary files a/media/images/proof-system.png and /dev/null differ diff --git a/optimizer/build-spec.py b/optimizer/build-spec.py deleted file mode 100755 index d1f144aec3..0000000000 --- a/optimizer/build-spec.py +++ /dev/null @@ -1,133 +0,0 @@ -#!/usr/bin/env python3 - -import pyk -import sys - -### arguments: - # - json encoding of haskell KEVM definition - # - opcode to summarize - # - number of elements the opcode needs off the wordstack - # - counterexample of negative-case proof generated by Haskell backend - -json_defn = sys.argv[1] -opcode = pyk.KToken(sys.argv[2], 'OpCode') -wordstack_number = sys.argv[3] -json_out = sys.argv[4] - -### KEVM specific - -kevm_json = pyk.readKastTerm(json_defn) -kevm_symbols = pyk.buildSymbolTable(kevm_json) -kevm_symbols [ '...' ] = lambda l: l + ' ...' -kevm_symbols [ '_andBool_' ] = lambda b1, b2: b1 + '\nandBool ' + b2 -kevm_symbols [ '_+Int_' ] = lambda i1, i2: '( ' + i1 + ' +Int ' + i2 + ' )' -kevm_symbols [ '_*Int_' ] = lambda i1, i2: '( ' + i1 + ' *Int ' + i2 + ' )' -kevm_symbols [ '_-Int_' ] = lambda i1, i2: '( ' + i1 + ' -Int ' + i2 + ' )' -kevm_symbols [ 'infGas' ] = lambda g: '#gas( ' + g + ' )' -kevm_symbols [ 'parens' ] = lambda p: '( ' + p + ' )' -kevm_symbols [ '_[_:=_]_EVM-TYPES_WordStack_WordStack_Int_Int' ] = lambda ws, i, w: '( ' + ws + ' [ ' + i + ' := ' + w + ' ] )' -printKEVM = lambda term: pyk.prettyPrintKast(term, kevm_symbols) - -rdots = lambda l: pyk.KApply('...', [l]) -leqInt = lambda i1, i2: pyk.KApply('_<=Int_', [i1, i2]) -plusInt = lambda i1, i2: pyk.KApply('_+Int_' , [i1, i2]) -mulInt = lambda i1, i2: pyk.KApply('_*Int_' , [i1, i2]) -minusInt = lambda i1, i2: pyk.KApply('_-Int_' , [i1, i2]) - -empt_word = pyk.KConstant('.WordStack_EVM-TYPES_WordStack') -cons_word = lambda w, ws: pyk.KApply('_:__EVM-TYPES_WordStack_Int_WordStack', [w, ws]) - -infGas = lambda g: pyk.KApply('infGas', [g]) - -sizeWordStack = lambda ws: pyk.KApply('#sizeWordStack(_)_EVM-TYPES_Int_WordStack', [ws]) -stackNeeded = lambda op : pyk.KApply('#stackNeeded(_)_EVM_Int_OpCode', [op]) -stackOverflow = lambda op, ws: pyk.KApply('#stackOverflow(_,_)_EVM_Bool_WordStack_OpCode', [ws, op]) -stackUnderflow = lambda op, ws: pyk.KApply('#stackUnderflow(_,_)_EVM_Bool_WordStack_OpCode', [ws, op]) - -### utilities - -vi1 = pyk.KVariable('I1') -vi2 = pyk.KVariable('I2') -vi3 = pyk.KVariable('I3') -vi4 = pyk.KVariable('I4') - -assoc_right_rules = [ (plusInt(plusInt(vi1, vi2), vi3) , plusInt(vi1, plusInt(vi2, vi3))) # (X + Y) + Z => X + (Y + Z) - , (plusInt(minusInt(vi1, vi2), vi3) , minusInt(vi1, minusInt(vi2, vi3))) # (X - Y) + Z => X - (Y - Z) - , (minusInt(plusInt(vi1, vi2), vi3) , plusInt(vi1, minusInt(vi2, vi3))) # (X + Y) - Z => X + (Y - Z) - , (minusInt(minusInt(vi1, vi2), vi3) , minusInt(vi1, plusInt(vi2, vi3))) # (X - Y) - Z => X - (Y + Z) - ] -assoc_left_rules = [ (r, l) for (l, r) in assoc_right_rules ] - -def assoc_right(k): - newK = k - for i in range(3): - for rule in assoc_right_rules: - newK = pyk.rewriteAnywhereWith(rule, newK) - return newK - -def assoc_left(k): - newK = k - for i in range(3): - for rule in assoc_left_rules: - newK = pyk.rewriteAnywhereWith(rule, newK) - return newK - -### Build initial and final states - -wordstack_before = pyk.KVariable("WS") -for i in range(int(wordstack_number) - 1, -1, -1): - wordstack_before = cons_word(pyk.KVariable('W' + str(i)), wordstack_before) - -final_state = pyk.readKastTerm(json_out) -final_config = None -final_cond = pyk.KToken('true', 'Bool') -for conj in pyk.flattenLabel('#And', final_state): - if pyk.isKApply(conj) and conj['label'] == '': - final_config = conj['args'][0] - else: - final_cond = pyk.KApply('_andBool_', [final_cond, pyk.unsafeMlPredToBool(conj)]) -if final_config is None: - print('// [ERROR] Could not extract config/cond: ' + printKEVM(opcode)) -(empty_config, final_subst) = pyk.splitConfigFrom(final_config) -final_gas = final_subst['GAS_CELL'] -final_wordstack = final_subst['WORDSTACK_CELL'] - -### Extract gas expression - -final_gas = assoc_right(final_gas) -gas_pattern = infGas(minusInt(vi1, vi2)) -gas_subst = pyk.match(gas_pattern, final_gas) -if gas_subst is None: - print('// [ERROR] Could not extract gas expression: ' + printKEVM(opcode)) - sys.exit(1) -gas_used = gas_subst[vi2['name']] -gas_used = assoc_left(gas_used) - -### build the new claim - -k_claim = { 'K_CELL' : rdots(pyk.KRewrite(pyk.KApply('#next[_]_EVM_InternalOp_OpCode', [opcode]), pyk.KConstant('#EmptyK'))) - , 'WORDSTACK_CELL' : pyk.KRewrite(wordstack_before, final_wordstack) - , 'GAS_CELL' : pyk.KRewrite(pyk.KVariable('GAVAIL'), minusInt(pyk.KVariable('GAVAIL'), gas_used)) - , 'LOCALMEM_CELL' : pyk.KRewrite(pyk.KVariable('LM'), final_subst['LOCALMEM_CELL']) - , 'PC_CELL' : pyk.KRewrite(pyk.KVariable('PCOUNT'), final_subst['PC_CELL']) - , 'SCHEDULE_CELL' : pyk.KRewrite(pyk.KVariable('SCHED'), final_subst['SCHEDULE_CELL']) - , 'MEMORYUSED_CELL' : pyk.KRewrite(pyk.KVariable('MU'), final_subst['MEMORYUSED_CELL']) - , 'PROGRAM_CELL' : pyk.KVariable('PGM') - } - -requires_clauses = [ leqInt(gas_used, pyk.KVariable('GAVAIL')) - , leqInt(sizeWordStack(final_wordstack) , pyk.KToken('1024', 'Int')) - ] -claim_requires = pyk.KToken('true', 'Bool') -for r in sys.argv[5:]: - claim_requires = pyk.KApply('_andBool_', [claim_requires, pyk.KToken(r, 'Bool')]) -for r in requires_clauses: - claim_requires = pyk.KApply('_andBool_', [claim_requires, pyk.KApply('parens', [r])]) -claim_requires = pyk.simplifyBool(claim_requires) - -### minimize and display it - -claim_body = pyk.pushDownRewrites(pyk.substitute(empty_config, k_claim)) -new_claim = pyk.minimizeRule(pyk.KClaim(claim_body, requires = claim_requires)) - -print(printKEVM(new_claim)) diff --git a/optimizer/optimizations.md b/optimizer/optimizations.md deleted file mode 100644 index 76e704ed6c..0000000000 --- a/optimizer/optimizations.md +++ /dev/null @@ -1,30 +0,0 @@ -KEVM Optimizations -================== - -These optimizations work on the LLVM and Haskell backend and are generated by the script `./optimizer/optimizations.sh`. - -```k -requires "evm.md" -requires "lemmas/int-simplification.k" - -module EVM-OPTIMIZATIONS-LEMMAS [symbolic] - imports EVM - - rule #sizeWordStack(WS , N) => #sizeWordStack(WS, 0) +Int N requires N =/=Int 0 [simplification] - rule #sizeWordStack(WS [ I := _ ], N) => #sizeWordStack(WS, N) requires I true [simplification] - rule #sizeWordStack(_ , 0) false requires N <=Int 0 [simplification] - -endmodule - -module EVM-OPTIMIZATIONS - imports EVM - imports EVM-OPTIMIZATIONS-LEMMAS - imports INT-SIMPLIFICATION - - -// {OPTIMIZATIONS} - - -endmodule -``` diff --git a/optimizer/optimizations/index.html b/optimizer/optimizations/index.html new file mode 100644 index 0000000000..7f7c1dea10 --- /dev/null +++ b/optimizer/optimizations/index.html @@ -0,0 +1,216 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

KEVM Optimizations

+

These optimizations work on the LLVM and Haskell backend and are generated by the script ./optimizer/optimizations.sh.

+
requires "evm.md"
+requires "lemmas/int-simplification.k"
+
+module EVM-OPTIMIZATIONS-LEMMAS [symbolic]
+    imports EVM
+
+    rule #sizeWordStack(WS           , N) => #sizeWordStack(WS, 0) +Int N requires N =/=Int 0                [simplification]
+    rule #sizeWordStack(WS [ I := _ ], N) => #sizeWordStack(WS, N)        requires I <Int #sizeWordStack(WS) [simplification]
+    rule 0 <=Int #sizeWordStack(_ , 0)    => true                                                            [simplification]
+    rule #sizeWordStack(_ , 0) <Int N     => false                        requires N <=Int 0                 [simplification]
+
+endmodule
+
+module EVM-OPTIMIZATIONS
+    imports EVM
+    imports EVM-OPTIMIZATIONS-LEMMAS
+    imports INT-SIMPLIFICATION
+
+
+// {OPTIMIZATIONS}
+
+
+endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/optimizer/optimize-spec.k.tmpl b/optimizer/optimize-spec.k.tmpl deleted file mode 100644 index 10deb8c211..0000000000 --- a/optimizer/optimize-spec.k.tmpl +++ /dev/null @@ -1,24 +0,0 @@ -requires "lemmas/infinite-gas.k" - -module OPTIMIZE - imports INT - imports EVM-OPTIMIZATIONS-LEMMAS - imports EVM - imports INFINITE-GAS -endmodule - -module {MODULE}-SPEC - imports OPTIMIZE - - claim (#next [ {OPCODE} ] => #halt) ~> #execute ... - SCHED - PGM - PCOUNT => PCOUNT +Int #widthOp({OPCODE}) - {WORD_STACK} => ?_ - LM => ?_ - #gas(GAVAIL) => ?_ - MU => ?_ - requires #sizeWordStack({WORD_STACK}) +Int #stackDelta({OPCODE}) <=Int 1024 - {EXTRA_REQUIRES} - -endmodule diff --git a/optimizer/optimize.sh b/optimizer/optimize.sh deleted file mode 100755 index f8b140ec5c..0000000000 --- a/optimizer/optimize.sh +++ /dev/null @@ -1,179 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -export PATH=$(pwd)/.build/usr/bin:$PATH -export PYTHONPATH=$(pwd)/.build/usr/lib/kevm/kframework/lib/kframework - -kevm_json_defn=$(pwd)/.build/usr/lib/kevm/haskell/compiled.json - -notif() { echo "$@" >&2 ; } - -buildWordStack() { - local number wordstack i - - number="$1" ; shift - - wordstack="WS" - for i in $(seq 0 $((number - 1)) | tac); do - wordstack="W${i} : ${wordstack}" - done - echo "${wordstack}" -} - -buildSpec() { - local opcode wordstack_number wordstack module extra_requires - - opcode="$1" ; shift - wordstack_number="$1" ; shift - - wordstack="$(buildWordStack ${wordstack_number})" - module="$(echo ${opcode} | tr -d '()')" - - extra_requires='' - while [[ "$#" -gt '0' ]]; do - extra_requires="${extra_requires} andBool ( ${1} )" - shift - done - - cat optimizer/optimize-spec.k.tmpl \ - | sed "s/{EXTRA_REQUIRES}/${extra_requires}/g" \ - | sed "s/{MODULE}/${module}/g" \ - | sed "s/{OPCODE}/${opcode}/g" \ - | sed "s/{WORD_STACK}/${wordstack}/g" -} - -inject_optimization() { - local search_string contents_file - - contents_file="$1" ; shift - - search_string='// {OPTIMIZATIONS}' - ( IFS='' - while read line; do - if [[ "${line}" == "${search_string}" ]]; then - cat "${contents_file}" - echo "${line}" - else - echo "${line}" - fi - done - ) -} - -runProve() { - local spec - - spec="$1" ; shift - - kevm prove --backend haskell ${spec} --verif-module OPTIMIZE "$@" -} - -doOptimization() { - local opcode wordstack_number depth opcode_lower spec_file json_out claim_file rule_file optimize_file - - opcode="$1" ; shift - wordstack_number="$1" ; shift - depth="$1" ; shift - priority="$1" ; shift - - opcode_lower="$(echo ${opcode} | tr '[:upper:]' '[:lower:]' | tr -d '()')" - spec_file="optimizer/${opcode_lower}-spec.k" - json_out="optimizer/${opcode_lower}.out.json" - claim_file="optimizer/${opcode_lower}-claim.k" - rule_file="optimizer/${opcode_lower}.k" - optimize_file="optimizer/optimize-spec.k" - - make build-haskell -j8 - - notif "Building: ${spec_file}" - buildSpec "${opcode}" "${wordstack_number}" "$@" > "${spec_file}" - - notif "Building: ${json_out}" - runProve "${spec_file}" --depth "${depth}" --output json | jq . > "${json_out}" || true - - notif "Building: ${claim_file}" - ./optimizer/build-spec.py "${kevm_json_defn}" "${opcode}" "${wordstack_number}" "${json_out}" "$@" > "${claim_file}" - - notif "Building: ${rule_file}" - cat "${claim_file}" | sed 's/^claim /rule /g' | sed '/^[[:space:]]*$/d' > "${rule_file}" - echo " [priority(${priority})]" >> "${rule_file}" - echo >> "${rule_file}" - echo >> "${rule_file}" - - notif "Building: ${optimize_file}" - echo '' > "${optimize_file}" - echo 'module OPTIMIZE' >> "${optimize_file}" - echo ' imports INT' >> "${optimize_file}" - echo ' imports EVM-OPTIMIZATIONS-LEMMAS' >> "${optimize_file}" - echo ' imports EVM' >> "${optimize_file}" - echo 'endmodule' >> "${optimize_file}" - echo '' >> "${optimize_file}" - echo "module OPTIMIZE-SPEC" >> "${optimize_file}" - echo ' imports OPTIMIZE' >> "${optimize_file}" - echo '' >> "${optimize_file}" - cat "${claim_file}" >> "${optimize_file}" - echo '' >> "${optimize_file}" - echo 'endmodule' >> "${optimize_file}" - - if runProve "${optimize_file}"; then - notif "Claim passed: ${opcode}" - cat optimizations.md | inject_optimization "${rule_file}" > optimizations.md.tmp - cp optimizations.md.tmp optimizations.md - git add optimizations.md - git commit -m "optimizations: optimize ${opcode} ${priority}" - else - notif "Claim failed: ${opcode}" - fi -} - -cp optimizer/optimizations.md optimizations.md -git add optimizations.md -git commit -m 'optimizations: clear optimizations' || true - -# score: (number with speedup >7%) - (number with slowdown >7%), for both (exec, spec) - -# were consistently positive -doOptimization "PUSH(N)" 0 10 40 # 73 65 (53 , 9 ) -doOptimization "DUP(N)" 0 10 40 '#stackNeeded(DUP(N)) <=Int #sizeWordStack(WS)' # 14 16 (0 , 8 ) -doOptimization "SWAP(N)" 1 10 40 '#stackNeeded(SWAP(N)) <=Int #sizeWordStack(W0 : WS)' # 14 16 (13 , 2 ) -doOptimization ADD 2 10 40 # 8 5 (39 , 9 ) -doOptimization SUB 2 10 40 # 0 0 (18 , 4 ) -doOptimization AND 2 10 40 # 0 2 (25 , 4 ) -doOptimization LT 2 10 40 # 7 3 (1 , 0 ) -doOptimization GT 2 10 40 # 0 0 (12 , 2 ) - -# not sure it's worth it to include these ones -# doOptimization MSTORE 2 14 40 # -18 11 (-23 , -2) -# doOptimization POP 1 10 40 # 5 5 (-9 , 2 ) -# doOptimization MSTORE8 2 14 40 # 0 5 (-15 , -9) -# doOptimization MOD 2 10 40 # 0 3 (-7 , 0 ) -# doOptimization EQ 2 10 40 # -1 2 (-3 , 8 ) -# doOptimization MUL 2 10 40 # -1 1 (-16 , -2) -# doOptimization NOT 1 10 40 # -4 1 (-10 , -8) -# doOptimization XOR 2 10 40 # -9 0 (-6 , 0 ) -# doOptimization SIGNEXTEND 2 10 40 # 0 0 (9 , 0 ) -# doOptimization SGT 2 10 40 # 0 0 (-22 , 0 ) -# doOptimization DIV 2 10 40 # 0 0 (4 , 7 ) -# doOptimization ADDMOD 3 10 40 # -1 0 (1 , 0 ) -# doOptimization SLT 2 10 40 # 0 -1 (0 , 0 ) -# doOptimization EVMOR 2 10 40 # 0 -1 (4 , 0 ) -# doOptimization ISZERO 1 10 40 # -3 -3 (9 , 1 ) -# doOptimization MULMOD 3 10 40 # 1 -4 (-4 , 0 ) -# doOptimization MLOAD 1 14 40 # -9 -4 (14 , 6 ) - -# spec requires multiple branches -# doOptimization EXP 2 10 - -# could not prove the generated rule (involve non-total functions) -# doOptimization SDIV 2 10 -# doOptimization SMOD 2 10 -# doOptimization SHL 2 10 -# doOptimization SHR 2 10 -# doOptimization SAR 2 10 -# doOptimization BYTE 2 10 -# doOptimization SHA3 2 10 - -# could not prove the generated rule (involve cells that are not mentioned) -# doOptimization JUMP 1 10 -# doOptimization JUMPI 2 10 diff --git a/package/nix/profile.nix b/package/nix/profile.nix deleted file mode 100644 index 9799f85fe0..0000000000 --- a/package/nix/profile.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ stdenv, writeScriptBin, src, kevm, time, which, kore-exec }: - -let - profile = writeScriptBin "profile" '' - #! ${stdenv.shell} - set -euo pipefail - test_log="$1" ; shift - exit_status='0' - `${which}/bin/which ${time}/bin/time` --quiet --format '%x %es %Us %Ss %MKB %C' --output "$test_log" --append \ - "$@" &>/dev/null \ - || exit_status="$?" - exit "$exit_status" - ''; -in stdenv.mkDerivation { - name = "kevm-profile"; - inherit src; - preferLocalBuild = true; - buildInputs = [ kevm ]; - postPatch = '' - substituteInPlace ./Makefile \ - --replace 'venv: $(VENV_DIR)/pyvenv.cfg' 'venv:' - ''; - - buildPhase = '' - mkdir -p .build/usr - cp -r ${kevm}/* .build/usr/ - ${kore-exec}/bin/kore-exec --version &> log - make build-prove-haskell PYK_ACTIVATE=true -j4 - make test-prove-smoke PYK_ACTIVATE=true TEST_SYMBOLIC_BACKEND=haskell KEVM='${profile}/bin/profile log timeout 600 kevm' -j6 -k - ''; - enableParallelBuilding = true; - installPhase = '' - cp log $out - ''; -} diff --git a/package/nix/profile.py b/package/nix/profile.py deleted file mode 100755 index 8970436a49..0000000000 --- a/package/nix/profile.py +++ /dev/null @@ -1,86 +0,0 @@ -#! /usr/bin/env nix-shell -#! nix-shell -i python3 -p python3 - -import sys - -logfile_1 = sys.argv[1] -logfile_2 = sys.argv[2] -mintime = 2.0 -minchange = 0.035 -if len(sys.argv) > 4: - mintime = float(sys.argv[3]) - minchange = float(sys.argv[4]) - -def readData(file_name): - data_lines = [] - with open(file_name, 'r') as file_data: - for _ in range(2): - next(file_data) - rev = next(file_data).strip('\n').split(':')[1].strip() - next(file_data) - next(file_data) - for line in file_data: - data_line = line.strip('\n').split(' ') - test_index = 0 - if 'prove' in data_line: - test_index = data_line.index('prove') + 1 - elif 'interpret' in data_line: - test_index = data_line.index('interpret') + 1 - data_lines.append(('/'.join(data_line[test_index].split('/')[-3:]), int(data_line[0]), float(data_line[1][0:-1]), int(data_line[4][0:-2]))) - return (rev,data_lines) - -def getCommitLogname(file_name): - if file_name.startswith('.build/logs'): - [_, _, log_name] = file_name.split('/') - return ('HEAD', log_name) - [_, commit, _, log_name] = file_name.split('/') - return (commit, log_name) - -data_entries = {} -(key1, data1) = readData(logfile_1) -data_entries[key1] = { test : ( rc , time , mem ) for (test, rc, time, mem) in data1 } -(key2, data2) = readData(logfile_2) -data_entries[key2] = { test : ( rc , time , mem ) for (test, rc, time, mem) in data2 } - - -common_passing_tests = [] -for test in data_entries[key1].keys(): - if data_entries[key1][test][0] == 0 and test in data_entries[key2].keys() and data_entries[key2][test][0] == 0: - common_passing_tests.append(test) - -def filterEntries(test, t1, t2): - return (t1 != t2) \ - and (t1 > mintime or t2 > mintime) \ - and ((t1 / t2) - 1.0 > minchange or (t2 / t1) - 1.0 > minchange) - -# test , time1 , time2 , time1 / time2 -final_table = [] -for test in common_passing_tests: - (_, time1, _) = data_entries[key1][test] - (_, time2, _) = data_entries[key2][test] - if filterEntries(test, time1, time2): - final_table.append((test, time1, time2, time1 / time2)) -final_table.sort(key = lambda e: e[3]) -if len(final_table) == 0: - print("Identical runs") - sys.exit(0) -total_time_1 = sum([e[1] for e in final_table]) -total_time_2 = sum([e[2] for e in final_table]) -if total_time_2 > 0.0: - final_table.append(('TOTAL', total_time_1, total_time_2, total_time_1 / total_time_2)) -final_table = [ (str(e0), str(e1), str(e2), str(e3)) for (e0, e1, e2, e3) in final_table ] -final_table.insert(0, ('Test', key1 + ' time', key2 + ' time', '(' + key1 + '/' + key2 + ') time')) -final_table.insert(1, ('', '', '', '')) - -column_width0 = max([len(c[0]) for c in final_table]) -column_width1 = max([len(c[1]) for c in final_table]) -column_width2 = max([len(c[2]) for c in final_table]) -column_width3 = max([len(c[3]) for c in final_table]) - -def mkColumn(c, w): - return ' ' + c.ljust(w) + ' ' - -columns = ['|'.join((mkColumn(c0, column_width0), mkColumn(c1, column_width1), mkColumn(c2, column_width2), mkColumn(c3, column_width3))) for (c0, c1, c2, c3) in final_table] -columns[1] = columns[1].replace(' ', '-') - -print('\n'.join(columns)) diff --git a/package/test-package.sh b/package/test-package.sh deleted file mode 100755 index f84ec415c3..0000000000 --- a/package/test-package.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env bash - -set -xueo pipefail - -which kevm -kevm --help -kevm version - -kevm run tests/ethereum-tests/LegacyTests/Constantinople/VMTests/vmArithmeticTest/add0.json --target llvm \ - --mode VMTESTS --schedule DEFAULT --chainid 1 \ - > tests/ethereum-tests/LegacyTests/Constantinople/VMTests/vmArithmeticTest/add0.json.llvm-out \ - || git --no-pager diff --no-index --ignore-all-space -R tests/ethereum-tests/LegacyTests/Constantinople/VMTests/vmArithmeticTest/add0.json.llvm-out tests/templates/output-success-llvm.json -rm -rf tests/ethereum-tests/LegacyTests/Constantinople/VMTests/vmArithmeticTest/add0.json.llvm-out - -kevm run tests/ethereum-tests/LegacyTests/Constantinople/VMTests/vmSystemOperations/TestNameRegistrator.json \ - --target llvm --mode VMTESTS --schedule DEFAULT --chainid 1 - -kevm run tests/ethereum-tests/LegacyTests/Constantinople/VMTests/vmSystemOperations/TestNameRegistrator.json \ - --target haskell-standalone --mode VMTESTS --schedule DEFAULT --chainid 1 - -kevm kast tests/interactive/log3_MaxTopic_d0g0v0.json --target llvm > tests/interactive/log3_MaxTopic_d0g0v0.json.parse-out -git --no-pager diff --no-index --ignore-all-space -R tests/interactive/log3_MaxTopic_d0g0v0.json.parse-out tests/interactive/log3_MaxTopic_d0g0v0.json.parse-expected -rm tests/interactive/log3_MaxTopic_d0g0v0.json.parse-out - -# This test currently segfaults on M1 Macs -if ! ${APPLE_SILICON:-false}; then - kevm run tests/failing/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0.json --target llvm \ - --mode NORMAL --schedule BERLIN --chainid 1 \ - > tests/failing/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0.json.llvm-out \ - || git --no-pager diff --no-index --ignore-all-space -R tests/failing/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0.json.llvm-out tests/failing/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0.json.expected - rm -rf tests/failing/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0.json.llvm-out -fi - -kevm kompile-spec tests/specs/benchmarks/verification.k \ - --output-definition tests/specs/benchmarks/verification/haskell \ - --main-module VERIFICATION \ - --syntax-module VERIFICATION \ - --target haskell \ - --verbose - -kevm prove tests/specs/benchmarks/structarg00-spec.k \ - --definition tests/specs/benchmarks/verification/haskell \ - --save-directory proofs \ - --verbose \ - --use-booster - -kevm prove tests/specs/benchmarks/structarg01-spec.k \ - --definition tests/specs/benchmarks/verification/haskell \ - --save-directory proofs \ - --verbose \ - --use-booster \ No newline at end of file diff --git a/package/version b/package/version deleted file mode 100644 index 24ab357ed4..0000000000 --- a/package/version +++ /dev/null @@ -1 +0,0 @@ -1.0.564 diff --git a/package/version.sh b/package/version.sh deleted file mode 100755 index 9fd34395e8..0000000000 --- a/package/version.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash - -set -xeuo pipefail - -notif() { echo "== $@" >&2 ; } -fatal() { echo "[FATAL] $@" ; exit 1 ; } - -version_file="package/version" - -version_bump() { - local version release_commit version_major version_minor version_patch new_version current_version current_version_major current_version_minor current_version_patch - version="$1" ; shift - version_major="$(echo ${version} | cut --delimiter '.' --field 1)" - version_minor="$(echo ${version} | cut --delimiter '.' --field 2)" - version_patch="$(echo ${version} | cut --delimiter '.' --field 3)" - current_version="$(cat ${version_file})" - current_version_major="$(echo ${current_version} | cut --delimiter '.' --field 1)" - current_version_minor="$(echo ${current_version} | cut --delimiter '.' --field 2)" - current_version_patch="$(echo ${current_version} | cut --delimiter '.' --field 3)" - new_version="${version}" - if [[ "${version_major}" == "${current_version_major}" ]] && [[ "${version_minor}" == "${current_version_minor}" ]]; then - new_version="${version_major}.${version_minor}.$((version_patch + 1))" - fi - echo "${new_version}" > "${version_file}" - notif "Version: ${new_version}" -} - -version_sub() { - local version - version="$(cat $version_file)" - sed --in-place 's/^version = ".*"$/version = "'${version}'"/' kevm-pyk/pyproject.toml -} - -version_command="$1" ; shift - -case "${version_command}" in - bump) version_bump "$@" ;; - sub) version_sub "$@" ;; - *) fatal "No command: ${version_command}" ;; -esac diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000000..9a4010a9f7 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,93 @@ + + + + https://jellopaper.org/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/INSTALL/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/network/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/json-rpc/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm-types/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/serialization/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/evm/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/gas/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/schedule/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/buf/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/abi/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/hashed-locations/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/edsl/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/state-utils/ + 1.0 + 2024-05-21 + monthly + + + https://jellopaper.org/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/driver/ + 1.0 + 2024-05-21 + monthly + + \ No newline at end of file diff --git a/tests/failing-symbolic.haskell b/tests/failing-symbolic.haskell deleted file mode 100644 index 9703f6a275..0000000000 --- a/tests/failing-symbolic.haskell +++ /dev/null @@ -1,148 +0,0 @@ -tests/specs/benchmarks/address00-spec.k -tests/specs/benchmarks/bytes00-spec.k -tests/specs/benchmarks/ecrecover00-siginvalid-spec.k -tests/specs/benchmarks/ecrecover00-sigvalid-spec.k -tests/specs/benchmarks/ecrecoverloop00-sig0-invalid-spec.k -tests/specs/benchmarks/ecrecoverloop00-sig1-invalid-spec.k -tests/specs/benchmarks/ecrecoverloop00-sigs-valid-spec.k -tests/specs/benchmarks/ecrecoverloop02-sig0-invalid-spec.k -tests/specs/benchmarks/ecrecoverloop02-sig1-invalid-spec.k -tests/specs/benchmarks/ecrecoverloop02-sigs-valid-spec.k -tests/specs/benchmarks/encode-keccak00-spec.k -tests/specs/benchmarks/encodepacked-keccak01-spec.k -tests/specs/benchmarks/functional-spec.k -tests/specs/benchmarks/keccak00-spec.k -tests/specs/benchmarks/overflow00-nooverflow-spec.k -tests/specs/benchmarks/overflow00-overflow-spec.k -tests/specs/benchmarks/requires01-a0gt0-spec.k -tests/specs/benchmarks/requires01-a0le0-spec.k -tests/specs/benchmarks/staticarray00-spec.k -tests/specs/benchmarks/staticloop00-a0lt10-spec.k -tests/specs/benchmarks/storagevar00-spec.k -tests/specs/benchmarks/storagevar01-spec.k -tests/specs/benchmarks/storagevar02-nooverflow-spec.k -tests/specs/benchmarks/storagevar02-overflow-spec.k -tests/specs/benchmarks/storagevar03-spec.k -tests/specs/bihu/collectToken-spec.k -tests/specs/bihu/forwardToHotWallet-failure-1-spec.k -tests/specs/bihu/forwardToHotWallet-failure-2-spec.k -tests/specs/bihu/forwardToHotWallet-failure-3-spec.k -tests/specs/bihu/forwardToHotWallet-failure-4-spec.k -tests/specs/bihu/forwardToHotWallet-success-1-spec.k -tests/specs/bihu/forwardToHotWallet-success-2-spec.k -tests/specs/bihu/functional-spec.k -tests/specs/erc20/ds/allowance-spec.k -tests/specs/erc20/ds/approve-failure-spec.k -tests/specs/erc20/ds/approve-success-spec.k -tests/specs/erc20/ds/balanceOf-spec.k -tests/specs/erc20/ds/totalSupply-spec.k -tests/specs/erc20/ds/transfer-failure-1-a-spec.k -tests/specs/erc20/ds/transfer-failure-1-b-spec.k -tests/specs/erc20/ds/transfer-failure-1-c-spec.k -tests/specs/erc20/ds/transfer-failure-2-a-spec.k -tests/specs/erc20/ds/transfer-failure-2-b-spec.k -tests/specs/erc20/ds/transferFrom-failure-1-a-spec.k -tests/specs/erc20/ds/transferFrom-failure-1-b-spec.k -tests/specs/erc20/ds/transferFrom-failure-1-c-spec.k -tests/specs/erc20/ds/transferFrom-failure-1-d-spec.k -tests/specs/erc20/ds/transferFrom-failure-2-a-spec.k -tests/specs/erc20/ds/transferFrom-failure-2-b-spec.k -tests/specs/erc20/ds/transferFrom-failure-2-c-spec.k -tests/specs/erc20/ds/transferFrom-success-1-spec.k -tests/specs/erc20/ds/transferFrom-success-2-spec.k -tests/specs/erc20/ds/transfer-success-1-spec.k -tests/specs/erc20/ds/transfer-success-2-spec.k -tests/specs/erc20/hkg/allowance-spec.k -tests/specs/erc20/hkg/approve-spec.k -tests/specs/erc20/hkg/balanceOf-spec.k -tests/specs/erc20/hkg/totalSupply-spec.k -tests/specs/erc20/hkg/transfer-failure-1-spec.k -tests/specs/erc20/hkg/transfer-failure-2-spec.k -tests/specs/erc20/hkg/transferFrom-failure-1-spec.k -tests/specs/erc20/hkg/transferFrom-failure-2-spec.k -tests/specs/erc20/hkg/transferFrom-success-1-spec.k -tests/specs/erc20/hkg/transferFrom-success-2-spec.k -tests/specs/erc20/hkg/transfer-success-1-spec.k -tests/specs/erc20/hkg/transfer-success-2-spec.k -tests/specs/examples/erc20-spec.md -tests/specs/examples/erc721-spec.md -tests/specs/examples/solidity-code-spec.md -tests/specs/examples/storage-spec.md -tests/specs/functional/evm-int-simplifications-spec.k -tests/specs/functional/infinite-gas-spec.k -tests/specs/functional/int-simplifications-spec.k -tests/specs/functional/lemmas-no-smt-spec.k -tests/specs/functional/lemmas-spec.k -tests/specs/functional/merkle-spec.k -tests/specs/functional/storageRoot-spec.k -tests/specs/kontrol/test-allowchangestest-testallow-0-spec.k -tests/specs/kontrol/test-allowchangestest-testallow_fail-0-spec.k -tests/specs/kontrol/test-allowchangestest-testfailallowcallstoaddress-0-spec.k -tests/specs/kontrol/test-allowchangestest-testfailallowchangestostorage-0-spec.k -tests/specs/kontrol/test-arithmetictest-test_max1_broken-uint256-uint256-0-spec.k -tests/specs/kontrol/test-arithmetictest-test_wdiv_rounding-uint256-uint256-0-spec.k -tests/specs/kontrol/test-arithmetictest-test_wmul_wdiv_inverse_underflow-uint256-uint256-0-spec.k -tests/specs/kontrol/test-arithmetictest-test_wmul_weakly_increasing_positive-uint256-uint256-0-spec.k -tests/specs/kontrol/test-countertest-testincrement-0-spec.k -tests/specs/kontrol/test-emitcontracttest-testexpectemit-0-spec.k -tests/specs/kontrol/test-emitcontracttest-testexpectemitcheckemitter-0-spec.k -tests/specs/kontrol/test-emitcontracttest-testexpectemitdonotcheckdata-0-spec.k -tests/specs/kontrol/test-expectcalltest-testexpectregularcall-0-spec.k -tests/specs/kontrol/test-expectcalltest-testexpectstaticcall-0-spec.k -tests/specs/kontrol/test-expectreverttest-test_expectrevert_bytes4-0-spec.k -tests/specs/kontrol/test-expectreverttest-test_expectrevert_message-0-spec.k -tests/specs/kontrol/test-expectreverttest-test_expectrevert_returnvalue-0-spec.k -tests/specs/kontrol/test-expectreverttest-testfail_expectrevert_bytes4-0-spec.k -tests/specs/kontrol/test-expectreverttest-testfail_expectrevert_failandsuccess-0-spec.k -tests/specs/kontrol/test-expectreverttest-testfail_expectrevert_false-0-spec.k -tests/specs/kontrol/test-owneruponlytest-testincrementasowner-0-spec.k -tests/specs/kontrol/test-safetest-testwithdrawfuzz-uint96-0-spec.k -tests/specs/kontrol/test-storetest-testaccesses-0-spec.k -tests/specs/kontrol/test-storetest-teststoreload-0-spec.k -tests/specs/mcd/cat-exhaustiveness-spec.k -tests/specs/mcd/cat-file-addr-pass-rough-spec.k -tests/specs/mcd/dai-adduu-fail-rough-spec.k -tests/specs/mcd/dai-symbol-pass-spec.k -tests/specs/mcd/dstoken-approve-fail-rough-spec.k -tests/specs/mcd/dstoken-burn-self-fail-rough-spec.k -tests/specs/mcd/dstoken-transferfrom-fail-rough-spec.k -tests/specs/mcd/dsvalue-peek-pass-rough-spec.k -tests/specs/mcd/dsvalue-read-pass-spec.k -tests/specs/mcd/dsvalue-read-pass-summarize-spec.k -tests/specs/mcd/end-cash-pass-rough-spec.k -tests/specs/mcd/end-pack-pass-rough-spec.k -tests/specs/mcd/end-subuu-pass-spec.k -tests/specs/mcd/flapper-tend-guy-diff-pass-rough-spec.k -tests/specs/mcd/flapper-yank-pass-rough-spec.k -tests/specs/mcd/flipper-addu48u48-fail-rough-spec.k -tests/specs/mcd/flipper-bids-pass-rough-spec.k -tests/specs/mcd/flipper-tau-pass-spec.k -tests/specs/mcd/flipper-ttl-pass-spec.k -tests/specs/mcd/flopper-cage-pass-spec.k -tests/specs/mcd/flopper-dent-guy-diff-tic-not-0-pass-rough-spec.k -tests/specs/mcd/flopper-dent-guy-same-pass-rough-spec.k -tests/specs/mcd/flopper-file-pass-rough-spec.k -tests/specs/mcd/flopper-kick-pass-rough-spec.k -tests/specs/mcd/flopper-tick-pass-rough-spec.k -tests/specs/mcd/functional-spec.k -tests/specs/mcd/gemjoin-exit-pass-rough-spec.k -tests/specs/mcd/pot-join-pass-rough-spec.k -tests/specs/mcd/vat-addui-fail-rough-spec.k -tests/specs/mcd/vat-addui-pass-spec.k -tests/specs/mcd/vat-deny-diff-fail-rough-spec.k -tests/specs/mcd/vat-flux-diff-pass-rough-spec.k -tests/specs/mcd/vat-fold-pass-rough-spec.k -tests/specs/mcd/vat-fork-diff-pass-rough-spec.k -tests/specs/mcd/vat-frob-diff-zero-dart-pass-rough-spec.k -tests/specs/mcd/vat-move-diff-rough-spec.k -tests/specs/mcd/vat-mului-pass-spec.k -tests/specs/mcd/vat-muluu-pass-spec.k -tests/specs/mcd/vat-slip-pass-rough-spec.k -tests/specs/mcd/vat-subui-fail-rough-spec.k -tests/specs/mcd/vat-subui-pass-rough-spec.k -tests/specs/mcd/vat-subui-pass-spec.k -tests/specs/mcd/vow-cage-deficit-pass-rough-spec.k -tests/specs/mcd/vow-cage-surplus-pass-rough-spec.k -tests/specs/mcd/vow-fess-fail-rough-spec.k -tests/specs/mcd/vow-flog-fail-rough-spec.k -tests/specs/opcodes/create-spec.k diff --git a/tests/failing-symbolic.haskell-booster b/tests/failing-symbolic.haskell-booster deleted file mode 100644 index 83c2a5c1fe..0000000000 --- a/tests/failing-symbolic.haskell-booster +++ /dev/null @@ -1,22 +0,0 @@ -tests/specs/benchmarks/ecrecoverloop02-sigs-valid-spec.k -tests/specs/benchmarks/functional-spec.k -tests/specs/bihu/collectToken-spec.k -tests/specs/examples/erc721-spec.md -tests/specs/examples/sum-to-n-foundry-spec.k -tests/specs/examples/sum-to-n-spec.k -tests/specs/functional/lemmas-no-smt-spec.k -tests/specs/functional/lemmas-spec.k -tests/specs/functional/merkle-spec.k -tests/specs/functional/storageRoot-spec.k -tests/specs/kontrol/test-arithmetictest-test_wmul_wdiv_inverse_underflow-uint256-uint256-0-spec.k -tests/specs/mcd/dstoken-burn-self-fail-rough-spec.k -tests/specs/mcd/dstoken-transferfrom-fail-rough-spec.k -tests/specs/mcd/flapper-tend-guy-diff-pass-rough-spec.k -tests/specs/mcd/gemjoin-exit-pass-rough-spec.k -tests/specs/mcd/vat-fold-pass-rough-spec.k -tests/specs/mcd/vat-fork-diff-pass-rough-spec.k -tests/specs/mcd/vat-frob-diff-zero-dart-pass-rough-spec.k -tests/specs/mcd/vow-cage-deficit-pass-rough-spec.k -tests/specs/mcd/vow-cage-surplus-pass-rough-spec.k -tests/specs/opcodes/create-spec.k -tests/specs/opcodes/evm-optimizations-spec.md diff --git a/tests/failing-symbolic.pyk b/tests/failing-symbolic.pyk deleted file mode 100644 index 5ad47edb09..0000000000 --- a/tests/failing-symbolic.pyk +++ /dev/null @@ -1,75 +0,0 @@ -tests/specs/benchmarks/ecrecoverloop00-sig0-invalid-spec.k -tests/specs/benchmarks/ecrecoverloop00-sig1-invalid-spec.k -tests/specs/benchmarks/ecrecoverloop00-sigs-valid-spec.k -tests/specs/benchmarks/ecrecoverloop02-sig0-invalid-spec.k -tests/specs/benchmarks/ecrecoverloop02-sig1-invalid-spec.k -tests/specs/benchmarks/ecrecoverloop02-sigs-valid-spec.k -tests/specs/benchmarks/functional-spec.k -tests/specs/bihu/collectToken-spec.k -tests/specs/erc20/ds/transfer-failure-1-b-spec.k -tests/specs/erc20/ds/transferFrom-failure-1-b-spec.k -tests/specs/erc20/ds/transferFrom-failure-1-c-spec.k -tests/specs/erc20/ds/transferFrom-success-1-spec.k -tests/specs/erc20/ds/transferFrom-success-2-spec.k -tests/specs/erc20/ds/transfer-success-1-spec.k -tests/specs/examples/erc20-spec.md -tests/specs/examples/erc721-spec.md -tests/specs/examples/sum-to-n-foundry-spec.k -tests/specs/examples/sum-to-n-spec.k -tests/specs/functional/infinite-gas-spec.k -tests/specs/functional/int-simplifications-spec.k -tests/specs/functional/lemmas-no-smt-spec.k -tests/specs/functional/lemmas-spec.k -tests/specs/functional/merkle-spec.k -tests/specs/functional/storageRoot-spec.k -tests/specs/kontrol/test-allowchangestest-testallow-0-spec.k -tests/specs/kontrol/test-allowchangestest-testallow_fail-0-spec.k -tests/specs/kontrol/test-allowchangestest-testfailallowcallstoaddress-0-spec.k -tests/specs/kontrol/test-allowchangestest-testfailallowchangestostorage-0-spec.k -tests/specs/kontrol/test-arithmetictest-test_max1_broken-uint256-uint256-0-spec.k -tests/specs/kontrol/test-arithmetictest-test_wdiv_rounding-uint256-uint256-0-spec.k -tests/specs/kontrol/test-arithmetictest-test_wmul_wdiv_inverse_underflow-uint256-uint256-0-spec.k -tests/specs/kontrol/test-arithmetictest-test_wmul_weakly_increasing_positive-uint256-uint256-0-spec.k -tests/specs/kontrol/test-countertest-testincrement-0-spec.k -tests/specs/kontrol/test-emitcontracttest-testexpectemit-0-spec.k -tests/specs/kontrol/test-emitcontracttest-testexpectemitcheckemitter-0-spec.k -tests/specs/kontrol/test-emitcontracttest-testexpectemitdonotcheckdata-0-spec.k -tests/specs/kontrol/test-expectcalltest-testexpectregularcall-0-spec.k -tests/specs/kontrol/test-expectcalltest-testexpectstaticcall-0-spec.k -tests/specs/kontrol/test-expectreverttest-test_expectrevert_bytes4-0-spec.k -tests/specs/kontrol/test-expectreverttest-test_expectrevert_message-0-spec.k -tests/specs/kontrol/test-expectreverttest-test_expectrevert_returnvalue-0-spec.k -tests/specs/kontrol/test-expectreverttest-testfail_expectrevert_bytes4-0-spec.k -tests/specs/kontrol/test-expectreverttest-testfail_expectrevert_failandsuccess-0-spec.k -tests/specs/kontrol/test-expectreverttest-testfail_expectrevert_false-0-spec.k -tests/specs/kontrol/test-owneruponlytest-testincrementasowner-0-spec.k -tests/specs/kontrol/test-safetest-testwithdrawfuzz-uint96-0-spec.k -tests/specs/kontrol/test-storetest-testaccesses-0-spec.k -tests/specs/kontrol/test-storetest-teststoreload-0-spec.k -tests/specs/mcd/dstoken-burn-self-fail-rough-spec.k -tests/specs/mcd/dstoken-transferfrom-fail-rough-spec.k -tests/specs/mcd/end-cash-pass-rough-spec.k -tests/specs/mcd/end-pack-pass-rough-spec.k -tests/specs/mcd/flapper-tend-guy-diff-pass-rough-spec.k -tests/specs/mcd/flapper-yank-pass-rough-spec.k -tests/specs/mcd/flipper-bids-pass-rough-spec.k -tests/specs/mcd/flopper-dent-guy-diff-tic-not-0-pass-rough-spec.k -tests/specs/mcd/flopper-dent-guy-same-pass-rough-spec.k -tests/specs/mcd/flopper-file-pass-rough-spec.k -tests/specs/mcd/flopper-kick-pass-rough-spec.k -tests/specs/mcd/flopper-tick-pass-rough-spec.k -tests/specs/mcd/functional-spec.k -tests/specs/mcd/gemjoin-exit-pass-rough-spec.k -tests/specs/mcd/pot-join-pass-rough-spec.k -tests/specs/mcd/vat-flux-diff-pass-rough-spec.k -tests/specs/mcd/vat-fold-pass-rough-spec.k -tests/specs/mcd/vat-fork-diff-pass-rough-spec.k -tests/specs/mcd/vat-frob-diff-zero-dart-pass-rough-spec.k -tests/specs/mcd/vat-move-diff-rough-spec.k -tests/specs/mcd/vat-slip-pass-rough-spec.k -tests/specs/mcd/vow-cage-deficit-pass-rough-spec.k -tests/specs/mcd/vow-cage-surplus-pass-rough-spec.k -tests/specs/mcd/vow-fess-fail-rough-spec.k -tests/specs/mcd/vow-flog-fail-rough-spec.k -tests/specs/opcodes/create-spec.k -tests/specs/opcodes/evm-optimizations-spec.md diff --git a/tests/failing.llvm b/tests/failing.llvm deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/failing/ContractCreationSpam_d0g0v0.json b/tests/failing/ContractCreationSpam_d0g0v0.json deleted file mode 100644 index b8564c020e..0000000000 --- a/tests/failing/ContractCreationSpam_d0g0v0.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "ContractCreationSpam_d0g0v0_Byzantium" : { - "_info" : { - "comment" : "", - "filledwith" : "testeth 1.6.0-alpha.0-11+commit.978e68d2", - "lllcversion" : "Version: 0.5.0-develop.2018.11.9+commit.9709dfe0.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stAttackTest/ContractCreationSpam_d0g0v0Filler.json", - "sourceHash" : "8e54d77b3795f787463c4360e0b7bf53424c2fec8560d61418c7cffd3e7eedf9" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x174876e800", - "gasUsed" : "0x0c3500", - "hash" : "0x395c1b94f8f4fe9f239719e27d11c86cec9b0c5ae063482fe187e7cdbc9ca9fa", - "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "nonce" : "0x0000000000000000", - "number" : "0x01", - "parentHash" : "0x24a30e4305ac41674b26493c800c05f507e98d3b8bceb0a314f9b9bc43622736", - "receiptTrie" : "0x1723da285b2c748c2ca379879c0cc2319ff26a9feb6d0779c6821ebe1a8122f6", - "stateRoot" : "0x0344321ea672cbc56b9b51fa730cb2e67fe4b5a7f8c4a14a291ce4d0292e2352", - "timestamp" : "0x03e8", - "transactionsTrie" : "0x202c09237fc2d6599e3cce6c9775000e3714d184832789143ef1ec871492f7fa", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90262f901faa024a30e4305ac41674b26493c800c05f507e98d3b8bceb0a314f9b9bc43622736a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa00344321ea672cbc56b9b51fa730cb2e67fe4b5a7f8c4a14a291ce4d0292e2352a0202c09237fc2d6599e3cce6c9775000e3714d184832789143ef1ec871492f7faa01723da285b2c748c2ca379879c0cc2319ff26a9feb6d0779c6821ebe1a8122f6b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830200000185174876e800830c35008203e880a00000000000000000000000000000000000000000000000000000000000000000880000000000000000f862f8608001830c3500946a0a0fc761c612c340a0e98d33b37a75e526847280801ba0aca0d145ae5d27ed427ff0e463b8a46181d4786c437d6efb9937a6990694af7aa00f9bd68ece8f38ef2836153cd0bb85ec92f8386177f6e68d5437ab7b7d0d6361c0", - "transactions" : [ - { - "data" : "0x", - "gasLimit" : "0x0c3500", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0xaca0d145ae5d27ed427ff0e463b8a46181d4786c437d6efb9937a6990694af7a", - "s" : "0x0f9bd68ece8f38ef2836153cd0bb85ec92f8386177f6e68d5437ab7b7d0d6361", - "to" : "0x6a0a0fc761c612c340a0e98d33b37a75e5268472", - "v" : "0x1b", - "value" : "0x00" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x174876e800", - "gasUsed" : "0x00", - "hash" : "0x24a30e4305ac41674b26493c800c05f507e98d3b8bceb0a314f9b9bc43622736", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0xd54ec35ca872c653659ad91eaa355665c286183b541a0519b3ab765a2d6733c3", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901fcf901f7a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0d54ec35ca872c653659ad91eaa355665c286183b541a0519b3ab765a2d6733c3a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830200008085174876e800808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0x395c1b94f8f4fe9f239719e27d11c86cec9b0c5ae063482fe187e7cdbc9ca9fa", - "network" : "Byzantium", - "postState" : { - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x29a2341af6383500", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0x6a0a0fc761c612c340a0e98d33b37a75e5268472" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x7f6004600c60003960046000f3600035ff00000000000000000000000000000000600052602060006000f0600054805b6001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1505a616000106200002f57600055", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0xe8d498db00", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - } - }, - "pre" : { - "0x6a0a0fc761c612c340a0e98d33b37a75e5268472" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x7f6004600c60003960046000f3600035ff00000000000000000000000000000000600052602060006000f0600054805b6001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1505a616000106200002f57600055", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0xe8d4a51000", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - }, - "sealEngine" : "NoProof" - } -} diff --git a/tests/failing/ContractCreationSpam_d0g0v0.json.expected b/tests/failing/ContractCreationSpam_d0g0v0.json.expected deleted file mode 100644 index af9c8c9aef..0000000000 --- a/tests/failing/ContractCreationSpam_d0g0v0.json.expected +++ /dev/null @@ -1,305 +0,0 @@ - - - check "account" : { 244687034288125203496486448490407391986876152250 : { "balance" : 3000017592186844416 , .JSONs } , .JSONs } ~> check "account" : { 244687034288125203496486448490407391986876152250 : { "code" : "" , "nonce" : "0x00" , "storage" : { .JSONs } , .JSONs } , .JSONs } ~> check "account" : { "0x6a0a0fc761c612c340a0e98d33b37a75e5268472" : { "balance" : "0x0de0b6b3a7640000" , "code" : "0x7f6004600c60003960046000f3600035ff00000000000000000000000000000000600052602060006000f0600054805b6001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1505a616000106200002f57600055" , "nonce" : "0x00" , "storage" : { .JSONs } , .JSONs } , "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { "balance" : "0xe8d498db00" , "code" : "" , "nonce" : "0x01" , "storage" : { .JSONs } , .JSONs } , .JSONs } ~> failure "ContractCreationSpam_d0g0v0_Byzantium" ~> check "ContractCreationSpam_d0g0v0_Byzantium" : { "genesisBlockHeader" : { "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" , "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" , "difficulty" : "0x020000" , "extraData" : "0x42" , "gasLimit" : "0x174876e800" , "gasUsed" : "0x00" , "hash" : "0x24a30e4305ac41674b26493c800c05f507e98d3b8bceb0a314f9b9bc43622736" , "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" , "nonce" : "0x0102030405060708" , "number" : "0x00" , "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000" , "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" , "stateRoot" : "0xd54ec35ca872c653659ad91eaa355665c286183b541a0519b3ab765a2d6733c3" , "timestamp" : "0x03b6" , "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" , "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" , .JSONs } , .JSONs } ~> check "ContractCreationSpam_d0g0v0_Byzantium" : { "blockHeader" : { "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" , "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" , "difficulty" : "0x020000" , "extraData" : "" , "gasLimit" : "0x174876e800" , "gasUsed" : "0x0c3500" , "hash" : "0x395c1b94f8f4fe9f239719e27d11c86cec9b0c5ae063482fe187e7cdbc9ca9fa" , "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000" , "nonce" : "0x0000000000000000" , "number" : "0x01" , "parentHash" : "0x24a30e4305ac41674b26493c800c05f507e98d3b8bceb0a314f9b9bc43622736" , "receiptTrie" : "0x1723da285b2c748c2ca379879c0cc2319ff26a9feb6d0779c6821ebe1a8122f6" , "stateRoot" : "0x0344321ea672cbc56b9b51fa730cb2e67fe4b5a7f8c4a14a291ce4d0292e2352" , "timestamp" : "0x03e8" , "transactionsTrie" : "0x202c09237fc2d6599e3cce6c9775000e3714d184832789143ef1ec871492f7fa" , "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" , .JSONs } , .JSONs } ~> check "ContractCreationSpam_d0g0v0_Byzantium" : { "transactions" : [ { "data" : "0x" , "gasLimit" : "0x0c3500" , "gasPrice" : "0x01" , "nonce" : "0x00" , "r" : "0xaca0d145ae5d27ed427ff0e463b8a46181d4786c437d6efb9937a6990694af7a" , "s" : "0x0f9bd68ece8f38ef2836153cd0bb85ec92f8386177f6e68d5437ab7b7d0d6361" , "to" : "0x6a0a0fc761c612c340a0e98d33b37a75e5268472" , "v" : "0x1b" , "value" : "0x00" , .JSONs } , .JSONs ] , .JSONs } ~> check "ContractCreationSpam_d0g0v0_Byzantium" : { "uncleHeaders" : [ .JSONs ] , .JSONs } ~> clear ~> run { .JSONs } ~> success .EthereumSimulation ~> .K - - - 1 - - - NORMAL - - - BYZANTIUM - - - true - - - - - b"" - - - EVMC_OUT_OF_GAS - - - .List - - - .List - - - SetItem ( 244687034288125203496486448490407391986876152250 ) - SetItem ( 605377403689755860392575400028894927315383256178 ) - SetItem ( 966588469268559010541288244128342317224451555083 ) - SetItem ( 1167766894475069270441227884904096439843862160299 ) - - - - b"" - - - .Set - - - .Account - - - .Account - - - b"" - - - 0 - - - .WordStack - - - b"" - - - 0 - - - 0 - - - 0 - - - 779000 - - - false - - - -1 - - - - - .Set - - - .List - - - 0 - - - .Set - - - .Map - - - - 1 - - - 966588469268559010541288244128342317224451555083 - - - ListItem ( 16571357051919171647812252688150536926893680553418066239369932048252618811190 ) - ListItem ( 0 ) - - - - 16571357051919171647812252688150536926893680553418066239369932048252618811190 - - - 13478047122767188135818125966132228187941283477090363246179690878162135454535 - - - 244687034288125203496486448490407391986876152250 - - - 1477430059799533586754885186927219234403198845911817080209357323761022280530 - - - 14551815498284840264014857837325028947526850354915646895726655739316204140538 - - - 10466540833385543789724272542100884313025723654884224509797710346113521885942 - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - - - 131072 - - - 1 - - - 100000000000 - - - 800000 - - - 1000 - - - b"" - - - 0 - - - 0 - - - 0 - - - 0 - - - [ .JSONs ] - - - - - - 1 - - - - - 244687034288125203496486448490407391986876152250 - - - 3000000000000800000 - - - b"" - - - .Map - - - .Map - - - 0 - - - - 605377403689755860392575400028894927315383256178 - - - 1000000000000000000 - - - b"\x7f`\x04`\f`\x009`\x04`\x00\xf3`\x005\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x00R` `\x00`\x00\xf0`\x00T\x80[`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1P`\x01\x01\x80`\x00R`\x00\x80` \x81\x80\x87`\x06\xf1PZa`\x00\x10b\x00\x00/W`\x00U" - - - .Map - - - .Map - - - 0 - - - - 966588469268559010541288244128342317224451555083 - - - 999999200000 - - - b"" - - - .Map - - - .Map - - - 1 - - - - 1167766894475069270441227884904096439843862160299 - - - 0 - - - b"" - - - .Map - - - .Map - - - 0 - - - - - ListItem ( 0 ) - - - .List - - - - - 0 - - - 0 - - - 1 - - - 800000 - - - 605377403689755860392575400028894927315383256178 - - - 0 - - - 27 - - - b"\xac\xa0\xd1E\xae]'\xedB\x7f\xf0\xe4c\xb8\xa4a\x81\xd4xlC}n\xfb\x997\xa6\x99\x06\x94\xafz" - - - b"\x0f\x9b\xd6\x8e\xce\x8f8\xef(6\x15<\xd0\xbb\x85\xec\x92\xf88aw\xf6\xe6\x8dT7\xab{}\rca" - - - b"" - - - [ .JSONs ] - - - 1 - - - 1 - - - 1 - - - Legacy - - - - - - \ No newline at end of file diff --git a/tests/failing/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0.json b/tests/failing/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0.json deleted file mode 100644 index 750608ce67..0000000000 --- a/tests/failing/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0_Byzantium" : { - "_info" : { - "comment" : "", - "filledwith" : "testeth 1.6.0-alpha.0-11+commit.978e68d2", - "lllcversion" : "Version: 0.5.0-develop.2018.11.9+commit.9709dfe0.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stStaticCall/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0Filler.json", - "sourceHash" : "aeb994c6f3decded15e070bd3424e7b2daff83e639cc72d65e1613f7e42cff6f" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x989680", - "gasUsed" : "0x01a182", - "hash" : "0xa55121a4c4b8dc109c35f7c3d2f4aaa5db579623cfd91c4feacc636dba8a36d3", - "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "nonce" : "0x0000000000000000", - "number" : "0x01", - "parentHash" : "0x0a7e2b8a4aa7775ef54a4f52912179dce2f358c63ce1d83b8d5c727383c87b97", - "receiptTrie" : "0x993daa0d1aa166aeb2a97f5e76f060900b886275a482549346d5f5c6540e8534", - "stateRoot" : "0xb0cfe94047cb81299ce49bae362d3097c76722f11e9b5b97307abe0eefa40a41", - "timestamp" : "0x03e8", - "transactionsTrie" : "0xa9196e82a3a9d85d7bcc420dbac78c908768ad2d33a3655ba2e493e2d6dc055e", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90260f901f8a00a7e2b8a4aa7775ef54a4f52912179dce2f358c63ce1d83b8d5c727383c87b97a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0b0cfe94047cb81299ce49bae362d3097c76722f11e9b5b97307abe0eefa40a41a0a9196e82a3a9d85d7bcc420dbac78c908768ad2d33a3655ba2e493e2d6dc055ea0993daa0d1aa166aeb2a97f5e76f060900b886275a482549346d5f5c6540e8534b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000001839896808301a1828203e880a00000000000000000000000000000000000000000000000000000000000000000880000000000000000f862f860800183029fe094100000000000000000000000000000000000000080801ba0baf8a8f59325064cb79441e4e78350cedcb7f76317c4f8d9ed321025db52916ba04cc988db9cec57eda456bb242201bb41c723f2427ff750123f11af6b759547e2c0", - "transactions" : [ - { - "data" : "0x", - "gasLimit" : "0x029fe0", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0xbaf8a8f59325064cb79441e4e78350cedcb7f76317c4f8d9ed321025db52916b", - "s" : "0x4cc988db9cec57eda456bb242201bb41c723f2427ff750123f11af6b759547e2", - "to" : "0x1000000000000000000000000000000000000000", - "v" : "0x1b", - "value" : "0x00" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x989680", - "gasUsed" : "0x00", - "hash" : "0x0a7e2b8a4aa7775ef54a4f52912179dce2f358c63ce1d83b8d5c727383c87b97", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0xc88416a824e0fab43548e2b3650663c6d3559644f5eb3cfec3a36e2683f28c3c", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c88416a824e0fab43548e2b3650663c6d3559644f5eb3cfec3a36e2683f28c3ca056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830200008083989680808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0xa55121a4c4b8dc109c35f7c3d2f4aaa5db579623cfd91c4feacc636dba8a36d3", - "network" : "Byzantium", - "postState" : { - "0x1000000000000000000000000000000000000000" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x604060006040600073100000000000000000000000000000000000000161eaf6f46000555a600155", - "nonce" : "0x00", - "storage" : { - "0x01" : "0x014c81" - } - }, - "0x1000000000000000000000000000000000000001" : { - "balance" : "0x00", - "code" : "0x6040600060406000731000000000000000000000000000000000000002619c90f4505b61c3506080511015603e5760013b506001608051016080526022565b", - "nonce" : "0x00", - "storage" : { - } - }, - "0x1000000000000000000000000000000000000002" : { - "balance" : "0x00", - "code" : "0x6040600060406000731000000000000000000000000000000000000003614e34fa", - "nonce" : "0x00", - "storage" : { - } - }, - "0x1000000000000000000000000000000000000003" : { - "balance" : "0x00", - "code" : "0x6001600352", - "nonce" : "0x00", - "storage" : { - } - }, - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x29a2241af62da182", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de7b6b3a7625e7e", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - } - }, - "pre" : { - "0x1000000000000000000000000000000000000000" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x604060006040600073100000000000000000000000000000000000000161eaf6f46000555a600155", - "nonce" : "0x00", - "storage" : { - } - }, - "0x1000000000000000000000000000000000000001" : { - "balance" : "0x00", - "code" : "0x6040600060406000731000000000000000000000000000000000000002619c90f4505b61c3506080511015603e5760013b506001608051016080526022565b", - "nonce" : "0x00", - "storage" : { - } - }, - "0x1000000000000000000000000000000000000002" : { - "balance" : "0x00", - "code" : "0x6040600060406000731000000000000000000000000000000000000003614e34fa", - "nonce" : "0x00", - "storage" : { - } - }, - "0x1000000000000000000000000000000000000003" : { - "balance" : "0x00", - "code" : "0x6001600352", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - }, - "sealEngine" : "NoProof" - } -} diff --git a/tests/failing/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0.json.expected b/tests/failing/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0.json.expected deleted file mode 100644 index e43ece4a53..0000000000 --- a/tests/failing/static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0.json.expected +++ /dev/null @@ -1,345 +0,0 @@ - - - check "account" : { 966588469268559010541288244128342317224451555083 : { "balance" : 1001970324836867710 , .JSONs } , .JSONs } ~> check "account" : { 966588469268559010541288244128342317224451555083 : { "code" : "" , "nonce" : "0x01" , "storage" : { .JSONs } , .JSONs } , .JSONs } ~> failure "static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0_Byzantium" ~> check "static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0_Byzantium" : { "genesisBlockHeader" : { "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" , "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" , "difficulty" : "0x020000" , "extraData" : "0x42" , "gasLimit" : "0x989680" , "gasUsed" : "0x00" , "hash" : "0x0a7e2b8a4aa7775ef54a4f52912179dce2f358c63ce1d83b8d5c727383c87b97" , "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" , "nonce" : "0x0102030405060708" , "number" : "0x00" , "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000" , "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" , "stateRoot" : "0xc88416a824e0fab43548e2b3650663c6d3559644f5eb3cfec3a36e2683f28c3c" , "timestamp" : "0x03b6" , "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" , "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" , .JSONs } , .JSONs } ~> check "static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0_Byzantium" : { "blockHeader" : { "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" , "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" , "difficulty" : "0x020000" , "extraData" : "" , "gasLimit" : "0x989680" , "gasUsed" : "0x01a182" , "hash" : "0xa55121a4c4b8dc109c35f7c3d2f4aaa5db579623cfd91c4feacc636dba8a36d3" , "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000" , "nonce" : "0x0000000000000000" , "number" : "0x01" , "parentHash" : "0x0a7e2b8a4aa7775ef54a4f52912179dce2f358c63ce1d83b8d5c727383c87b97" , "receiptTrie" : "0x993daa0d1aa166aeb2a97f5e76f060900b886275a482549346d5f5c6540e8534" , "stateRoot" : "0xb0cfe94047cb81299ce49bae362d3097c76722f11e9b5b97307abe0eefa40a41" , "timestamp" : "0x03e8" , "transactionsTrie" : "0xa9196e82a3a9d85d7bcc420dbac78c908768ad2d33a3655ba2e493e2d6dc055e" , "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" , .JSONs } , .JSONs } ~> check "static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0_Byzantium" : { "transactions" : [ { "data" : "0x" , "gasLimit" : "0x029fe0" , "gasPrice" : "0x01" , "nonce" : "0x00" , "r" : "0xbaf8a8f59325064cb79441e4e78350cedcb7f76317c4f8d9ed321025db52916b" , "s" : "0x4cc988db9cec57eda456bb242201bb41c723f2427ff750123f11af6b759547e2" , "to" : "0x1000000000000000000000000000000000000000" , "v" : "0x1b" , "value" : "0x00" , .JSONs } , .JSONs ] , .JSONs } ~> check "static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0_Byzantium" : { "uncleHeaders" : [ .JSONs ] , .JSONs } ~> clear ~> run { .JSONs } ~> success .EthereumSimulation ~> .K - - - 1 - - - NORMAL - - - BYZANTIUM - - - true - - - - - b"" - - - EVMC_SUCCESS - - - .List - - - .List - - - SetItem ( 91343852333181432387730302044767688728495783936 ) - SetItem ( 91343852333181432387730302044767688728495783939 ) - SetItem ( 244687034288125203496486448490407391986876152250 ) - SetItem ( 966588469268559010541288244128342317224451555083 ) - - - - b"" - - - .Set - - - .Account - - - .Account - - - b"" - - - 0 - - - .WordStack - - - b"" - - - 0 - - - 65118 - - - 0 - - - 151000 - - - false - - - -1 - - - - - .Set - - - .List - - - 0 - - - .Set - - - .Map - - - - 1 - - - 966588469268559010541288244128342317224451555083 - - - ListItem ( 4746051719422293590722610549793911264493366370041112137154393734119990786967 ) - ListItem ( 0 ) - - - - 4746051719422293590722610549793911264493366370041112137154393734119990786967 - - - 13478047122767188135818125966132228187941283477090363246179690878162135454535 - - - 244687034288125203496486448490407391986876152250 - - - 79974408532960288429899711134176742740713630382614279690056500896445772335681 - - - 76485805301318466729876335615587142838948560282354297614116042271634807850334 - - - 69312817154354016080117022606382753832604457950659495524378586854807032464692 - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - - - 131072 - - - 1 - - - 10000000 - - - 106882 - - - 1000 - - - b"" - - - 0 - - - 0 - - - 0 - - - 0 - - - [ .JSONs ] - - - - - - 1 - - - - - 91343852333181432387730302044767688728495783936 - - - 1000000000000000000 - - - b"`@`\x00`@`\x00s\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01a\xea\xf6\xf4`\x00UZ`\x01U" - - - 0 |-> 0 - 1 |-> 85121 - - - 0 |-> 0 - 1 |-> 85121 - - - 0 - - - - 91343852333181432387730302044767688728495783937 - - - 0 - - - b"`@`\x00`@`\x00s\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02a\x9c\x90\xf4P[a\xc3P`\x80Q\x10\x15`>W`\x01;P`\x01`\x80Q\x01`\x80R`\"V[" - - - .Map - - - .Map - - - 0 - - - - 91343852333181432387730302044767688728495783938 - - - 0 - - - b"`@`\x00`@`\x00s\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03aN4\xfa" - - - .Map - - - .Map - - - 0 - - - - 91343852333181432387730302044767688728495783939 - - - 0 - - - b"`\x01`\x03R" - - - .Map - - - .Map - - - 0 - - - - 244687034288125203496486448490407391986876152250 - - - 3000000000000106882 - - - b"" - - - .Map - - - .Map - - - 0 - - - - 966588469268559010541288244128342317224451555083 - - - 999999999999893118 - - - b"" - - - .Map - - - .Map - - - 1 - - - - - ListItem ( 0 ) - - - .List - - - - - 0 - - - 0 - - - 1 - - - 172000 - - - 91343852333181432387730302044767688728495783936 - - - 0 - - - 27 - - - b"\xba\xf8\xa8\xf5\x93%\x06L\xb7\x94A\xe4\xe7\x83P\xce\xdc\xb7\xf7c\x17\xc4\xf8\xd9\xed2\x10%\xdbR\x91k" - - - b"L\xc9\x88\xdb\x9c\xecW\xed\xa4V\xbb$\"\x01\xbbA\xc7#\xf2B\x7f\xf7P\x12?\x11\xafku\x95G\xe2" - - - b"" - - - [ .JSONs ] - - - 1 - - - 1 - - - 1 - - - Legacy - - - - - - \ No newline at end of file diff --git a/tests/interactive/CallRecursiveContract_d0g0v0.json b/tests/interactive/CallRecursiveContract_d0g0v0.json deleted file mode 100644 index 34e71b575a..0000000000 --- a/tests/interactive/CallRecursiveContract_d0g0v0.json +++ /dev/null @@ -1,758 +0,0 @@ -{ - "CallRecursiveContract_d0g0v0_Byzantium" : { - "_info" : { - "comment" : "", - "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", - "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json", - "sourceHash" : "8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x05f5e100", - "gasUsed" : "0x05d602", - "hash" : "0xad7a4536c5842f5caab4605d78e66b40b287d8eb3777d1692a8de6a6014d854f", - "mixHash" : "0x2997a2caefcc0da8b12b7ba0dc1621e28ff004cdcc4c30106952936ac7a49467", - "nonce" : "0xbb247707a7e8a083", - "number" : "0x01", - "parentHash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", - "receiptTrie" : "0x29cd73fe1868f13a298f87d55ffc3c35f6c1251f98fd58835f99a95c718fbd31", - "stateRoot" : "0xc2eed555afd349166225c89bb46ab3428f34fe9388ce2a8b5b1b4409412dc8f9", - "timestamp" : "0x03e8", - "transactionsTrie" : "0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2eed555afd349166225c89bb46ab3428f34fe9388ce2a8b5b1b4409412dc8f9a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a029cd73fe1868f13a298f87d55ffc3c35f6c1251f98fd58835f99a95c718fbd31b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e1008305d6028203e880a02997a2caefcc0da8b12b7ba0dc1621e28ff004cdcc4c30106952936ac7a4946788bb247707a7e8a083f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0", - "transactions" : [ - { - "data" : "0x00", - "gasLimit" : "0x061a80", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d", - "s" : "0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca", - "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", - "v" : "0x1c", - "value" : "0x01" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x05f5e100", - "gasUsed" : "0x00", - "hash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0xad7a4536c5842f5caab4605d78e66b40b287d8eb3777d1692a8de6a6014d854f", - "network" : "Byzantium", - "postState" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x01", - "code" : "0x3060025560206000600039602060006000f0", - "nonce" : "0x29", - "storage" : { - "0x02" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" - } - }, - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x29a2241af631d602", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x02", - "storage" : { - "0x02" : "0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1" - } - }, - "0x60f971aa65f7e520dcb750823e2c239e61c3736b" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x02", - "storage" : { - "0x02" : "0x60f971aa65f7e520dcb750823e2c239e61c3736b" - } - }, - "0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x02", - "storage" : { - "0x02" : "0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9" - } - }, - "0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x02", - "storage" : { - "0x02" : "0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae" - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x096c3d", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - }, - "0xf0064be0919341a45680ec0d592eaee47df671ac" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x02", - "storage" : { - "0x02" : "0xf0064be0919341a45680ec0d592eaee47df671ac" - } - } - }, - "pre" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x00", - "code" : "0x3060025560206000600039602060006000f0", - "nonce" : "0x28", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0f4240", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - } - }, - "CallRecursiveContract_d0g0v0_EIP150" : { - "_info" : { - "comment" : "", - "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", - "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json", - "sourceHash" : "8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x05f5e100", - "gasUsed" : "0x05d602", - "hash" : "0xc8417a58a1b28973bf904f682286f7f75ce10f60efdb4ed6994aa2758a432a7a", - "mixHash" : "0x08537f394aad708dd1c0a270f66f815ce3dc8826a265c1610fcc11ffa4a68965", - "nonce" : "0xbf62a424947e2578", - "number" : "0x01", - "parentHash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", - "receiptTrie" : "0x094fb672162ff0a137b3e30810321528a5a6cc10634df85054e4856fee261a17", - "stateRoot" : "0x0289aea08a0161f13694a60100228ab183174df65a4dbe5c95b1193b8aa4a292", - "timestamp" : "0x03e8", - "transactionsTrie" : "0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa00289aea08a0161f13694a60100228ab183174df65a4dbe5c95b1193b8aa4a292a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0094fb672162ff0a137b3e30810321528a5a6cc10634df85054e4856fee261a17b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e1008305d6028203e880a008537f394aad708dd1c0a270f66f815ce3dc8826a265c1610fcc11ffa4a6896588bf62a424947e2578f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0", - "transactions" : [ - { - "data" : "0x00", - "gasLimit" : "0x061a80", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d", - "s" : "0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca", - "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", - "v" : "0x1c", - "value" : "0x01" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x05f5e100", - "gasUsed" : "0x00", - "hash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0xc8417a58a1b28973bf904f682286f7f75ce10f60efdb4ed6994aa2758a432a7a", - "network" : "EIP150", - "postState" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x01", - "code" : "0x3060025560206000600039602060006000f0", - "nonce" : "0x29", - "storage" : { - "0x02" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" - } - }, - "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" - } - }, - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x4563918244f9d602", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x096c3d", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - }, - "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" - } - }, - "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" - } - }, - "0xf0064be0919341a45680ec0d592eaee47df671ac" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0xf0064be0919341a45680ec0d592eaee47df671ac" - } - } - }, - "pre" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x00", - "code" : "0x3060025560206000600039602060006000f0", - "nonce" : "0x28", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0f4240", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - } - }, - "CallRecursiveContract_d0g0v0_EIP158" : { - "_info" : { - "comment" : "", - "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", - "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json", - "sourceHash" : "8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x05f5e100", - "gasUsed" : "0x05d602", - "hash" : "0x6476515a7c61709a2b089e0f2ecb62fa09d41b1fa1ae2459b36e8bb18c545747", - "mixHash" : "0x83a666d0df6cd0a56408696cad96d75cad4bf8068866a65920a29fa9f61550d0", - "nonce" : "0x42f2a8307bda5084", - "number" : "0x01", - "parentHash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", - "receiptTrie" : "0xf09f9453977e0f663e221d4f499c3a69374a3e9114d96a24e5a5f43a66fdf8bf", - "stateRoot" : "0x40d37713bc5484e4042bebda7f367f88d1b7888e16428b359b4c57a2e42aa69d", - "timestamp" : "0x03e8", - "transactionsTrie" : "0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa040d37713bc5484e4042bebda7f367f88d1b7888e16428b359b4c57a2e42aa69da0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0f09f9453977e0f663e221d4f499c3a69374a3e9114d96a24e5a5f43a66fdf8bfb901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e1008305d6028203e880a083a666d0df6cd0a56408696cad96d75cad4bf8068866a65920a29fa9f61550d08842f2a8307bda5084f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0", - "transactions" : [ - { - "data" : "0x00", - "gasLimit" : "0x061a80", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d", - "s" : "0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca", - "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", - "v" : "0x1c", - "value" : "0x01" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x05f5e100", - "gasUsed" : "0x00", - "hash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0x6476515a7c61709a2b089e0f2ecb62fa09d41b1fa1ae2459b36e8bb18c545747", - "network" : "EIP158", - "postState" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x01", - "code" : "0x3060025560206000600039602060006000f0", - "nonce" : "0x29", - "storage" : { - "0x02" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" - } - }, - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x4563918244f9d602", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x02", - "storage" : { - "0x02" : "0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1" - } - }, - "0x60f971aa65f7e520dcb750823e2c239e61c3736b" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x02", - "storage" : { - "0x02" : "0x60f971aa65f7e520dcb750823e2c239e61c3736b" - } - }, - "0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x02", - "storage" : { - "0x02" : "0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9" - } - }, - "0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x02", - "storage" : { - "0x02" : "0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae" - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x096c3d", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - }, - "0xf0064be0919341a45680ec0d592eaee47df671ac" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x02", - "storage" : { - "0x02" : "0xf0064be0919341a45680ec0d592eaee47df671ac" - } - } - }, - "pre" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x00", - "code" : "0x3060025560206000600039602060006000f0", - "nonce" : "0x28", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0f4240", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - } - }, - "CallRecursiveContract_d0g0v0_Frontier" : { - "_info" : { - "comment" : "", - "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", - "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json", - "sourceHash" : "8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x05f5e100", - "gasUsed" : "0x061a80", - "hash" : "0x56b01bc48896d0f148e3cbeb25d2acca2fb269f58c76259f12b6371b34cf55e0", - "mixHash" : "0xf2a65eacc585c243da6a578441843d140dd0f249a877b0ded6144c9377d0754b", - "nonce" : "0xe33515169624bac0", - "number" : "0x01", - "parentHash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", - "receiptTrie" : "0x148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6", - "stateRoot" : "0x55f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83", - "timestamp" : "0x03e8", - "transactionsTrie" : "0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa055f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e10083061a808203e880a0f2a65eacc585c243da6a578441843d140dd0f249a877b0ded6144c9377d0754b88e33515169624bac0f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0", - "transactions" : [ - { - "data" : "0x00", - "gasLimit" : "0x061a80", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d", - "s" : "0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca", - "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", - "v" : "0x1c", - "value" : "0x01" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x05f5e100", - "gasUsed" : "0x00", - "hash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0x56b01bc48896d0f148e3cbeb25d2acca2fb269f58c76259f12b6371b34cf55e0", - "network" : "Frontier", - "postState" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x01", - "code" : "0x3060025560206000600039602060006000f0", - "nonce" : "0x29", - "storage" : { - "0x02" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" - } - }, - "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" - } - }, - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x4563918244fa1a80", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0x8e3411c91d5dd4081b4846fa2f93808f5ad19686" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0x8e3411c91d5dd4081b4846fa2f93808f5ad19686" - } - }, - "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0927bf", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - }, - "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" - } - }, - "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" - } - }, - "0xf0064be0919341a45680ec0d592eaee47df671ac" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0xf0064be0919341a45680ec0d592eaee47df671ac" - } - } - }, - "pre" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x00", - "code" : "0x3060025560206000600039602060006000f0", - "nonce" : "0x28", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0f4240", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - } - }, - "CallRecursiveContract_d0g0v0_Homestead" : { - "_info" : { - "comment" : "", - "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", - "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json", - "sourceHash" : "8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x05f5e100", - "gasUsed" : "0x061a80", - "hash" : "0x4b932565479299ee989f7bc9da55d2a3982052fe528791316164e8a9aa7f56db", - "mixHash" : "0x097d08e84b142edbdf167b1768103abcbaaf43d90f9ad99f8d06ab39a4444e20", - "nonce" : "0xf42704efd7c8c55b", - "number" : "0x01", - "parentHash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", - "receiptTrie" : "0x148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6", - "stateRoot" : "0x55f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83", - "timestamp" : "0x03e8", - "transactionsTrie" : "0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa055f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e10083061a808203e880a0097d08e84b142edbdf167b1768103abcbaaf43d90f9ad99f8d06ab39a4444e2088f42704efd7c8c55bf862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0", - "transactions" : [ - { - "data" : "0x00", - "gasLimit" : "0x061a80", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d", - "s" : "0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca", - "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", - "v" : "0x1c", - "value" : "0x01" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x05f5e100", - "gasUsed" : "0x00", - "hash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0x4b932565479299ee989f7bc9da55d2a3982052fe528791316164e8a9aa7f56db", - "network" : "Homestead", - "postState" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x01", - "code" : "0x3060025560206000600039602060006000f0", - "nonce" : "0x29", - "storage" : { - "0x02" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" - } - }, - "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" - } - }, - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x4563918244fa1a80", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0x8e3411c91d5dd4081b4846fa2f93808f5ad19686" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0x8e3411c91d5dd4081b4846fa2f93808f5ad19686" - } - }, - "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0927bf", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - }, - "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" - } - }, - "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" - } - }, - "0xf0064be0919341a45680ec0d592eaee47df671ac" : { - "balance" : "0x00", - "code" : "", - "nonce" : "0x01", - "storage" : { - "0x02" : "0xf0064be0919341a45680ec0d592eaee47df671ac" - } - } - }, - "pre" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x00", - "code" : "0x3060025560206000600039602060006000f0", - "nonce" : "0x28", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0f4240", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - } - } -} \ No newline at end of file diff --git a/tests/interactive/CallRecursiveContract_d0g0v0.json.parse-expected b/tests/interactive/CallRecursiveContract_d0g0v0.json.parse-expected deleted file mode 100644 index 80c6b3321c..0000000000 --- a/tests/interactive/CallRecursiveContract_d0g0v0.json.parse-expected +++ /dev/null @@ -1 +0,0 @@ -LblinitGeneratedTopCell{}(\left-assoc{}(Lbl'Unds'Map'Unds'{}(Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$PGM")), inj{SortJSON{}, SortKItem{}}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("CallRecursiveContract_d0g0v0_Byzantium")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("_info")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("comment")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filledwith")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("cpp-1.3.0+commit.6e0ce939.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lllcversion")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("source")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sourceHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blocks")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05f5e100"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05d602"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xad7a4536c5842f5caab4605d78e66b40b287d8eb3777d1692a8de6a6014d854f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2997a2caefcc0da8b12b7ba0dc1621e28ff004cdcc4c30106952936ac7a49467"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xbb247707a7e8a083"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x29cd73fe1868f13a298f87d55ffc3c35f6c1251f98fd58835f99a95c718fbd31"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc2eed555afd349166225c89bb46ab3428f34fe9388ce2a8b5b1b4409412dc8f9"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("rlp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2eed555afd349166225c89bb46ab3428f34fe9388ce2a8b5b1b4409412dc8f9a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a029cd73fe1868f13a298f87d55ffc3c35f6c1251f98fd58835f99a95c718fbd31b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e1008305d6028203e880a02997a2caefcc0da8b12b7ba0dc1621e28ff004cdcc4c30106952936ac7a4946788bb247707a7e8a083f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactions")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x061a80"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasPrice")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("r")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("s")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("to")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("v")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1c"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHeaders")), LblJSONList{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisBlockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05f5e100"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0102030405060708"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03b6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisRLP")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lastblockhash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xad7a4536c5842f5caab4605d78e66b40b287d8eb3777d1692a8de6a6014d854f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("network")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Byzantium"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("postState")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3060025560206000600039602060006000f0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x29"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x29a2241af631d602"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x02"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x60f971aa65f7e520dcb750823e2c239e61c3736b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x02"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60f971aa65f7e520dcb750823e2c239e61c3736b"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x02"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x02"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x096c3d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xf0064be0919341a45680ec0d592eaee47df671ac")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x02"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf0064be0919341a45680ec0d592eaee47df671ac"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("pre")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3060025560206000600039602060006000f0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x28"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("CallRecursiveContract_d0g0v0_EIP150")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("_info")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("comment")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filledwith")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("cpp-1.3.0+commit.6e0ce939.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lllcversion")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("source")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sourceHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blocks")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05f5e100"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05d602"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc8417a58a1b28973bf904f682286f7f75ce10f60efdb4ed6994aa2758a432a7a"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x08537f394aad708dd1c0a270f66f815ce3dc8826a265c1610fcc11ffa4a68965"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xbf62a424947e2578"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x094fb672162ff0a137b3e30810321528a5a6cc10634df85054e4856fee261a17"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0289aea08a0161f13694a60100228ab183174df65a4dbe5c95b1193b8aa4a292"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("rlp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa00289aea08a0161f13694a60100228ab183174df65a4dbe5c95b1193b8aa4a292a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0094fb672162ff0a137b3e30810321528a5a6cc10634df85054e4856fee261a17b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e1008305d6028203e880a008537f394aad708dd1c0a270f66f815ce3dc8826a265c1610fcc11ffa4a6896588bf62a424947e2578f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactions")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x061a80"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasPrice")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("r")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("s")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("to")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("v")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1c"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHeaders")), LblJSONList{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisBlockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05f5e100"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0102030405060708"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03b6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisRLP")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lastblockhash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc8417a58a1b28973bf904f682286f7f75ce10f60efdb4ed6994aa2758a432a7a"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("network")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("EIP150"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("postState")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3060025560206000600039602060006000f0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x29"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4563918244f9d602"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x096c3d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xdfceaa082d190ab34e3c37943de35ae8fc01f300")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xdfceaa082d190ab34e3c37943de35ae8fc01f300"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xf0064be0919341a45680ec0d592eaee47df671ac")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf0064be0919341a45680ec0d592eaee47df671ac"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("pre")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3060025560206000600039602060006000f0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x28"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("CallRecursiveContract_d0g0v0_EIP158")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("_info")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("comment")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filledwith")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("cpp-1.3.0+commit.6e0ce939.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lllcversion")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("source")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sourceHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blocks")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05f5e100"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05d602"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6476515a7c61709a2b089e0f2ecb62fa09d41b1fa1ae2459b36e8bb18c545747"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x83a666d0df6cd0a56408696cad96d75cad4bf8068866a65920a29fa9f61550d0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42f2a8307bda5084"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf09f9453977e0f663e221d4f499c3a69374a3e9114d96a24e5a5f43a66fdf8bf"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x40d37713bc5484e4042bebda7f367f88d1b7888e16428b359b4c57a2e42aa69d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("rlp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa040d37713bc5484e4042bebda7f367f88d1b7888e16428b359b4c57a2e42aa69da0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0f09f9453977e0f663e221d4f499c3a69374a3e9114d96a24e5a5f43a66fdf8bfb901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e1008305d6028203e880a083a666d0df6cd0a56408696cad96d75cad4bf8068866a65920a29fa9f61550d08842f2a8307bda5084f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactions")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x061a80"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasPrice")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("r")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("s")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("to")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("v")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1c"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHeaders")), LblJSONList{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisBlockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05f5e100"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0102030405060708"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03b6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisRLP")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lastblockhash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6476515a7c61709a2b089e0f2ecb62fa09d41b1fa1ae2459b36e8bb18c545747"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("network")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("EIP158"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("postState")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3060025560206000600039602060006000f0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x29"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4563918244f9d602"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x02"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x60f971aa65f7e520dcb750823e2c239e61c3736b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x02"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60f971aa65f7e520dcb750823e2c239e61c3736b"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x02"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x02"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x096c3d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xf0064be0919341a45680ec0d592eaee47df671ac")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x02"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf0064be0919341a45680ec0d592eaee47df671ac"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("pre")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3060025560206000600039602060006000f0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x28"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("CallRecursiveContract_d0g0v0_Frontier")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("_info")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("comment")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filledwith")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("cpp-1.3.0+commit.6e0ce939.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lllcversion")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("source")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sourceHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blocks")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05f5e100"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x061a80"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56b01bc48896d0f148e3cbeb25d2acca2fb269f58c76259f12b6371b34cf55e0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf2a65eacc585c243da6a578441843d140dd0f249a877b0ded6144c9377d0754b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xe33515169624bac0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x55f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("rlp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa055f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e10083061a808203e880a0f2a65eacc585c243da6a578441843d140dd0f249a877b0ded6144c9377d0754b88e33515169624bac0f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactions")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x061a80"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasPrice")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("r")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("s")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("to")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("v")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1c"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHeaders")), LblJSONList{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisBlockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05f5e100"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0102030405060708"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03b6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisRLP")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lastblockhash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56b01bc48896d0f148e3cbeb25d2acca2fb269f58c76259f12b6371b34cf55e0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("network")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Frontier"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("postState")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3060025560206000600039602060006000f0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x29"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4563918244fa1a80"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x8e3411c91d5dd4081b4846fa2f93808f5ad19686")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x8e3411c91d5dd4081b4846fa2f93808f5ad19686"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0927bf"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xdfceaa082d190ab34e3c37943de35ae8fc01f300")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xdfceaa082d190ab34e3c37943de35ae8fc01f300"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xf0064be0919341a45680ec0d592eaee47df671ac")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf0064be0919341a45680ec0d592eaee47df671ac"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("pre")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3060025560206000600039602060006000f0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x28"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("CallRecursiveContract_d0g0v0_Homestead")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("_info")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("comment")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filledwith")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("cpp-1.3.0+commit.6e0ce939.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lllcversion")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("source")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sourceHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blocks")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05f5e100"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x061a80"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4b932565479299ee989f7bc9da55d2a3982052fe528791316164e8a9aa7f56db"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x097d08e84b142edbdf167b1768103abcbaaf43d90f9ad99f8d06ab39a4444e20"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf42704efd7c8c55b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x55f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("rlp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa055f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e10083061a808203e880a0097d08e84b142edbdf167b1768103abcbaaf43d90f9ad99f8d06ab39a4444e2088f42704efd7c8c55bf862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactions")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x061a80"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasPrice")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("r")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("s")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("to")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("v")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1c"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHeaders")), LblJSONList{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisBlockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05f5e100"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0102030405060708"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03b6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisRLP")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lastblockhash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4b932565479299ee989f7bc9da55d2a3982052fe528791316164e8a9aa7f56db"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("network")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Homestead"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("postState")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3060025560206000600039602060006000f0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x29"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4563918244fa1a80"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x8e3411c91d5dd4081b4846fa2f93808f5ad19686")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x8e3411c91d5dd4081b4846fa2f93808f5ad19686"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0927bf"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xdfceaa082d190ab34e3c37943de35ae8fc01f300")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xdfceaa082d190ab34e3c37943de35ae8fc01f300"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xf0064be0919341a45680ec0d592eaee47df671ac")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x02")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf0064be0919341a45680ec0d592eaee47df671ac"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("pre")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3060025560206000600039602060006000f0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x28"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))))), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$SCHEDULE")), inj{SortSchedule{}, SortKItem{}}(LblSHANGHAI'Unds'EVM{}())), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$MODE")), inj{SortMode{}, SortKItem{}}(LblNORMAL{}())), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$CHAINID")), inj{SortInt{}, SortKItem{}}(\dv{SortInt{}}("1"))), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$USEGAS")), inj{SortBool{}, SortKItem{}}(\dv{SortBool{}}("true")))))) \ No newline at end of file diff --git a/tests/interactive/log3_MaxTopic_d0g0v0.json b/tests/interactive/log3_MaxTopic_d0g0v0.json deleted file mode 100644 index c8a4fe19e9..0000000000 --- a/tests/interactive/log3_MaxTopic_d0g0v0.json +++ /dev/null @@ -1,612 +0,0 @@ -{ - "log3_MaxTopic_d0g0v0_Byzantium" : { - "_info" : { - "comment" : "", - "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", - "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stLogTests/log3_MaxTopic_d0g0v0Filler.json", - "sourceHash" : "5888de2660af6f5e41f6388e846b0334e17727294bd89aac46336b7afd73836e" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x0f4240", - "gasUsed" : "0xc41f", - "hash" : "0xa97a5390495b6e1382be3baf36b4f1e200f862c0804411ef4c67ba64ef7d2272", - "mixHash" : "0x32fbc3b912214560992d343044f4dc996b9c33e32a942029328a23ccc41a7495", - "nonce" : "0x75c57adb6cc00cb9", - "number" : "0x01", - "parentHash" : "0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403", - "receiptTrie" : "0x5febf5fcc40f54680c21e1afecd13e726b8e5784d6e10d5b08225ef6579b6f70", - "stateRoot" : "0x4b910d6040a2a2f1b7a165747c448c6585a54c2261db1c6dfab63b28a2a614e4", - "timestamp" : "0x03e8", - "transactionsTrie" : "0x466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90262f901f7a0739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa04b910d6040a2a2f1b7a165747c448c6585a54c2261db1c6dfab63b28a2a614e4a0466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61a05febf5fcc40f54680c21e1afecd13e726b8e5784d6e10d5b08225ef6579b6f70b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000008302000001830f424082c41f8203e880a032fbc3b912214560992d343044f4dc996b9c33e32a942029328a23ccc41a74958875c57adb6cc00cb9f865f86380018303345094095e7baea6a6c7c4c2dfeb977efac326af552d87830186a0801ba09bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926a0177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1c0", - "transactions" : [ - { - "data" : "", - "gasLimit" : "0x033450", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0x9bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926", - "s" : "0x177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1", - "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", - "v" : "0x1b", - "value" : "0x0186a0" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x0f4240", - "gasUsed" : "0x00", - "hash" : "0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0xc2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080830f4240808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0xa97a5390495b6e1382be3baf36b4f1e200f862c0804411ef4c67ba64ef7d2272", - "network" : "Byzantium", - "postState" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x0de0b6b3a7658689", - "code" : "0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055", - "nonce" : "0x00", - "storage" : { - "0x00" : "0x01" - } - }, - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640017", - "code" : "0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3", - "nonce" : "0x00", - "storage" : { - } - }, - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x29a2241af62cc41f", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de0b6b3a761b541", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - } - }, - "pre" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055", - "nonce" : "0x00", - "storage" : { - } - }, - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - } - }, - "log3_MaxTopic_d0g0v0_EIP150" : { - "_info" : { - "comment" : "", - "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", - "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stLogTests/log3_MaxTopic_d0g0v0Filler.json", - "sourceHash" : "5888de2660af6f5e41f6388e846b0334e17727294bd89aac46336b7afd73836e" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x0f4240", - "gasUsed" : "0xc41f", - "hash" : "0xffad7774f4bcbcbebca98ac2269d07e814661db5b7e2c730e3cf3c92f63678e1", - "mixHash" : "0x580bac5520779d5c51910dc6684c9bea21d0ffeb6933a65b9e5833d5c4a6fa12", - "nonce" : "0x88873ce85cf33435", - "number" : "0x01", - "parentHash" : "0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403", - "receiptTrie" : "0xcb832bb91f2515c21c7825e0a77b1009d83e6284d1e99e009a61e349abedbd0a", - "stateRoot" : "0xaa9e5fe68e309fd69a6e9687ddd49e6f07ecd344dc2d574954e87c7a540c0c1c", - "timestamp" : "0x03e8", - "transactionsTrie" : "0x466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90262f901f7a0739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0aa9e5fe68e309fd69a6e9687ddd49e6f07ecd344dc2d574954e87c7a540c0c1ca0466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61a0cb832bb91f2515c21c7825e0a77b1009d83e6284d1e99e009a61e349abedbd0ab90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000008302000001830f424082c41f8203e880a0580bac5520779d5c51910dc6684c9bea21d0ffeb6933a65b9e5833d5c4a6fa128888873ce85cf33435f865f86380018303345094095e7baea6a6c7c4c2dfeb977efac326af552d87830186a0801ba09bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926a0177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1c0", - "transactions" : [ - { - "data" : "", - "gasLimit" : "0x033450", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0x9bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926", - "s" : "0x177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1", - "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", - "v" : "0x1b", - "value" : "0x0186a0" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x0f4240", - "gasUsed" : "0x00", - "hash" : "0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0xc2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080830f4240808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0xffad7774f4bcbcbebca98ac2269d07e814661db5b7e2c730e3cf3c92f63678e1", - "network" : "EIP150", - "postState" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x0de0b6b3a7658689", - "code" : "0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055", - "nonce" : "0x00", - "storage" : { - "0x00" : "0x01" - } - }, - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640017", - "code" : "0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3", - "nonce" : "0x00", - "storage" : { - } - }, - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x4563918244f4c41f", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de0b6b3a761b541", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - } - }, - "pre" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055", - "nonce" : "0x00", - "storage" : { - } - }, - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - } - }, - "log3_MaxTopic_d0g0v0_EIP158" : { - "_info" : { - "comment" : "", - "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", - "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stLogTests/log3_MaxTopic_d0g0v0Filler.json", - "sourceHash" : "5888de2660af6f5e41f6388e846b0334e17727294bd89aac46336b7afd73836e" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x0f4240", - "gasUsed" : "0xc41f", - "hash" : "0x54794f8aa0b45e86dd40b7525c38edfc94dbb0bb9babe271d0aadd558290e9e2", - "mixHash" : "0x5f44194143747e2c6d97b4f77c482109221d5e1e41833115ce524a91acc497dd", - "nonce" : "0xca33fea77872f27c", - "number" : "0x01", - "parentHash" : "0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403", - "receiptTrie" : "0xcb832bb91f2515c21c7825e0a77b1009d83e6284d1e99e009a61e349abedbd0a", - "stateRoot" : "0xaa9e5fe68e309fd69a6e9687ddd49e6f07ecd344dc2d574954e87c7a540c0c1c", - "timestamp" : "0x03e8", - "transactionsTrie" : "0x466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90262f901f7a0739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0aa9e5fe68e309fd69a6e9687ddd49e6f07ecd344dc2d574954e87c7a540c0c1ca0466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61a0cb832bb91f2515c21c7825e0a77b1009d83e6284d1e99e009a61e349abedbd0ab90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000008302000001830f424082c41f8203e880a05f44194143747e2c6d97b4f77c482109221d5e1e41833115ce524a91acc497dd88ca33fea77872f27cf865f86380018303345094095e7baea6a6c7c4c2dfeb977efac326af552d87830186a0801ba09bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926a0177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1c0", - "transactions" : [ - { - "data" : "", - "gasLimit" : "0x033450", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0x9bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926", - "s" : "0x177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1", - "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", - "v" : "0x1b", - "value" : "0x0186a0" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x0f4240", - "gasUsed" : "0x00", - "hash" : "0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0xc2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080830f4240808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0x54794f8aa0b45e86dd40b7525c38edfc94dbb0bb9babe271d0aadd558290e9e2", - "network" : "EIP158", - "postState" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x0de0b6b3a7658689", - "code" : "0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055", - "nonce" : "0x00", - "storage" : { - "0x00" : "0x01" - } - }, - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640017", - "code" : "0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3", - "nonce" : "0x00", - "storage" : { - } - }, - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x4563918244f4c41f", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de0b6b3a761b541", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - } - }, - "pre" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055", - "nonce" : "0x00", - "storage" : { - } - }, - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - } - }, - "log3_MaxTopic_d0g0v0_Frontier" : { - "_info" : { - "comment" : "", - "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", - "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stLogTests/log3_MaxTopic_d0g0v0Filler.json", - "sourceHash" : "5888de2660af6f5e41f6388e846b0334e17727294bd89aac46336b7afd73836e" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x0f4240", - "gasUsed" : "0xc18b", - "hash" : "0x01a1b78976b17b1b15dcf5115caabd917260f648137f11fc032082441f4b9d6e", - "mixHash" : "0x8af0290cbf675befa2c0b57e24baadcf2286f0da98fd04a7ec179638c56ad261", - "nonce" : "0x7a34bd4217e6481a", - "number" : "0x01", - "parentHash" : "0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403", - "receiptTrie" : "0x844cc41b7d07def0bd20dd301798754b4e469f8f232f1f5092b96f7063a02a30", - "stateRoot" : "0xe0cae5148af74d0eb6a944b13ce34f96b6a60be802c1d722924548f91843b683", - "timestamp" : "0x03e8", - "transactionsTrie" : "0x466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90262f901f7a0739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0e0cae5148af74d0eb6a944b13ce34f96b6a60be802c1d722924548f91843b683a0466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61a0844cc41b7d07def0bd20dd301798754b4e469f8f232f1f5092b96f7063a02a30b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000008302000001830f424082c18b8203e880a08af0290cbf675befa2c0b57e24baadcf2286f0da98fd04a7ec179638c56ad261887a34bd4217e6481af865f86380018303345094095e7baea6a6c7c4c2dfeb977efac326af552d87830186a0801ba09bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926a0177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1c0", - "transactions" : [ - { - "data" : "", - "gasLimit" : "0x033450", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0x9bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926", - "s" : "0x177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1", - "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", - "v" : "0x1b", - "value" : "0x0186a0" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x0f4240", - "gasUsed" : "0x00", - "hash" : "0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0xc2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080830f4240808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0x01a1b78976b17b1b15dcf5115caabd917260f648137f11fc032082441f4b9d6e", - "network" : "Frontier", - "postState" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x0de0b6b3a7658689", - "code" : "0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055", - "nonce" : "0x00", - "storage" : { - "0x00" : "0x01" - } - }, - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640017", - "code" : "0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3", - "nonce" : "0x00", - "storage" : { - } - }, - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x4563918244f4c18b", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de0b6b3a761b7d5", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - } - }, - "pre" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055", - "nonce" : "0x00", - "storage" : { - } - }, - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - } - }, - "log3_MaxTopic_d0g0v0_Homestead" : { - "_info" : { - "comment" : "", - "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", - "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", - "source" : "src/BlockchainTestsFiller/GeneralStateTests/stLogTests/log3_MaxTopic_d0g0v0Filler.json", - "sourceHash" : "5888de2660af6f5e41f6388e846b0334e17727294bd89aac46336b7afd73836e" - }, - "blocks" : [ - { - "blockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "", - "gasLimit" : "0x0f4240", - "gasUsed" : "0xc18b", - "hash" : "0x1fc7dbcd9a46eae708c088001b2ad19930a8179e533107c5ee4345b721613748", - "mixHash" : "0x4111fd7141bb87fa29bd567970a71b07b20f2440beb06f6e75a19f7b7ed3b250", - "nonce" : "0xad9198e459b86782", - "number" : "0x01", - "parentHash" : "0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403", - "receiptTrie" : "0x844cc41b7d07def0bd20dd301798754b4e469f8f232f1f5092b96f7063a02a30", - "stateRoot" : "0xe0cae5148af74d0eb6a944b13ce34f96b6a60be802c1d722924548f91843b683", - "timestamp" : "0x03e8", - "transactionsTrie" : "0x466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "rlp" : "0xf90262f901f7a0739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0e0cae5148af74d0eb6a944b13ce34f96b6a60be802c1d722924548f91843b683a0466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61a0844cc41b7d07def0bd20dd301798754b4e469f8f232f1f5092b96f7063a02a30b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000008302000001830f424082c18b8203e880a04111fd7141bb87fa29bd567970a71b07b20f2440beb06f6e75a19f7b7ed3b25088ad9198e459b86782f865f86380018303345094095e7baea6a6c7c4c2dfeb977efac326af552d87830186a0801ba09bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926a0177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1c0", - "transactions" : [ - { - "data" : "", - "gasLimit" : "0x033450", - "gasPrice" : "0x01", - "nonce" : "0x00", - "r" : "0x9bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926", - "s" : "0x177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1", - "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", - "v" : "0x1b", - "value" : "0x0186a0" - } - ], - "uncleHeaders" : [ - ] - } - ], - "genesisBlockHeader" : { - "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "difficulty" : "0x020000", - "extraData" : "0x42", - "gasLimit" : "0x0f4240", - "gasUsed" : "0x00", - "hash" : "0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403", - "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "nonce" : "0x0102030405060708", - "number" : "0x00", - "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", - "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "stateRoot" : "0xc2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60", - "timestamp" : "0x03b6", - "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" - }, - "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080830f4240808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", - "lastblockhash" : "0x1fc7dbcd9a46eae708c088001b2ad19930a8179e533107c5ee4345b721613748", - "network" : "Homestead", - "postState" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x0de0b6b3a7658689", - "code" : "0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055", - "nonce" : "0x00", - "storage" : { - "0x00" : "0x01" - } - }, - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640017", - "code" : "0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3", - "nonce" : "0x00", - "storage" : { - } - }, - "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { - "balance" : "0x4563918244f4c18b", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de0b6b3a761b7d5", - "code" : "", - "nonce" : "0x01", - "storage" : { - } - } - }, - "pre" : { - "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055", - "nonce" : "0x00", - "storage" : { - } - }, - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3", - "nonce" : "0x00", - "storage" : { - } - }, - "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "", - "nonce" : "0x00", - "storage" : { - } - } - } - } -} \ No newline at end of file diff --git a/tests/interactive/log3_MaxTopic_d0g0v0.json.parse-expected b/tests/interactive/log3_MaxTopic_d0g0v0.json.parse-expected deleted file mode 100644 index b69cc9d865..0000000000 --- a/tests/interactive/log3_MaxTopic_d0g0v0.json.parse-expected +++ /dev/null @@ -1 +0,0 @@ -LblinitGeneratedTopCell{}(\left-assoc{}(Lbl'Unds'Map'Unds'{}(Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$PGM")), inj{SortJSON{}, SortKItem{}}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("log3_MaxTopic_d0g0v0_Byzantium")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("_info")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("comment")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filledwith")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("cpp-1.3.0+commit.6e0ce939.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lllcversion")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("source")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("src/BlockchainTestsFiller/GeneralStateTests/stLogTests/log3_MaxTopic_d0g0v0Filler.json"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sourceHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("5888de2660af6f5e41f6388e846b0334e17727294bd89aac46336b7afd73836e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blocks")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc41f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa97a5390495b6e1382be3baf36b4f1e200f862c0804411ef4c67ba64ef7d2272"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x32fbc3b912214560992d343044f4dc996b9c33e32a942029328a23ccc41a7495"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x75c57adb6cc00cb9"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x5febf5fcc40f54680c21e1afecd13e726b8e5784d6e10d5b08225ef6579b6f70"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4b910d6040a2a2f1b7a165747c448c6585a54c2261db1c6dfab63b28a2a614e4"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("rlp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf90262f901f7a0739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa04b910d6040a2a2f1b7a165747c448c6585a54c2261db1c6dfab63b28a2a614e4a0466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61a05febf5fcc40f54680c21e1afecd13e726b8e5784d6e10d5b08225ef6579b6f70b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000008302000001830f424082c41f8203e880a032fbc3b912214560992d343044f4dc996b9c33e32a942029328a23ccc41a74958875c57adb6cc00cb9f865f86380018303345094095e7baea6a6c7c4c2dfeb977efac326af552d87830186a0801ba09bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926a0177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactions")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x033450"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasPrice")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("r")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("s")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("to")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("v")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0186a0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHeaders")), LblJSONList{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisBlockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0102030405060708"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03b6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisRLP")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080830f4240808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lastblockhash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa97a5390495b6e1382be3baf36b4f1e200f862c0804411ef4c67ba64ef7d2272"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("network")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Byzantium"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("postState")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7658689"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x00")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640017"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x29a2241af62cc41f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a761b541"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("pre")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("log3_MaxTopic_d0g0v0_EIP150")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("_info")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("comment")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filledwith")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("cpp-1.3.0+commit.6e0ce939.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lllcversion")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("source")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("src/BlockchainTestsFiller/GeneralStateTests/stLogTests/log3_MaxTopic_d0g0v0Filler.json"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sourceHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("5888de2660af6f5e41f6388e846b0334e17727294bd89aac46336b7afd73836e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blocks")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc41f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xffad7774f4bcbcbebca98ac2269d07e814661db5b7e2c730e3cf3c92f63678e1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x580bac5520779d5c51910dc6684c9bea21d0ffeb6933a65b9e5833d5c4a6fa12"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x88873ce85cf33435"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xcb832bb91f2515c21c7825e0a77b1009d83e6284d1e99e009a61e349abedbd0a"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xaa9e5fe68e309fd69a6e9687ddd49e6f07ecd344dc2d574954e87c7a540c0c1c"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("rlp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf90262f901f7a0739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0aa9e5fe68e309fd69a6e9687ddd49e6f07ecd344dc2d574954e87c7a540c0c1ca0466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61a0cb832bb91f2515c21c7825e0a77b1009d83e6284d1e99e009a61e349abedbd0ab90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000008302000001830f424082c41f8203e880a0580bac5520779d5c51910dc6684c9bea21d0ffeb6933a65b9e5833d5c4a6fa128888873ce85cf33435f865f86380018303345094095e7baea6a6c7c4c2dfeb977efac326af552d87830186a0801ba09bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926a0177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactions")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x033450"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasPrice")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("r")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("s")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("to")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("v")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0186a0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHeaders")), LblJSONList{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisBlockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0102030405060708"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03b6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisRLP")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080830f4240808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lastblockhash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xffad7774f4bcbcbebca98ac2269d07e814661db5b7e2c730e3cf3c92f63678e1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("network")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("EIP150"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("postState")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7658689"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x00")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640017"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4563918244f4c41f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a761b541"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("pre")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("log3_MaxTopic_d0g0v0_EIP158")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("_info")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("comment")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filledwith")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("cpp-1.3.0+commit.6e0ce939.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lllcversion")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("source")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("src/BlockchainTestsFiller/GeneralStateTests/stLogTests/log3_MaxTopic_d0g0v0Filler.json"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sourceHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("5888de2660af6f5e41f6388e846b0334e17727294bd89aac46336b7afd73836e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blocks")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc41f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x54794f8aa0b45e86dd40b7525c38edfc94dbb0bb9babe271d0aadd558290e9e2"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x5f44194143747e2c6d97b4f77c482109221d5e1e41833115ce524a91acc497dd"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xca33fea77872f27c"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xcb832bb91f2515c21c7825e0a77b1009d83e6284d1e99e009a61e349abedbd0a"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xaa9e5fe68e309fd69a6e9687ddd49e6f07ecd344dc2d574954e87c7a540c0c1c"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("rlp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf90262f901f7a0739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0aa9e5fe68e309fd69a6e9687ddd49e6f07ecd344dc2d574954e87c7a540c0c1ca0466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61a0cb832bb91f2515c21c7825e0a77b1009d83e6284d1e99e009a61e349abedbd0ab90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000008302000001830f424082c41f8203e880a05f44194143747e2c6d97b4f77c482109221d5e1e41833115ce524a91acc497dd88ca33fea77872f27cf865f86380018303345094095e7baea6a6c7c4c2dfeb977efac326af552d87830186a0801ba09bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926a0177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactions")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x033450"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasPrice")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("r")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("s")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("to")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("v")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0186a0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHeaders")), LblJSONList{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisBlockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0102030405060708"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03b6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisRLP")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080830f4240808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lastblockhash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x54794f8aa0b45e86dd40b7525c38edfc94dbb0bb9babe271d0aadd558290e9e2"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("network")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("EIP158"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("postState")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7658689"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x00")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640017"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4563918244f4c41f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a761b541"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("pre")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("log3_MaxTopic_d0g0v0_Frontier")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("_info")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("comment")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filledwith")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("cpp-1.3.0+commit.6e0ce939.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lllcversion")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("source")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("src/BlockchainTestsFiller/GeneralStateTests/stLogTests/log3_MaxTopic_d0g0v0Filler.json"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sourceHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("5888de2660af6f5e41f6388e846b0334e17727294bd89aac46336b7afd73836e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blocks")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc18b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01a1b78976b17b1b15dcf5115caabd917260f648137f11fc032082441f4b9d6e"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x8af0290cbf675befa2c0b57e24baadcf2286f0da98fd04a7ec179638c56ad261"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7a34bd4217e6481a"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x844cc41b7d07def0bd20dd301798754b4e469f8f232f1f5092b96f7063a02a30"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xe0cae5148af74d0eb6a944b13ce34f96b6a60be802c1d722924548f91843b683"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("rlp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf90262f901f7a0739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0e0cae5148af74d0eb6a944b13ce34f96b6a60be802c1d722924548f91843b683a0466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61a0844cc41b7d07def0bd20dd301798754b4e469f8f232f1f5092b96f7063a02a30b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000008302000001830f424082c18b8203e880a08af0290cbf675befa2c0b57e24baadcf2286f0da98fd04a7ec179638c56ad261887a34bd4217e6481af865f86380018303345094095e7baea6a6c7c4c2dfeb977efac326af552d87830186a0801ba09bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926a0177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactions")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x033450"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasPrice")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("r")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("s")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("to")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("v")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0186a0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHeaders")), LblJSONList{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisBlockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0102030405060708"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03b6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisRLP")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080830f4240808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lastblockhash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01a1b78976b17b1b15dcf5115caabd917260f648137f11fc032082441f4b9d6e"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("network")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Frontier"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("postState")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7658689"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x00")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640017"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4563918244f4c18b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a761b7d5"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("pre")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("log3_MaxTopic_d0g0v0_Homestead")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("_info")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("comment")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filledwith")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("cpp-1.3.0+commit.6e0ce939.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lllcversion")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("source")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("src/BlockchainTestsFiller/GeneralStateTests/stLogTests/log3_MaxTopic_d0g0v0Filler.json"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sourceHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("5888de2660af6f5e41f6388e846b0334e17727294bd89aac46336b7afd73836e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blocks")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("blockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000800000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc18b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1fc7dbcd9a46eae708c088001b2ad19930a8179e533107c5ee4345b721613748"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4111fd7141bb87fa29bd567970a71b07b20f2440beb06f6e75a19f7b7ed3b250"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xad9198e459b86782"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x844cc41b7d07def0bd20dd301798754b4e469f8f232f1f5092b96f7063a02a30"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xe0cae5148af74d0eb6a944b13ce34f96b6a60be802c1d722924548f91843b683"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("rlp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf90262f901f7a0739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0e0cae5148af74d0eb6a944b13ce34f96b6a60be802c1d722924548f91843b683a0466f1520dd2fb37a6abe5419439e4bc5fd5146708535d1984cde813519a28e61a0844cc41b7d07def0bd20dd301798754b4e469f8f232f1f5092b96f7063a02a30b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000008000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000008302000001830f424082c18b8203e880a04111fd7141bb87fa29bd567970a71b07b20f2440beb06f6e75a19f7b7ed3b25088ad9198e459b86782f865f86380018303345094095e7baea6a6c7c4c2dfeb977efac326af552d87830186a0801ba09bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926a0177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactions")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x033450"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasPrice")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("r")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x9bae3efe7d9d16200582021c8f7c93c143c3fb1dd6be8a83213f3a5f1ad03926"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("s")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x177d82a90f883a19de8c6d62ce79c753ae4ea076de047ca19a017879a1ce8bc1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("to")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("v")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0186a0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHeaders")), LblJSONList{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisBlockHeader")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("bloom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("coinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("difficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("extraData")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0f4240"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasUsed")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x739bdad18fdb2c6ce2ccb72b2e82b72fb426bf5e5336530b56010081594bc403"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("mixHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0102030405060708"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("number")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("parentHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000000000000000000000000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("receiptTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("stateRoot")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xc2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("timestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03b6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transactionsTrie")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("uncleHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("genesisRLP")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2441751ffff1a2a518d82f53bb71288841beb89898fbe9ab74b5f12a5810b60a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000080830f4240808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lastblockhash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1fc7dbcd9a46eae708c088001b2ad19930a8179e533107c5ee4345b721613748"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("network")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Homestead"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("postState")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7658689"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x00")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640017"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4563918244f4c18b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a761b7d5"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("pre")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x095e7baea6a6c7c4c2dfeb977efac326af552d87")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66103e8f1600055"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60206000a3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0de0b6b3a7640000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}(""))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))))), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$SCHEDULE")), inj{SortSchedule{}, SortKItem{}}(LblSHANGHAI'Unds'EVM{}())), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$MODE")), inj{SortMode{}, SortKItem{}}(LblNORMAL{}())), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$CHAINID")), inj{SortInt{}, SortKItem{}}(\dv{SortInt{}}("1"))), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$USEGAS")), inj{SortBool{}, SortKItem{}}(\dv{SortBool{}}("true")))))) \ No newline at end of file diff --git a/tests/interactive/search/branching-invalid.evm b/tests/interactive/search/branching-invalid.evm deleted file mode 100644 index 0fb07f4af4..0000000000 --- a/tests/interactive/search/branching-invalid.evm +++ /dev/null @@ -1,13 +0,0 @@ -load "exec" : { "gas" : 10000 - ,"code" : PUSH(1, 3) ; PUSH(1, 4) ; ADD - ; PUSH(1, 8) ; EQ - ; PUSH(1, 12) ; JUMPI // jumpi("end") - ; INVALID - ; JUMPDEST // jumpdest("end") - ; STOP - ; .OpCodes - } - -start - -.EthereumSimulation diff --git a/tests/interactive/search/branching-invalid.evm.search-expected b/tests/interactive/search/branching-invalid.evm.search-expected deleted file mode 100644 index 17a1d4510e..0000000000 --- a/tests/interactive/search/branching-invalid.evm.search-expected +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/tests/interactive/search/branching-no-invalid.evm b/tests/interactive/search/branching-no-invalid.evm deleted file mode 100644 index 933e777628..0000000000 --- a/tests/interactive/search/branching-no-invalid.evm +++ /dev/null @@ -1,13 +0,0 @@ -load "exec" : { "gas" : 10000 - ,"code" : PUSH(1, 3) ; PUSH(1, 4) ; ADD - ; PUSH(1, 7) ; EQ - ; PUSH(1, 13) ; JUMPI // jumpi("end") - ; INVALID - ; JUMPDEST // jumpdest("end") - ; STOP - ; .OpCodes - } - -start - -.EthereumSimulation diff --git a/tests/interactive/search/branching-no-invalid.evm.search-expected b/tests/interactive/search/branching-no-invalid.evm.search-expected deleted file mode 100644 index 88b8f237d0..0000000000 --- a/tests/interactive/search/branching-no-invalid.evm.search-expected +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/tests/interactive/search/straight-line-no-invalid.evm b/tests/interactive/search/straight-line-no-invalid.evm deleted file mode 100644 index aaacee0dd0..0000000000 --- a/tests/interactive/search/straight-line-no-invalid.evm +++ /dev/null @@ -1,7 +0,0 @@ -load "exec" : { "gas" : 10000 - ,"code" : PUSH(32, 3) ; PUSH(32, 4) ; ADD ; .OpCodes - } - -start - -.EthereumSimulation diff --git a/tests/interactive/search/straight-line-no-invalid.evm.search-expected b/tests/interactive/search/straight-line-no-invalid.evm.search-expected deleted file mode 100644 index 88b8f237d0..0000000000 --- a/tests/interactive/search/straight-line-no-invalid.evm.search-expected +++ /dev/null @@ -1 +0,0 @@ -#Bottom diff --git a/tests/interactive/search/straight-line.evm b/tests/interactive/search/straight-line.evm deleted file mode 100644 index cf54bba2f3..0000000000 --- a/tests/interactive/search/straight-line.evm +++ /dev/null @@ -1,7 +0,0 @@ -load "exec" : { "gas" : 10000 - ,"code" : PUSH(32, 3) ; PUSH(32, 4) ; ADD ; INVALID ; .OpCodes - } - -start - -.EthereumSimulation diff --git a/tests/interactive/search/straight-line.evm.search-expected b/tests/interactive/search/straight-line.evm.search-expected deleted file mode 100644 index 17a1d4510e..0000000000 --- a/tests/interactive/search/straight-line.evm.search-expected +++ /dev/null @@ -1 +0,0 @@ -#Top diff --git a/tests/interactive/sumTo10.evm b/tests/interactive/sumTo10.evm deleted file mode 100644 index 0059cf6e18..0000000000 --- a/tests/interactive/sumTo10.evm +++ /dev/null @@ -1,35 +0,0 @@ -mkAcct 7 - -load "account" : { 7 : { "balance" : 1000000000 - , "nonce" : 1 - , "code" : .Bytes - , "storage" : .Map - } - } - -load "exec" : { "address" : 7 - , "gas" : 100000 - , "code" : PUSH(32, 0) ; PUSH(32, 0) ; MSTORE - ; PUSH(32, 10) ; PUSH(32, 32) ; MSTORE - ; JUMPDEST - ; PUSH(32, 32) ; MLOAD ; ISZERO ; PUSH(32, 411) ; JUMPI - ; PUSH(32, 32) ; MLOAD ; DUP(1) ; PUSH(32, 0) ; MLOAD ; ADD - ; PUSH(32, 0) ; MSTORE ; PUSH(32, 1) ; SWAP(1) ; SUB - ; PUSH(32, 32) ; MSTORE - ; PUSH(32, 134) ; JUMP - ; JUMPDEST - ; PUSH(32, 0) ; MLOAD ; PUSH(32, 0) ; SSTORE - ; .OpCodes - } - -start - -check "account" : { 7 : { "storage" : { "0x00" : "0x37" } } } - -failure "Interactive sumTo10 test" - -success - -clear - -.EthereumSimulation diff --git a/tests/interactive/sumTo10.evm.parse-expected b/tests/interactive/sumTo10.evm.parse-expected deleted file mode 100644 index 99985bf926..0000000000 --- a/tests/interactive/sumTo10.evm.parse-expected +++ /dev/null @@ -1 +0,0 @@ -Lbl'UndsUndsUnds'ETHEREUM-SIMULATION'Unds'EthereumSimulation'Unds'EthereumCommand'Unds'EthereumSimulation{}(LblmkAcct'UndsUnds'STATE-UTILS'Unds'EthereumCommand'Unds'Int{}(\dv{SortInt{}}("7")),Lbl'UndsUndsUnds'ETHEREUM-SIMULATION'Unds'EthereumSimulation'Unds'EthereumCommand'Unds'EthereumSimulation{}(Lblload'UndsUnds'STATE-UTILS'Unds'EthereumCommand'Unds'JSON{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("account")),LblJSONObject{}(LblJSONs{}(LblJSONEntry{}(inj{SortInt{}, SortJSONKey{}}(\dv{SortInt{}}("7")),LblJSONObject{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")),inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("1000000000"))),LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")),inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("1"))),LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")),inj{SortBytes{}, SortJSON{}}(Lbl'Stop'Bytes'Unds'BYTES-HOOKED'Unds'Bytes{}())),LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")),inj{SortMap{}, SortJSON{}}(Lbl'Stop'Map{}())),Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))))),Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))),Lbl'UndsUndsUnds'ETHEREUM-SIMULATION'Unds'EthereumSimulation'Unds'EthereumCommand'Unds'EthereumSimulation{}(Lblload'UndsUnds'STATE-UTILS'Unds'EthereumCommand'Unds'JSON{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("exec")),LblJSONObject{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("address")),inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("7"))),LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")),inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("100000"))),LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")),inj{SortOpCodes{}, SortJSON{}}(Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("0")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("0")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortBinStackOp{}, SortOpCode{}}(LblMSTORE'Unds'EVM'Unds'BinStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("10")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("32")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortBinStackOp{}, SortOpCode{}}(LblMSTORE'Unds'EVM'Unds'BinStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortNullStackOp{}, SortOpCode{}}(LblJUMPDEST'Unds'EVM'Unds'NullStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("32")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortUnStackOp{}, SortOpCode{}}(LblMLOAD'Unds'EVM'Unds'UnStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortUnStackOp{}, SortOpCode{}}(LblISZERO'Unds'EVM'Unds'UnStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("411")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortBinStackOp{}, SortOpCode{}}(LblJUMPI'Unds'EVM'Unds'BinStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("32")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortUnStackOp{}, SortOpCode{}}(LblMLOAD'Unds'EVM'Unds'UnStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortStackOp{}, SortOpCode{}}(LblDUP'LParUndsRParUnds'EVM'Unds'StackOp'Unds'Int{}(\dv{SortInt{}}("1"))),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("0")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortUnStackOp{}, SortOpCode{}}(LblMLOAD'Unds'EVM'Unds'UnStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortBinStackOp{}, SortOpCode{}}(LblADD'Unds'EVM'Unds'BinStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("0")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortBinStackOp{}, SortOpCode{}}(LblMSTORE'Unds'EVM'Unds'BinStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("1")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortStackOp{}, SortOpCode{}}(LblSWAP'LParUndsRParUnds'EVM'Unds'StackOp'Unds'Int{}(\dv{SortInt{}}("1"))),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortBinStackOp{}, SortOpCode{}}(LblSUB'Unds'EVM'Unds'BinStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("32")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortBinStackOp{}, SortOpCode{}}(LblMSTORE'Unds'EVM'Unds'BinStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("134")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortUnStackOp{}, SortOpCode{}}(LblJUMP'Unds'EVM'Unds'UnStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortNullStackOp{}, SortOpCode{}}(LblJUMPDEST'Unds'EVM'Unds'NullStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("0")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortUnStackOp{}, SortOpCode{}}(LblMLOAD'Unds'EVM'Unds'UnStackOp{}()),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(LblPUSH'LParUndsCommUndsRParUnds'EVM-ASSEMBLY'Unds'OpCode'Unds'Int'Unds'Int{}(\dv{SortInt{}}("32"),\dv{SortInt{}}("0")),Lbl'UndsSClnUndsUnds'EVM-ASSEMBLY'Unds'OpCodes'Unds'OpCode'Unds'OpCodes{}(inj{SortBinStackOp{}, SortOpCode{}}(LblSSTORE'Unds'EVM'Unds'BinStackOp{}()),Lbl'Stop'OpCodes'Unds'EVM-ASSEMBLY'Unds'OpCodes{}())))))))))))))))))))))))))))))))))),Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))))),Lbl'UndsUndsUnds'ETHEREUM-SIMULATION'Unds'EthereumSimulation'Unds'EthereumCommand'Unds'EthereumSimulation{}(Lblstart'Unds'ETHEREUM-SIMULATION'Unds'EthereumCommand{}(),Lbl'UndsUndsUnds'ETHEREUM-SIMULATION'Unds'EthereumSimulation'Unds'EthereumCommand'Unds'EthereumSimulation{}(Lblcheck'UndsUnds'ETHEREUM-SIMULATION'Unds'EthereumCommand'Unds'JSON{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("account")),LblJSONObject{}(LblJSONs{}(LblJSONEntry{}(inj{SortInt{}, SortJSONKey{}}(\dv{SortInt{}}("7")),LblJSONObject{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")),LblJSONObject{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x00")),inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x37"))),Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))),Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))),Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))),Lbl'UndsUndsUnds'ETHEREUM-SIMULATION'Unds'EthereumSimulation'Unds'EthereumCommand'Unds'EthereumSimulation{}(Lblfailure'UndsUnds'ETHEREUM-SIMULATION'Unds'EthereumCommand'Unds'String{}(\dv{SortString{}}("Interactive sumTo10 test")),Lbl'UndsUndsUnds'ETHEREUM-SIMULATION'Unds'EthereumSimulation'Unds'EthereumCommand'Unds'EthereumSimulation{}(Lblsuccess'Unds'ETHEREUM-SIMULATION'Unds'EthereumCommand{}(),Lbl'UndsUndsUnds'ETHEREUM-SIMULATION'Unds'EthereumSimulation'Unds'EthereumCommand'Unds'EthereumSimulation{}(Lblclear'Unds'STATE-UTILS'Unds'EthereumCommand{}(),Lbl'Stop'EthereumSimulation'Unds'ETHEREUM-SIMULATION'Unds'EthereumSimulation{}())))))))) \ No newline at end of file diff --git a/tests/interactive/vmLogTest/log3.gst-to-kore.expected b/tests/interactive/vmLogTest/log3.gst-to-kore.expected deleted file mode 100644 index a09d74826a..0000000000 --- a/tests/interactive/vmLogTest/log3.gst-to-kore.expected +++ /dev/null @@ -1 +0,0 @@ -LblinitGeneratedTopCell{}(\left-assoc{}(Lbl'Unds'Map'Unds'{}(Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$PGM")), inj{SortJSON{}, SortKItem{}}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("log3")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("_info")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("comment")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Ori Pomerantz qbzzt1@gmail.com"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filling-rpc-server")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("evm version 1.11.4-unstable-e14043db-20230308"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("filling-tool-version")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("retesteth-0.3.0-shanghai+commit.fd2c0a83.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("generatedTestHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("7627e0b6c3e236ab9c742c6c2478873cabc5da21b8f0963b2eceaa88f42fd467"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("labels")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("emptyMem"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("1")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("memStartTooHigh"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("2")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("memSizeTooHigh"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("3")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("memSizeZero"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("4")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("nonEmptyMem"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("5")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("log_0_1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("6")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("log_31_1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("7")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("caller"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("8")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("maxTopic"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("9")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("pc"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("lllcversion")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.5.14-develop.2022.7.30+commit.a096d7a9.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("solidity")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("Version: 0.8.17+commit.8df45f5f.Linux.g++"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("source")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("src/GeneralStateTestsFiller/VMTests/vmLogTest/log3Filler.yml"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sourceHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("a9f85921eddbb5cb40c25866a6ddbeba848b97e212494ba81316c45a78e052a9"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("env")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("currentBaseFee")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0a"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("currentCoinbase")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("currentDifficulty")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("currentGasLimit")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x05f5e100"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("currentNumber")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("currentRandom")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000000000000000000000000020000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("currentTimestamp")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x03e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("previousHash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("post")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("Berlin")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x42396b9989af3c53fbcb0db0534af563a7f1cdcf02985a801ec5da5bd98d7550"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x63b3449343f05e4ba767546497869b85a2a473d42121a021e7590d7017754ff3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000001ba0e8ff56322287185f6afd3422a825b47bf5c1a4ccf0dc0389cdc03f7c1c32b7eaa0776b02f9f5773238d3ff36b74a123f409cd6420908d7855bbe4c8ff63e00d698"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf9a2c0630236a840258d2a82ca1f81bd403e27a77bc1bab917763a13464831cd"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x63b3449343f05e4ba767546497869b85a2a473d42121a021e7590d7017754ff3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000031ba0f06eb219c5dba98711a9a2678339f64d172bfac289a5c43a0018d3917be8dc2aa0147bd7a6ee30217e63cbddc28b0e72f115da754d8916b87992aa27ed00eb105e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa4461522a233f9d30e15bec3e894263cd79ad677cce29d0a775992c9db929807"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("4"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x962ab2b5876962ab2c27d260485a0a1ab1a930ea9143d99f3ba2b4962b6b39e0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000041ba0c148a101aa54703ff0e949441bdba90b1972a16c338f7f9a24b07f0313cd49d6a028cb82229b8a57e2048761d6fa5060c5b459f000d4e218de1372c1df9cfa171e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7f8a2902be970ec7b730f1e07e5aee950ef5572055a0b3d3256cb330ddd832f4"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("5"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xd98655f5c4759c56c8ba01eb9c3fcde34b26c4445714859bbd06d18b0c398322"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000051ca09a1ce3fdc8469be9bbe660a07c169cf5b6b70fe408cc1395057bbd4cdc2c8557a0560e8c0503c4364efd017933749f22e1d9ad4eff4580d5463df54b9bff8dca31"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7f8a2902be970ec7b730f1e07e5aee950ef5572055a0b3d3256cb330ddd832f4"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x442c5686dfaa9f7734ed17a45d5f91a8057b8ea587a342b8f8eba3d267874edb"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000061ca04f7114759d69db050a87677a2dff3d6f9399f0b66da593b2cc50748708377f6fa042f32766ce38ec3cee0d2c2dbc4d14b9cbf94e4af75b0584a04c933457bb83bb"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60d87b4e4e4aa494d3c9f34f2c8e4740afa2fac829e11649fdfa0db6a4a83d91"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("7"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7892c989716799974e37f634fd1e5415875819865e33cb54062aab2f75cd2294"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000071ba0e77cc0b2a4af0e43bc5732d6747afb3ddcf781f7277650aeef15b9caba68c91aa04af80af420b77c3f4ad457f1c6535be5d46993e2c8987250d28d088b3a11bb4a"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa16961c8dafa0bf94c37ec403ce587c7ecda8423c54ff93d1ae96757e9c6359a"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa20826cf41f70c356832c534dd73f631c498760da2a0584e2844480b70b77e6d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf884800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000081ca057f87767c304f58d8c351529457f9fbe53d04ba7f9f0ae7f2bac7a2d6dc59bc09fd8de811557a1287c01a1e09edeb750adba79cef13ebeb951d030ff29e63f39"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x90e5972cf569d04de4fb4ad93c6c4b7e3048cf6c3170c810d9f5f3313d7408d5"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("9"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1b43586e1432a3ed43253dd44fd5e8fb20d65a9aa720b17f41da928266fd155e"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000091ba09cffdf14ebc27c6c36a8cc9e679e32251165b52fb39e7ccc52cbc42f7157c301a032f0bebe1ae01ef86e26c0194bc26e9ed9e6bb7dad277927a92def3d0badbe74"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x33d95667ec3167b5617a3d7e2b279b30aa9ce4f28c88ed7a23f74744c01bbc65"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000011ba02c5e81a024dd0f6fb773c8787fa46ab5eb55cb73df83562e6ddbe9106a3df7f6a029437b9a23e45bbfce086f2ddaa98b1e9e6914d7e58e2c5a128310042b332f89"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x33d95667ec3167b5617a3d7e2b279b30aa9ce4f28c88ed7a23f74744c01bbc65"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("2"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000021ba0fc37ad4eb0633eb18f2b7867bacbe994a2ffcbb04a71e394e6e76041f6ce216fa03b1b415a5c386d8de9e16be9fdc188234b80a0dec99922d03c240f2e463053e3"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("Istanbul")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6c54e333a6206a62906822ea0e5ac6917a18b4a06c5deb81f155faea49860e13"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x63b3449343f05e4ba767546497869b85a2a473d42121a021e7590d7017754ff3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000001ba0e8ff56322287185f6afd3422a825b47bf5c1a4ccf0dc0389cdc03f7c1c32b7eaa0776b02f9f5773238d3ff36b74a123f409cd6420908d7855bbe4c8ff63e00d698"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xfaedc25f6076674bdff3aeae4d470af97ebc3b0280786c39036a50cd78d9921a"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x63b3449343f05e4ba767546497869b85a2a473d42121a021e7590d7017754ff3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000031ba0f06eb219c5dba98711a9a2678339f64d172bfac289a5c43a0018d3917be8dc2aa0147bd7a6ee30217e63cbddc28b0e72f115da754d8916b87992aa27ed00eb105e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0af3c8f6bcc58ef358f4fe91b39b435a9d1a9c319a0f3c569d7f842c2a0a9c22"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("4"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x962ab2b5876962ab2c27d260485a0a1ab1a930ea9143d99f3ba2b4962b6b39e0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000041ba0c148a101aa54703ff0e949441bdba90b1972a16c338f7f9a24b07f0313cd49d6a028cb82229b8a57e2048761d6fa5060c5b459f000d4e218de1372c1df9cfa171e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x29c6bd6b3334d3d307e8081260607826a0e43b1c4efb4ae77200854634e6946e"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("5"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xd98655f5c4759c56c8ba01eb9c3fcde34b26c4445714859bbd06d18b0c398322"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000051ca09a1ce3fdc8469be9bbe660a07c169cf5b6b70fe408cc1395057bbd4cdc2c8557a0560e8c0503c4364efd017933749f22e1d9ad4eff4580d5463df54b9bff8dca31"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x29c6bd6b3334d3d307e8081260607826a0e43b1c4efb4ae77200854634e6946e"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x442c5686dfaa9f7734ed17a45d5f91a8057b8ea587a342b8f8eba3d267874edb"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000061ca04f7114759d69db050a87677a2dff3d6f9399f0b66da593b2cc50748708377f6fa042f32766ce38ec3cee0d2c2dbc4d14b9cbf94e4af75b0584a04c933457bb83bb"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x5aaca2155df07ac5d57bf7586e93ede59303956d47901c2c9440f0b468e32cbc"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("7"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7892c989716799974e37f634fd1e5415875819865e33cb54062aab2f75cd2294"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000071ba0e77cc0b2a4af0e43bc5732d6747afb3ddcf781f7277650aeef15b9caba68c91aa04af80af420b77c3f4ad457f1c6535be5d46993e2c8987250d28d088b3a11bb4a"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x93b9464dd6906ea7921615487695c01a447956387b3eaaa1be102e407546a5e8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa20826cf41f70c356832c534dd73f631c498760da2a0584e2844480b70b77e6d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf884800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000081ca057f87767c304f58d8c351529457f9fbe53d04ba7f9f0ae7f2bac7a2d6dc59bc09fd8de811557a1287c01a1e09edeb750adba79cef13ebeb951d030ff29e63f39"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xeb920a13be734ff6b152b2f099bd1f6f3ed7f29cf267d966184bab5b5cb5dabe"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("9"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1b43586e1432a3ed43253dd44fd5e8fb20d65a9aa720b17f41da928266fd155e"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000091ba09cffdf14ebc27c6c36a8cc9e679e32251165b52fb39e7ccc52cbc42f7157c301a032f0bebe1ae01ef86e26c0194bc26e9ed9e6bb7dad277927a92def3d0badbe74"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3f729d02a1c9e815e6974b91c882dbe525ed0a53a4efdbc74620e35bde99773f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000011ba02c5e81a024dd0f6fb773c8787fa46ab5eb55cb73df83562e6ddbe9106a3df7f6a029437b9a23e45bbfce086f2ddaa98b1e9e6914d7e58e2c5a128310042b332f89"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3f729d02a1c9e815e6974b91c882dbe525ed0a53a4efdbc74620e35bde99773f"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("2"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000021ba0fc37ad4eb0633eb18f2b7867bacbe994a2ffcbb04a71e394e6e76041f6ce216fa03b1b415a5c386d8de9e16be9fdc188234b80a0dec99922d03c240f2e463053e3"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("London")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xac7c62b6de1eb79a887bca351ae00f251b5d28f12e387445c91c7d87afdd4dc0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x63b3449343f05e4ba767546497869b85a2a473d42121a021e7590d7017754ff3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000001ba0e8ff56322287185f6afd3422a825b47bf5c1a4ccf0dc0389cdc03f7c1c32b7eaa0776b02f9f5773238d3ff36b74a123f409cd6420908d7855bbe4c8ff63e00d698"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4fe66d9877d8773ecdc30931c93f7f099db0a680f4fa70a6900beaece1abe856"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x63b3449343f05e4ba767546497869b85a2a473d42121a021e7590d7017754ff3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000031ba0f06eb219c5dba98711a9a2678339f64d172bfac289a5c43a0018d3917be8dc2aa0147bd7a6ee30217e63cbddc28b0e72f115da754d8916b87992aa27ed00eb105e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xcc7f7b9cd5c6edeb998bda041a86d095ecc09509f6307865e84f6e797e8325bf"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("4"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x962ab2b5876962ab2c27d260485a0a1ab1a930ea9143d99f3ba2b4962b6b39e0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000041ba0c148a101aa54703ff0e949441bdba90b1972a16c338f7f9a24b07f0313cd49d6a028cb82229b8a57e2048761d6fa5060c5b459f000d4e218de1372c1df9cfa171e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xffe8d1bf9c58da99d37a483e737dc48ae9c804f0ea8757af12bbbdc394c59671"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("5"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xd98655f5c4759c56c8ba01eb9c3fcde34b26c4445714859bbd06d18b0c398322"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000051ca09a1ce3fdc8469be9bbe660a07c169cf5b6b70fe408cc1395057bbd4cdc2c8557a0560e8c0503c4364efd017933749f22e1d9ad4eff4580d5463df54b9bff8dca31"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xffe8d1bf9c58da99d37a483e737dc48ae9c804f0ea8757af12bbbdc394c59671"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x442c5686dfaa9f7734ed17a45d5f91a8057b8ea587a342b8f8eba3d267874edb"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000061ca04f7114759d69db050a87677a2dff3d6f9399f0b66da593b2cc50748708377f6fa042f32766ce38ec3cee0d2c2dbc4d14b9cbf94e4af75b0584a04c933457bb83bb"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3f53b5efc13695d760896b7f28ee2fffa607c2e0c20859f96e1345258757d26b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("7"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7892c989716799974e37f634fd1e5415875819865e33cb54062aab2f75cd2294"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000071ba0e77cc0b2a4af0e43bc5732d6747afb3ddcf781f7277650aeef15b9caba68c91aa04af80af420b77c3f4ad457f1c6535be5d46993e2c8987250d28d088b3a11bb4a"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x622394a760b62a716b949006f6f98bfaff0d5f5d1e14dbd01114d91be551254d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa20826cf41f70c356832c534dd73f631c498760da2a0584e2844480b70b77e6d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf884800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000081ca057f87767c304f58d8c351529457f9fbe53d04ba7f9f0ae7f2bac7a2d6dc59bc09fd8de811557a1287c01a1e09edeb750adba79cef13ebeb951d030ff29e63f39"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7762d3b3246c3d075ec99522a1d036ddab001d209fdf1e037883679417f023be"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("9"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1b43586e1432a3ed43253dd44fd5e8fb20d65a9aa720b17f41da928266fd155e"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000091ba09cffdf14ebc27c6c36a8cc9e679e32251165b52fb39e7ccc52cbc42f7157c301a032f0bebe1ae01ef86e26c0194bc26e9ed9e6bb7dad277927a92def3d0badbe74"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa14d9a813ff4ac2178940ec3d36c797fe36b563e77726c05e24811bf6b72482d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000011ba02c5e81a024dd0f6fb773c8787fa46ab5eb55cb73df83562e6ddbe9106a3df7f6a029437b9a23e45bbfce086f2ddaa98b1e9e6914d7e58e2c5a128310042b332f89"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa14d9a813ff4ac2178940ec3d36c797fe36b563e77726c05e24811bf6b72482d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("2"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000021ba0fc37ad4eb0633eb18f2b7867bacbe994a2ffcbb04a71e394e6e76041f6ce216fa03b1b415a5c386d8de9e16be9fdc188234b80a0dec99922d03c240f2e463053e3"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("Merge")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xac7c62b6de1eb79a887bca351ae00f251b5d28f12e387445c91c7d87afdd4dc0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x63b3449343f05e4ba767546497869b85a2a473d42121a021e7590d7017754ff3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000001ba0e8ff56322287185f6afd3422a825b47bf5c1a4ccf0dc0389cdc03f7c1c32b7eaa0776b02f9f5773238d3ff36b74a123f409cd6420908d7855bbe4c8ff63e00d698"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4fe66d9877d8773ecdc30931c93f7f099db0a680f4fa70a6900beaece1abe856"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x63b3449343f05e4ba767546497869b85a2a473d42121a021e7590d7017754ff3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000031ba0f06eb219c5dba98711a9a2678339f64d172bfac289a5c43a0018d3917be8dc2aa0147bd7a6ee30217e63cbddc28b0e72f115da754d8916b87992aa27ed00eb105e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xcc7f7b9cd5c6edeb998bda041a86d095ecc09509f6307865e84f6e797e8325bf"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("4"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x962ab2b5876962ab2c27d260485a0a1ab1a930ea9143d99f3ba2b4962b6b39e0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000041ba0c148a101aa54703ff0e949441bdba90b1972a16c338f7f9a24b07f0313cd49d6a028cb82229b8a57e2048761d6fa5060c5b459f000d4e218de1372c1df9cfa171e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xffe8d1bf9c58da99d37a483e737dc48ae9c804f0ea8757af12bbbdc394c59671"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("5"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xd98655f5c4759c56c8ba01eb9c3fcde34b26c4445714859bbd06d18b0c398322"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000051ca09a1ce3fdc8469be9bbe660a07c169cf5b6b70fe408cc1395057bbd4cdc2c8557a0560e8c0503c4364efd017933749f22e1d9ad4eff4580d5463df54b9bff8dca31"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xffe8d1bf9c58da99d37a483e737dc48ae9c804f0ea8757af12bbbdc394c59671"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x442c5686dfaa9f7734ed17a45d5f91a8057b8ea587a342b8f8eba3d267874edb"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000061ca04f7114759d69db050a87677a2dff3d6f9399f0b66da593b2cc50748708377f6fa042f32766ce38ec3cee0d2c2dbc4d14b9cbf94e4af75b0584a04c933457bb83bb"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3f53b5efc13695d760896b7f28ee2fffa607c2e0c20859f96e1345258757d26b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("7"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7892c989716799974e37f634fd1e5415875819865e33cb54062aab2f75cd2294"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000071ba0e77cc0b2a4af0e43bc5732d6747afb3ddcf781f7277650aeef15b9caba68c91aa04af80af420b77c3f4ad457f1c6535be5d46993e2c8987250d28d088b3a11bb4a"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x622394a760b62a716b949006f6f98bfaff0d5f5d1e14dbd01114d91be551254d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa20826cf41f70c356832c534dd73f631c498760da2a0584e2844480b70b77e6d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf884800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000081ca057f87767c304f58d8c351529457f9fbe53d04ba7f9f0ae7f2bac7a2d6dc59bc09fd8de811557a1287c01a1e09edeb750adba79cef13ebeb951d030ff29e63f39"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7762d3b3246c3d075ec99522a1d036ddab001d209fdf1e037883679417f023be"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("9"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1b43586e1432a3ed43253dd44fd5e8fb20d65a9aa720b17f41da928266fd155e"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000091ba09cffdf14ebc27c6c36a8cc9e679e32251165b52fb39e7ccc52cbc42f7157c301a032f0bebe1ae01ef86e26c0194bc26e9ed9e6bb7dad277927a92def3d0badbe74"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa14d9a813ff4ac2178940ec3d36c797fe36b563e77726c05e24811bf6b72482d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000011ba02c5e81a024dd0f6fb773c8787fa46ab5eb55cb73df83562e6ddbe9106a3df7f6a029437b9a23e45bbfce086f2ddaa98b1e9e6914d7e58e2c5a128310042b332f89"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa14d9a813ff4ac2178940ec3d36c797fe36b563e77726c05e24811bf6b72482d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("2"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000021ba0fc37ad4eb0633eb18f2b7867bacbe994a2ffcbb04a71e394e6e76041f6ce216fa03b1b415a5c386d8de9e16be9fdc188234b80a0dec99922d03c240f2e463053e3"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("Shanghai")), LblJSONList{}(\right-assoc{}(LblJSONs{}(LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xac7c62b6de1eb79a887bca351ae00f251b5d28f12e387445c91c7d87afdd4dc0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x63b3449343f05e4ba767546497869b85a2a473d42121a021e7590d7017754ff3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000001ba0e8ff56322287185f6afd3422a825b47bf5c1a4ccf0dc0389cdc03f7c1c32b7eaa0776b02f9f5773238d3ff36b74a123f409cd6420908d7855bbe4c8ff63e00d698"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x4fe66d9877d8773ecdc30931c93f7f099db0a680f4fa70a6900beaece1abe856"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x63b3449343f05e4ba767546497869b85a2a473d42121a021e7590d7017754ff3"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000031ba0f06eb219c5dba98711a9a2678339f64d172bfac289a5c43a0018d3917be8dc2aa0147bd7a6ee30217e63cbddc28b0e72f115da754d8916b87992aa27ed00eb105e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xcc7f7b9cd5c6edeb998bda041a86d095ecc09509f6307865e84f6e797e8325bf"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("4"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x962ab2b5876962ab2c27d260485a0a1ab1a930ea9143d99f3ba2b4962b6b39e0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000041ba0c148a101aa54703ff0e949441bdba90b1972a16c338f7f9a24b07f0313cd49d6a028cb82229b8a57e2048761d6fa5060c5b459f000d4e218de1372c1df9cfa171e"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xffe8d1bf9c58da99d37a483e737dc48ae9c804f0ea8757af12bbbdc394c59671"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("5"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xd98655f5c4759c56c8ba01eb9c3fcde34b26c4445714859bbd06d18b0c398322"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000051ca09a1ce3fdc8469be9bbe660a07c169cf5b6b70fe408cc1395057bbd4cdc2c8557a0560e8c0503c4364efd017933749f22e1d9ad4eff4580d5463df54b9bff8dca31"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xffe8d1bf9c58da99d37a483e737dc48ae9c804f0ea8757af12bbbdc394c59671"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("6"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x442c5686dfaa9f7734ed17a45d5f91a8057b8ea587a342b8f8eba3d267874edb"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000061ca04f7114759d69db050a87677a2dff3d6f9399f0b66da593b2cc50748708377f6fa042f32766ce38ec3cee0d2c2dbc4d14b9cbf94e4af75b0584a04c933457bb83bb"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x3f53b5efc13695d760896b7f28ee2fffa607c2e0c20859f96e1345258757d26b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("7"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7892c989716799974e37f634fd1e5415875819865e33cb54062aab2f75cd2294"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000071ba0e77cc0b2a4af0e43bc5732d6747afb3ddcf781f7277650aeef15b9caba68c91aa04af80af420b77c3f4ad457f1c6535be5d46993e2c8987250d28d088b3a11bb4a"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x622394a760b62a716b949006f6f98bfaff0d5f5d1e14dbd01114d91be551254d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa20826cf41f70c356832c534dd73f631c498760da2a0584e2844480b70b77e6d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf884800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000081ca057f87767c304f58d8c351529457f9fbe53d04ba7f9f0ae7f2bac7a2d6dc59bc09fd8de811557a1287c01a1e09edeb750adba79cef13ebeb951d030ff29e63f39"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7762d3b3246c3d075ec99522a1d036ddab001d209fdf1e037883679417f023be"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("9"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1b43586e1432a3ed43253dd44fd5e8fb20d65a9aa720b17f41da928266fd155e"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000091ba09cffdf14ebc27c6c36a8cc9e679e32251165b52fb39e7ccc52cbc42f7157c301a032f0bebe1ae01ef86e26c0194bc26e9ed9e6bb7dad277927a92def3d0badbe74"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa14d9a813ff4ac2178940ec3d36c797fe36b563e77726c05e24811bf6b72482d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("1"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000011ba02c5e81a024dd0f6fb773c8787fa46ab5eb55cb73df83562e6ddbe9106a3df7f6a029437b9a23e45bbfce086f2ddaa98b1e9e6914d7e58e2c5a128310042b332f89"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("hash")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa14d9a813ff4ac2178940ec3d36c797fe36b563e77726c05e24811bf6b72482d"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("indexes")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("2"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gas")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), inj{SortInt{}, SortJSON{}}(\dv{SortInt{}}("0"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("logs")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("txbytes")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xf885800a8404c4b40094cccccccccccccccccccccccccccccccccccccccc01a4693c613900000000000000000000000000000000000000000000000000000000000000021ba0fc37ad4eb0633eb18f2b7867bacbe994a2ffcbb04a71e394e6e76041f6ce216fa03b1b415a5c386d8de9e16be9fdc188234b80a0dec99922d03c240f2e463053e3"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("pre")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000100")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0ba1a9ce0ba1a9ce"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60006000600060006000a361600d60005500"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000101")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0ba1a9ce0ba1a9ce"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd60005260006000600060016001600003a361600d60005500"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000102")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0ba1a9ce0ba1a9ce"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd60005260006000600060016000036001a361600d60005500"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000103")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0ba1a9ce0ba1a9ce"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd60005260006000600060006001a361600d60005500"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000104")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0ba1a9ce0ba1a9ce"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005260006000600060206000a361600d60005500"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000105")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0ba1a9ce0ba1a9ce"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd60005260006000600060016000a361600d60005500"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000106")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0ba1a9ce0ba1a9ce"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000526000600060006001601fa361600d60005500"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000107")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0ba1a9ce0ba1a9ce"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd600052336000600060206000a361600d60005500"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000108")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0ba1a9ce0ba1a9ce"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x60ff6000536001600003600160000360016000036001601fa361600d60005500"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x0000000000000000000000000000000000000109")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0ba1a9ce0ba1a9ce"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x7faabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd6000525858586001601fa361600d60005500"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x100000000000"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0xcccccccccccccccccccccccccccccccccccccccc")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("balance")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0ba1a9ce0ba1a9ce"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("code")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x6000600060006000600435610100015af400"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("storage")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("0x00")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0bad"))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("transaction")), LblJSONObject{}(\right-assoc{}(LblJSONs{}(LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("data")), LblJSONList{}(\right-assoc{}(LblJSONs{}(inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x693c61390000000000000000000000000000000000000000000000000000000000000000")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x693c61390000000000000000000000000000000000000000000000000000000000000001")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x693c61390000000000000000000000000000000000000000000000000000000000000002")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x693c61390000000000000000000000000000000000000000000000000000000000000003")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x693c61390000000000000000000000000000000000000000000000000000000000000004")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x693c61390000000000000000000000000000000000000000000000000000000000000005")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x693c61390000000000000000000000000000000000000000000000000000000000000006")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x693c61390000000000000000000000000000000000000000000000000000000000000007")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x693c61390000000000000000000000000000000000000000000000000000000000000008")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x693c61390000000000000000000000000000000000000000000000000000000000000009")), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasLimit")), LblJSONList{}(\right-assoc{}(LblJSONs{}(inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x04c4b400")), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("gasPrice")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x0a"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("nonce")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x00"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("secretKey")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("sender")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("to")), inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0xcccccccccccccccccccccccccccccccccccccccc"))), LblJSONEntry{}(inj{SortString{}, SortJSONKey{}}(\dv{SortString{}}("value")), LblJSONList{}(\right-assoc{}(LblJSONs{}(inj{SortString{}, SortJSON{}}(\dv{SortString{}}("0x01")), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}())))), Lbl'Stop'List'LBraQuot'JSONs'QuotRBra'{}()))))), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$SCHEDULE")), inj{SortSchedule{}, SortKItem{}}(LblSHANGHAI'Unds'EVM{}())), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$MODE")), inj{SortMode{}, SortKItem{}}(LblNORMAL{}())), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$CHAINID")), inj{SortInt{}, SortKItem{}}(\dv{SortInt{}}("1"))), Lbl'UndsPipe'-'-GT-Unds'{}(inj{SortKConfigVar{}, SortKItem{}}(\dv{SortKConfigVar{}}("$USEGAS")), inj{SortBool{}, SortKItem{}}(\dv{SortBool{}}("true")))))) \ No newline at end of file diff --git a/tests/slow.llvm b/tests/slow.llvm deleted file mode 100644 index 0c65953710..0000000000 --- a/tests/slow.llvm +++ /dev/null @@ -1,4 +0,0 @@ -tests/ethereum-tests/LegacyTests/Constantinople/BlockchainTests/GeneralStateTests/stQuadraticComplexityTest/Call50000bytesContract50_2_d0g1v0.json -tests/ethereum-tests/LegacyTests/Constantinople/BlockchainTests/GeneralStateTests/stStaticCall/static_Call50000bytesContract50_2_d1g0v0.json -tests/ethereum-tests/BlockchainTests/GeneralStateTests/VMTests/vmPerformance/loopMul.json -tests/ethereum-tests/BlockchainTests/GeneralStateTests/VMTests/vmPerformance/loopExp.json diff --git a/tests/specs/benchmarks/README.md b/tests/specs/benchmarks/README.md deleted file mode 100644 index d8d455a2e1..0000000000 --- a/tests/specs/benchmarks/README.md +++ /dev/null @@ -1 +0,0 @@ -Specs generated from https://github.com/denis-bogdanas/kevm-verify-benchmarks/tree/jenkins-support, for all directories starting with `0-`. Originally developed by Suhabe Bugrara. diff --git a/tests/specs/benchmarks/address00-spec.k b/tests/specs/benchmarks/address00-spec.k deleted file mode 100644 index 70f5f643f9..0000000000 --- a/tests/specs/benchmarks/address00-spec.k +++ /dev/null @@ -1,128 +0,0 @@ -requires "verification.k" - -module ADDRESS00-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#address(A0)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634b64e492146044575b600080fd5b348015604f57600080fd5b506082600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505060c4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008190509190505600a165627a7a72305820fef7ba925e24a935e59bb401907893518a66095fa9e2c2506b29051dfdaa6ff80029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634b64e492146044575b600080fd5b348015604f57600080fd5b506082600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505060c4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008190509190505600a165627a7a72305820fef7ba925e24a935e59bb401907893518a66095fa9e2c2506b29051dfdaa6ff80029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #address(A0)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634b64e492146044575b600080fd5b348015604f57600080fd5b506082600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505060c4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008190509190505600a165627a7a72305820fef7ba925e24a935e59bb401907893518a66095fa9e2c2506b29051dfdaa6ff80029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeAddress(A0) - -endmodule - diff --git a/tests/specs/benchmarks/address00.sol b/tests/specs/benchmarks/address00.sol deleted file mode 100644 index 4e3f8e2966..0000000000 --- a/tests/specs/benchmarks/address00.sol +++ /dev/null @@ -1,7 +0,0 @@ -pragma solidity 0.4.24; -contract address00 { - function execute(address a0) public returns (address) { - return a0; - } -} - diff --git a/tests/specs/benchmarks/bytes00-spec.k b/tests/specs/benchmarks/bytes00-spec.k deleted file mode 100644 index 81f68f81f5..0000000000 --- a/tests/specs/benchmarks/bytes00-spec.k +++ /dev/null @@ -1,129 +0,0 @@ -requires "verification.k" - -module BYTES00-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(DATA_LEN)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806309c5eabe146044575b600080fd5b348015604f57600080fd5b5060a8600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505060be565b6040518082815260200191505060405180910390f35b6000815190509190505600a165627a7a72305820443b6929f0411657e3b5f5371823da4795cb8ece704713e7934fea316a2af24a0029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806309c5eabe146044575b600080fd5b348015604f57600080fd5b5060a8600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505060be565b6040518082815260200191505060405180910390f35b6000815190509190505600a165627a7a72305820443b6929f0411657e3b5f5371823da4795cb8ece704713e7934fea316a2af24a0029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #bytes(#bufStrict(DATA_LEN, DATA))) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806309c5eabe146044575b600080fd5b348015604f57600080fd5b5060a8600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505060be565b6040518082815260200191505060405180910390f35b6000815190509190505600a165627a7a72305820443b6929f0411657e3b5f5371823da4795cb8ece704713e7934fea316a2af24a0029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #range(0 <= DATA_LEN < pow16) - andBool #range(0 <= DATA < (2 ^Int (DATA_LEN *Int 8))) - -endmodule - diff --git a/tests/specs/benchmarks/bytes00.sol b/tests/specs/benchmarks/bytes00.sol deleted file mode 100644 index b032f5be34..0000000000 --- a/tests/specs/benchmarks/bytes00.sol +++ /dev/null @@ -1,7 +0,0 @@ -pragma solidity 0.4.24; -contract bytes00 { - function execute(bytes data) public returns (uint) { - return data.length; - } -} - diff --git a/tests/specs/benchmarks/dynamicarray00-spec.k b/tests/specs/benchmarks/dynamicarray00-spec.k deleted file mode 100644 index a45bf646c3..0000000000 --- a/tests/specs/benchmarks/dynamicarray00-spec.k +++ /dev/null @@ -1,129 +0,0 @@ -requires "verification.k" - -module DYNAMICARRAY00-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(3)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x60806040526004361060225760003560e01c63ffffffff1680638ef16cd9146027575b600080fd5b348015603257600080fd5b5060408051602060048035808201358381028086018501909652808552607995369593946024949385019291829185019084908082843750949750608b9650505050505050565b60408051918252519081900360200190f35b51905600a165627a7a72305820033b07c141d79055a0848aadceb745344b5e3a1fb5eff1292fc547e38d5bbe2a0029") - #computeValidJumpDests(#parseByteStack("0x60806040526004361060225760003560e01c63ffffffff1680638ef16cd9146027575b600080fd5b348015603257600080fd5b5060408051602060048035808201358381028086018501909652808552607995369593946024949385019291829185019084908082843750949750608b9650505050505050565b60408051918252519081900360200190f35b51905600a165627a7a72305820033b07c141d79055a0848aadceb745344b5e3a1fb5eff1292fc547e38d5bbe2a0029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData2("execute(uint256[])", #array(#uint256(1), 3, #uint256(A0), #uint256(A1), #uint256(A2), .TypedArgs)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x60806040526004361060225760003560e01c63ffffffff1680638ef16cd9146027575b600080fd5b348015603257600080fd5b5060408051602060048035808201358381028086018501909652808552607995369593946024949385019291829185019084908082843750949750608b9650505050505050565b60408051918252519081900360200190f35b51905600a165627a7a72305820033b07c141d79055a0848aadceb745344b5e3a1fb5eff1292fc547e38d5bbe2a0029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, A0) - andBool #rangeUInt(256, A1) - andBool #rangeUInt(256, A2) - -endmodule diff --git a/tests/specs/benchmarks/dynamicarray00.sol b/tests/specs/benchmarks/dynamicarray00.sol deleted file mode 100644 index fdbdfa74e7..0000000000 --- a/tests/specs/benchmarks/dynamicarray00.sol +++ /dev/null @@ -1,6 +0,0 @@ -pragma solidity 0.4.24; -contract dynamicarray00 { - function execute(uint[] a) public returns (uint) { - return a.length; - } -} \ No newline at end of file diff --git a/tests/specs/benchmarks/ecrecover00-siginvalid-spec.k b/tests/specs/benchmarks/ecrecover00-siginvalid-spec.k deleted file mode 100644 index 339e1aeea7..0000000000 --- a/tests/specs/benchmarks/ecrecover00-siginvalid-spec.k +++ /dev/null @@ -1,137 +0,0 @@ -requires "verification.k" - -module ECRECOVER00-SIGINVALID-SPEC - imports VERIFICATION - - // fn-execute-siginvalid - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => EVMC_REVERT - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634480949514610046575b600080fd5b34801561005257600080fd5b506100a06004803603608081101561006957600080fd5b8101908080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610142573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561018957600080fd5b8091505094935050505056fea165627a7a72305820ec9368f63b82a680b2493003123eec414f661d1259fdf9d0082a8815d68a9a7e0029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634480949514610046575b600080fd5b34801561005257600080fd5b506100a06004803603608081101561006957600080fd5b8101908080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610142573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561018957600080fd5b8091505094935050505056fea165627a7a72305820ec9368f63b82a680b2493003123eec414f661d1259fdf9d0082a8815d68a9a7e0029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #bytes32(HASH), #uint8(SIGV), #bytes32(SIGR), #bytes32(SIGS)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634480949514610046575b600080fd5b34801561005257600080fd5b506100a06004803603608081101561006957600080fd5b8101908080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610142573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561018957600080fd5b8091505094935050505056fea165627a7a72305820ec9368f63b82a680b2493003123eec414f661d1259fdf9d0082a8815d68a9a7e0029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - - // Account address normality - andBool CONTRACT_ID >Int 0 andBool (notBool #isPrecompiledAccount(CONTRACT_ID, BYZANTIUM)) - andBool CALLEE_ID >Int 0 andBool (notBool #isPrecompiledAccount(CALLEE_ID , BYZANTIUM)) - - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV) - andBool #rangeBytes(32, SIGR) - andBool #rangeBytes(32, SIGS) - andBool #ecrecEmpty(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)) - -endmodule - diff --git a/tests/specs/benchmarks/ecrecover00-sigvalid-spec.k b/tests/specs/benchmarks/ecrecover00-sigvalid-spec.k deleted file mode 100644 index 79092f5470..0000000000 --- a/tests/specs/benchmarks/ecrecover00-sigvalid-spec.k +++ /dev/null @@ -1,137 +0,0 @@ -requires "verification.k" - -module ECRECOVER00-SIGVALID-SPEC - imports VERIFICATION - - // fn-execute-sigvalid - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, RECOVERED) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634480949514610046575b600080fd5b34801561005257600080fd5b506100a06004803603608081101561006957600080fd5b8101908080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610142573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561018957600080fd5b8091505094935050505056fea165627a7a72305820ec9368f63b82a680b2493003123eec414f661d1259fdf9d0082a8815d68a9a7e0029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634480949514610046575b600080fd5b34801561005257600080fd5b506100a06004803603608081101561006957600080fd5b8101908080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610142573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561018957600080fd5b8091505094935050505056fea165627a7a72305820ec9368f63b82a680b2493003123eec414f661d1259fdf9d0082a8815d68a9a7e0029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #bytes32(HASH), #uint8(SIGV), #bytes32(SIGR), #bytes32(SIGS)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634480949514610046575b600080fd5b34801561005257600080fd5b506100a06004803603608081101561006957600080fd5b8101908080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610142573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561018957600080fd5b8091505094935050505056fea165627a7a72305820ec9368f63b82a680b2493003123eec414f661d1259fdf9d0082a8815d68a9a7e0029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - - // Account address normality - andBool CONTRACT_ID >Int 0 andBool (notBool #isPrecompiledAccount(CONTRACT_ID, BYZANTIUM)) - andBool CALLEE_ID >Int 0 andBool (notBool #isPrecompiledAccount(CALLEE_ID , BYZANTIUM)) - - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #range(0 <= CD < 1024) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV) - andBool #rangeBytes(32, SIGR) - andBool #rangeBytes(32, SIGS) - andBool RECOVERED ==Int #asWord(#ecrec(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS))) - andBool notBool #ecrecEmpty(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)) -endmodule - diff --git a/tests/specs/benchmarks/ecrecover00.sol b/tests/specs/benchmarks/ecrecover00.sol deleted file mode 100644 index b46181de6e..0000000000 --- a/tests/specs/benchmarks/ecrecover00.sol +++ /dev/null @@ -1,8 +0,0 @@ -pragma solidity 0.5.0; -contract ecrecover00 { - function execute(bytes32 hash, uint8 sigV, bytes32 sigR, bytes32 sigS) pure external returns(address) { - address recovered = ecrecover(hash, sigV, sigR, sigS); - require(recovered > address(0)); - return recovered; - } -} \ No newline at end of file diff --git a/tests/specs/benchmarks/ecrecoverloop00-sig0-invalid-spec.k b/tests/specs/benchmarks/ecrecoverloop00-sig0-invalid-spec.k deleted file mode 100644 index 77e7cfba56..0000000000 --- a/tests/specs/benchmarks/ecrecoverloop00-sig0-invalid-spec.k +++ /dev/null @@ -1,141 +0,0 @@ -requires "verification.k" - -module ECRECOVERLOOP00-SIG0-INVALID-SPEC - imports VERIFICATION - - // fn-execute-sig0-invalid - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => .Bytes - _ => EVMC_REVERT - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e6daaf3c14610046575b600080fd5b34801561005257600080fd5b50610142600480360360e081101561006957600080fd5b810190808035906020019092919080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f8201169050808301925050505050509192919290505050610144565b005b60008090505b600281101561023d576000600186868460028110151561016657fe5b6020020151868560028110151561017957fe5b6020020151868660028110151561018c57fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156101e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561022f57600080fd5b50808060010191505061014a565b505050505056fea165627a7a723058209cbe77475c348cf6ab4edd37fdfe35cef78a2f1a391aad5c7b6fdbace01dd96d0029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e6daaf3c14610046575b600080fd5b34801561005257600080fd5b50610142600480360360e081101561006957600080fd5b810190808035906020019092919080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f8201169050808301925050505050509192919290505050610144565b005b60008090505b600281101561023d576000600186868460028110151561016657fe5b6020020151868560028110151561017957fe5b6020020151868660028110151561018c57fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156101e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561022f57600080fd5b50808060010191505061014a565b505050505056fea165627a7a723058209cbe77475c348cf6ab4edd37fdfe35cef78a2f1a391aad5c7b6fdbace01dd96d0029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData2("execute(bytes32,uint8[2],bytes32[2],bytes32[2])", #bytes32(HASH), -#uint8(SIGV0), #uint8(SIGV1), -#bytes32(SIGR0), #bytes32(SIGR1), -#bytes32(SIGS0), #bytes32(SIGS1)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e6daaf3c14610046575b600080fd5b34801561005257600080fd5b50610142600480360360e081101561006957600080fd5b810190808035906020019092919080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f8201169050808301925050505050509192919290505050610144565b005b60008090505b600281101561023d576000600186868460028110151561016657fe5b6020020151868560028110151561017957fe5b6020020151868660028110151561018c57fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156101e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561022f57600080fd5b50808060010191505061014a565b505050505056fea165627a7a723058209cbe77475c348cf6ab4edd37fdfe35cef78a2f1a391aad5c7b6fdbace01dd96d0029") - -_ - - -_ - - _ - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - _ - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - - // Account address normality - andBool CONTRACT_ID >Int 0 andBool (notBool #isPrecompiledAccount(CONTRACT_ID, BYZANTIUM)) - andBool CALLEE_ID >Int 0 andBool (notBool #isPrecompiledAccount(CALLEE_ID , BYZANTIUM)) - - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV0) - andBool #rangeUInt(8, SIGV1) - andBool #rangeBytes(32, SIGR0) - andBool #rangeBytes(32, SIGR1) - andBool #rangeBytes(32, SIGS0) - andBool #rangeBytes(32, SIGS1) - andBool #ecrecEmpty( #bufStrict(32, HASH), #bufStrict(32, SIGV0), #bufStrict(32, SIGR0), #bufStrict(32, SIGS0) ) - -endmodule - diff --git a/tests/specs/benchmarks/ecrecoverloop00-sig1-invalid-spec.k b/tests/specs/benchmarks/ecrecoverloop00-sig1-invalid-spec.k deleted file mode 100644 index b038211325..0000000000 --- a/tests/specs/benchmarks/ecrecoverloop00-sig1-invalid-spec.k +++ /dev/null @@ -1,143 +0,0 @@ -requires "verification.k" - -module ECRECOVERLOOP00-SIG1-INVALID-SPEC - imports VERIFICATION - - // fn-execute-sig1-invalid - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => .Bytes - _ => EVMC_REVERT - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e6daaf3c14610046575b600080fd5b34801561005257600080fd5b50610142600480360360e081101561006957600080fd5b810190808035906020019092919080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f8201169050808301925050505050509192919290505050610144565b005b60008090505b600281101561023d576000600186868460028110151561016657fe5b6020020151868560028110151561017957fe5b6020020151868660028110151561018c57fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156101e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561022f57600080fd5b50808060010191505061014a565b505050505056fea165627a7a723058209cbe77475c348cf6ab4edd37fdfe35cef78a2f1a391aad5c7b6fdbace01dd96d0029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e6daaf3c14610046575b600080fd5b34801561005257600080fd5b50610142600480360360e081101561006957600080fd5b810190808035906020019092919080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f8201169050808301925050505050509192919290505050610144565b005b60008090505b600281101561023d576000600186868460028110151561016657fe5b6020020151868560028110151561017957fe5b6020020151868660028110151561018c57fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156101e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561022f57600080fd5b50808060010191505061014a565b505050505056fea165627a7a723058209cbe77475c348cf6ab4edd37fdfe35cef78a2f1a391aad5c7b6fdbace01dd96d0029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData2("execute(bytes32,uint8[2],bytes32[2],bytes32[2])", #bytes32(HASH), -#uint8(SIGV0), #uint8(SIGV1), -#bytes32(SIGR0), #bytes32(SIGR1), -#bytes32(SIGS0), #bytes32(SIGS1)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e6daaf3c14610046575b600080fd5b34801561005257600080fd5b50610142600480360360e081101561006957600080fd5b810190808035906020019092919080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f8201169050808301925050505050509192919290505050610144565b005b60008090505b600281101561023d576000600186868460028110151561016657fe5b6020020151868560028110151561017957fe5b6020020151868660028110151561018c57fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156101e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561022f57600080fd5b50808060010191505061014a565b505050505056fea165627a7a723058209cbe77475c348cf6ab4edd37fdfe35cef78a2f1a391aad5c7b6fdbace01dd96d0029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - - // Account address normality - andBool CONTRACT_ID >Int 0 andBool (notBool #isPrecompiledAccount(CONTRACT_ID, BYZANTIUM)) - andBool CALLEE_ID >Int 0 andBool (notBool #isPrecompiledAccount(CALLEE_ID , BYZANTIUM)) - - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV0) - andBool #rangeUInt(8, SIGV1) - andBool #rangeBytes(32, SIGR0) - andBool #rangeBytes(32, SIGR1) - andBool #rangeBytes(32, SIGS0) - andBool #rangeBytes(32, SIGS1) - andBool #ecrecEmpty( #bufStrict(32, HASH), #bufStrict(32, SIGV1), #bufStrict(32, SIGR1), #bufStrict(32, SIGS1) ) - -endmodule - diff --git a/tests/specs/benchmarks/ecrecoverloop00-sigs-valid-spec.k b/tests/specs/benchmarks/ecrecoverloop00-sigs-valid-spec.k deleted file mode 100644 index 86320b64f9..0000000000 --- a/tests/specs/benchmarks/ecrecoverloop00-sigs-valid-spec.k +++ /dev/null @@ -1,144 +0,0 @@ -requires "verification.k" - -module ECRECOVERLOOP00-SIGS-VALID-SPEC - imports VERIFICATION - - // fn-execute-sigs-valid - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => .Bytes - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e6daaf3c14610046575b600080fd5b34801561005257600080fd5b50610142600480360360e081101561006957600080fd5b810190808035906020019092919080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f8201169050808301925050505050509192919290505050610144565b005b60008090505b600281101561023d576000600186868460028110151561016657fe5b6020020151868560028110151561017957fe5b6020020151868660028110151561018c57fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156101e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561022f57600080fd5b50808060010191505061014a565b505050505056fea165627a7a723058209cbe77475c348cf6ab4edd37fdfe35cef78a2f1a391aad5c7b6fdbace01dd96d0029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e6daaf3c14610046575b600080fd5b34801561005257600080fd5b50610142600480360360e081101561006957600080fd5b810190808035906020019092919080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f8201169050808301925050505050509192919290505050610144565b005b60008090505b600281101561023d576000600186868460028110151561016657fe5b6020020151868560028110151561017957fe5b6020020151868660028110151561018c57fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156101e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561022f57600080fd5b50808060010191505061014a565b505050505056fea165627a7a723058209cbe77475c348cf6ab4edd37fdfe35cef78a2f1a391aad5c7b6fdbace01dd96d0029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData2("execute(bytes32,uint8[2],bytes32[2],bytes32[2])", #bytes32(HASH), -#uint8(SIGV0), #uint8(SIGV1), -#bytes32(SIGR0), #bytes32(SIGR1), -#bytes32(SIGS0), #bytes32(SIGS1)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e6daaf3c14610046575b600080fd5b34801561005257600080fd5b50610142600480360360e081101561006957600080fd5b810190808035906020019092919080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f8201169050808301925050505050509192919290505050610144565b005b60008090505b600281101561023d576000600186868460028110151561016657fe5b6020020151868560028110151561017957fe5b6020020151868660028110151561018c57fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156101e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611151561022f57600080fd5b50808060010191505061014a565b505050505056fea165627a7a723058209cbe77475c348cf6ab4edd37fdfe35cef78a2f1a391aad5c7b6fdbace01dd96d0029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - - // Account address normality - andBool CONTRACT_ID >Int 0 andBool (notBool #isPrecompiledAccount(CONTRACT_ID, BYZANTIUM)) - andBool CALLEE_ID >Int 0 andBool (notBool #isPrecompiledAccount(CALLEE_ID , BYZANTIUM)) - - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV0) - andBool #rangeUInt(8, SIGV1) - andBool #rangeBytes(32, SIGR0) - andBool #rangeBytes(32, SIGR1) - andBool #rangeBytes(32, SIGS0) - andBool #rangeBytes(32, SIGS1) - andBool notBool #ecrecEmpty( #bufStrict(32, HASH), #bufStrict(32, SIGV0), #bufStrict(32, SIGR0), #bufStrict(32, SIGS0) ) - andBool notBool #ecrecEmpty( #bufStrict(32, HASH), #bufStrict(32, SIGV1), #bufStrict(32, SIGR1), #bufStrict(32, SIGS1) ) - -endmodule - diff --git a/tests/specs/benchmarks/ecrecoverloop00.sol b/tests/specs/benchmarks/ecrecoverloop00.sol deleted file mode 100644 index 6ca9031940..0000000000 --- a/tests/specs/benchmarks/ecrecoverloop00.sol +++ /dev/null @@ -1,9 +0,0 @@ -pragma solidity 0.5.0; -contract ecrecoverloop00 { - function execute(bytes32 hash, uint8[2] memory sigV, bytes32[2] memory sigR, bytes32[2] memory sigS) pure public { - for (uint i = 0; i < 2; i++) { - address recovered = ecrecover(hash, sigV[i], sigR[i], sigS[i]); - require(recovered > address(0)); - } - } -} \ No newline at end of file diff --git a/tests/specs/benchmarks/ecrecoverloop02-sig0-invalid-spec.k b/tests/specs/benchmarks/ecrecoverloop02-sig0-invalid-spec.k deleted file mode 100644 index 29bfe8f0fd..0000000000 --- a/tests/specs/benchmarks/ecrecoverloop02-sig0-invalid-spec.k +++ /dev/null @@ -1,144 +0,0 @@ -requires "verification.k" - -module ECRECOVERLOOP02-SIG0-INVALID-SPEC - imports VERIFICATION - - // fn-execute-sig0-invalid - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => .Bytes - _ => EVMC_REVERT - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633543d4b214610046575b600080fd5b34801561005257600080fd5b506101da600480360361010081101561006a57600080fd5b81019080803590602001909291908035906020019064010000000081111561009157600080fd5b8201836020820111156100a357600080fd5b803590602001918460018302840111640100000000831117156100c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505091929192905050506101dc565b005b60008090505b60028110156102d557600060018786846002811015156101fe57fe5b6020020151868560028110151561021157fe5b6020020151868660028110151561022457fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610280573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161115156102c757600080fd5b5080806001019150506101e2565b50505050505056fea165627a7a723058200e559ecf0b4ed3978069fd9e401adb4043ef711a33a5926f0e081d7bcdf08bb80029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633543d4b214610046575b600080fd5b34801561005257600080fd5b506101da600480360361010081101561006a57600080fd5b81019080803590602001909291908035906020019064010000000081111561009157600080fd5b8201836020820111156100a357600080fd5b803590602001918460018302840111640100000000831117156100c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505091929192905050506101dc565b005b60008090505b60028110156102d557600060018786846002811015156101fe57fe5b6020020151868560028110151561021157fe5b6020020151868660028110151561022457fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610280573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161115156102c757600080fd5b5080806001019150506101e2565b50505050505056fea165627a7a723058200e559ecf0b4ed3978069fd9e401adb4043ef711a33a5926f0e081d7bcdf08bb80029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData2("execute(bytes32,bytes,uint8[2],bytes32[2],bytes32[2])", -#bytes32(HASH), #bytes(#bufStrict(DATA_LEN,DATA)), -#uint8(SIGV0), #uint8(SIGV1), -#bytes32(SIGR0), #bytes32(SIGR1), -#bytes32(SIGS0), #bytes32(SIGS1)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633543d4b214610046575b600080fd5b34801561005257600080fd5b506101da600480360361010081101561006a57600080fd5b81019080803590602001909291908035906020019064010000000081111561009157600080fd5b8201836020820111156100a357600080fd5b803590602001918460018302840111640100000000831117156100c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505091929192905050506101dc565b005b60008090505b60028110156102d557600060018786846002811015156101fe57fe5b6020020151868560028110151561021157fe5b6020020151868660028110151561022457fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610280573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161115156102c757600080fd5b5080806001019150506101e2565b50505050505056fea165627a7a723058200e559ecf0b4ed3978069fd9e401adb4043ef711a33a5926f0e081d7bcdf08bb80029") - -_ - - -_ - - _ - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - _ - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - - // Account address normality - andBool CONTRACT_ID >Int 0 andBool (notBool #isPrecompiledAccount(CONTRACT_ID, BYZANTIUM)) - andBool CALLEE_ID >Int 0 andBool (notBool #isPrecompiledAccount(CALLEE_ID , BYZANTIUM)) - - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV0) - andBool #rangeUInt(8, SIGV1) - andBool #rangeBytes(32, SIGR0) - andBool #rangeBytes(32, SIGR1) - andBool #rangeBytes(32, SIGS0) - andBool #rangeBytes(32, SIGS1) - andBool #range(0 <= DATA_LEN < 2 ^Int 16) - andBool #range(0 <= DATA < (2 ^Int (DATA_LEN *Int 8))) - andBool #ecrecEmpty( #bufStrict(32, HASH), #bufStrict(32, SIGV0), #bufStrict(32, SIGR0), #bufStrict(32, SIGS0) ) - -endmodule - diff --git a/tests/specs/benchmarks/ecrecoverloop02-sig1-invalid-spec.k b/tests/specs/benchmarks/ecrecoverloop02-sig1-invalid-spec.k deleted file mode 100644 index eb8133db8d..0000000000 --- a/tests/specs/benchmarks/ecrecoverloop02-sig1-invalid-spec.k +++ /dev/null @@ -1,145 +0,0 @@ -requires "verification.k" - -module ECRECOVERLOOP02-SIG1-INVALID-SPEC - imports VERIFICATION - - // fn-execute-sig1-invalid - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => .Bytes - _ => EVMC_REVERT - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633543d4b214610046575b600080fd5b34801561005257600080fd5b506101da600480360361010081101561006a57600080fd5b81019080803590602001909291908035906020019064010000000081111561009157600080fd5b8201836020820111156100a357600080fd5b803590602001918460018302840111640100000000831117156100c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505091929192905050506101dc565b005b60008090505b60028110156102d557600060018786846002811015156101fe57fe5b6020020151868560028110151561021157fe5b6020020151868660028110151561022457fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610280573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161115156102c757600080fd5b5080806001019150506101e2565b50505050505056fea165627a7a723058200e559ecf0b4ed3978069fd9e401adb4043ef711a33a5926f0e081d7bcdf08bb80029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633543d4b214610046575b600080fd5b34801561005257600080fd5b506101da600480360361010081101561006a57600080fd5b81019080803590602001909291908035906020019064010000000081111561009157600080fd5b8201836020820111156100a357600080fd5b803590602001918460018302840111640100000000831117156100c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505091929192905050506101dc565b005b60008090505b60028110156102d557600060018786846002811015156101fe57fe5b6020020151868560028110151561021157fe5b6020020151868660028110151561022457fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610280573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161115156102c757600080fd5b5080806001019150506101e2565b50505050505056fea165627a7a723058200e559ecf0b4ed3978069fd9e401adb4043ef711a33a5926f0e081d7bcdf08bb80029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData2("execute(bytes32,bytes,uint8[2],bytes32[2],bytes32[2])", -#bytes32(HASH), #bytes(#bufStrict(DATA_LEN,DATA)), -#uint8(SIGV0), #uint8(SIGV1), -#bytes32(SIGR0), #bytes32(SIGR1), -#bytes32(SIGS0), #bytes32(SIGS1)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633543d4b214610046575b600080fd5b34801561005257600080fd5b506101da600480360361010081101561006a57600080fd5b81019080803590602001909291908035906020019064010000000081111561009157600080fd5b8201836020820111156100a357600080fd5b803590602001918460018302840111640100000000831117156100c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505091929192905050506101dc565b005b60008090505b60028110156102d557600060018786846002811015156101fe57fe5b6020020151868560028110151561021157fe5b6020020151868660028110151561022457fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610280573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161115156102c757600080fd5b5080806001019150506101e2565b50505050505056fea165627a7a723058200e559ecf0b4ed3978069fd9e401adb4043ef711a33a5926f0e081d7bcdf08bb80029") - -_ - - -_ - - _ - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - _ - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - - // Account address normality - andBool CONTRACT_ID >Int 0 andBool (notBool #isPrecompiledAccount(CONTRACT_ID, BYZANTIUM)) - andBool CALLEE_ID >Int 0 andBool (notBool #isPrecompiledAccount(CALLEE_ID , BYZANTIUM)) - - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV0) - andBool #rangeUInt(8, SIGV1) - andBool #rangeBytes(32, SIGR0) - andBool #rangeBytes(32, SIGR1) - andBool #rangeBytes(32, SIGS0) - andBool #rangeBytes(32, SIGS1) - andBool #range(0 <= DATA_LEN < pow16) - andBool #range(0 <= DATA < (2 ^Int (DATA_LEN *Int 8))) - andBool notBool #ecrecEmpty( #bufStrict(32, HASH), #bufStrict(32, SIGV0), #bufStrict(32, SIGR0), #bufStrict(32, SIGS0) ) - andBool #ecrecEmpty( #bufStrict(32, HASH), #bufStrict(32, SIGV1), #bufStrict(32, SIGR1), #bufStrict(32, SIGS1) ) - -endmodule - diff --git a/tests/specs/benchmarks/ecrecoverloop02-sigs-valid-spec.k b/tests/specs/benchmarks/ecrecoverloop02-sigs-valid-spec.k deleted file mode 100644 index 53ff16b37f..0000000000 --- a/tests/specs/benchmarks/ecrecoverloop02-sigs-valid-spec.k +++ /dev/null @@ -1,147 +0,0 @@ -requires "verification.k" - -module ECRECOVERLOOP02-SIGS-VALID-SPEC - imports VERIFICATION - - // fn-execute-sigs-valid - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => .Bytes - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633543d4b214610046575b600080fd5b34801561005257600080fd5b506101da600480360361010081101561006a57600080fd5b81019080803590602001909291908035906020019064010000000081111561009157600080fd5b8201836020820111156100a357600080fd5b803590602001918460018302840111640100000000831117156100c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505091929192905050506101dc565b005b60008090505b60028110156102d557600060018786846002811015156101fe57fe5b6020020151868560028110151561021157fe5b6020020151868660028110151561022457fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610280573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161115156102c757600080fd5b5080806001019150506101e2565b50505050505056fea165627a7a723058200e559ecf0b4ed3978069fd9e401adb4043ef711a33a5926f0e081d7bcdf08bb80029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633543d4b214610046575b600080fd5b34801561005257600080fd5b506101da600480360361010081101561006a57600080fd5b81019080803590602001909291908035906020019064010000000081111561009157600080fd5b8201836020820111156100a357600080fd5b803590602001918460018302840111640100000000831117156100c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505091929192905050506101dc565b005b60008090505b60028110156102d557600060018786846002811015156101fe57fe5b6020020151868560028110151561021157fe5b6020020151868660028110151561022457fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610280573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161115156102c757600080fd5b5080806001019150506101e2565b50505050505056fea165627a7a723058200e559ecf0b4ed3978069fd9e401adb4043ef711a33a5926f0e081d7bcdf08bb80029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData2("execute(bytes32,bytes,uint8[2],bytes32[2],bytes32[2])", -#bytes32(HASH), #bytes(#bufStrict(DATA_LEN,DATA)), -#uint8(SIGV0), #uint8(SIGV1), -#bytes32(SIGR0), #bytes32(SIGR1), -#bytes32(SIGS0), #bytes32(SIGS1)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633543d4b214610046575b600080fd5b34801561005257600080fd5b506101da600480360361010081101561006a57600080fd5b81019080803590602001909291908035906020019064010000000081111561009157600080fd5b8201836020820111156100a357600080fd5b803590602001918460018302840111640100000000831117156100c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505091929192905050506101dc565b005b60008090505b60028110156102d557600060018786846002811015156101fe57fe5b6020020151868560028110151561021157fe5b6020020151868660028110151561022457fe5b602002015160405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610280573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161115156102c757600080fd5b5080806001019150506101e2565b50505050505056fea165627a7a723058200e559ecf0b4ed3978069fd9e401adb4043ef711a33a5926f0e081d7bcdf08bb80029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - - // Account address normality - andBool CONTRACT_ID >Int 0 andBool (notBool #isPrecompiledAccount(CONTRACT_ID, BYZANTIUM)) - andBool CALLEE_ID >Int 0 andBool (notBool #isPrecompiledAccount(CALLEE_ID , BYZANTIUM)) - - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV0) - andBool #rangeUInt(8, SIGV1) - andBool #rangeBytes(32, SIGR0) - andBool #rangeBytes(32, SIGR1) - andBool #rangeBytes(32, SIGS0) - andBool #rangeBytes(32, SIGS1) - andBool #range(0 <= DATA_LEN < pow16) - andBool #range(0 <= DATA < (2 ^Int (DATA_LEN *Int 8))) - andBool notBool #ecrecEmpty(#bufStrict(32, HASH), #bufStrict(32, SIGV0), #bufStrict(32, SIGR0), #bufStrict(32, SIGS0)) - andBool notBool #ecrecEmpty(#bufStrict(32, HASH), #bufStrict(32, SIGV1), #bufStrict(32, SIGR1), #bufStrict(32, SIGS1)) - -endmodule - diff --git a/tests/specs/benchmarks/ecrecoverloop02.sol b/tests/specs/benchmarks/ecrecoverloop02.sol deleted file mode 100644 index 4ac5cb3639..0000000000 --- a/tests/specs/benchmarks/ecrecoverloop02.sol +++ /dev/null @@ -1,10 +0,0 @@ -pragma solidity 0.5.0; -contract ecrecoverloop02 { - function execute(bytes32 hash, bytes memory data, - uint8[2] memory sigV, bytes32[2] memory sigR, bytes32[2] memory sigS) pure public { - for (uint i = 0; i < 2; i++) { - address recovered = ecrecover(hash, sigV[i], sigR[i], sigS[i]); - require(recovered > address(0)); - } - } -} \ No newline at end of file diff --git a/tests/specs/benchmarks/encode-keccak00-spec.k b/tests/specs/benchmarks/encode-keccak00-spec.k deleted file mode 100644 index 3b8946a614..0000000000 --- a/tests/specs/benchmarks/encode-keccak00-spec.k +++ /dev/null @@ -1,129 +0,0 @@ -requires "verification.k" - -module ENCODE-KECCAK00-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#bytes32(keccak(#encodeArgs(#bytes32(A0), #bytes32(A1))))) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063b94ccd6c14610046575b600080fd5b34801561005257600080fd5b50610083600480360381019080803560001916906020019092919080356000191690602001909291905050506100a1565b60405180826000191660001916815260200191505060405180910390f35b600082826040516020018083600019166000191681526020018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561011057805182526020820191506020810190506020830392506100eb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050929150505600a165627a7a723058204b66bf85bf879ad4b61d351300c14b3cdc5242a222464edc4d16b1d1cec329f60029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063b94ccd6c14610046575b600080fd5b34801561005257600080fd5b50610083600480360381019080803560001916906020019092919080356000191690602001909291905050506100a1565b60405180826000191660001916815260200191505060405180910390f35b600082826040516020018083600019166000191681526020018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561011057805182526020820191506020810190506020830392506100eb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050929150505600a165627a7a723058204b66bf85bf879ad4b61d351300c14b3cdc5242a222464edc4d16b1d1cec329f60029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #bytes32(A0), #bytes32(A1)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063b94ccd6c14610046575b600080fd5b34801561005257600080fd5b50610083600480360381019080803560001916906020019092919080356000191690602001909291905050506100a1565b60405180826000191660001916815260200191505060405180910390f35b600082826040516020018083600019166000191681526020018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561011057805182526020820191506020810190506020830392506100eb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050929150505600a165627a7a723058204b66bf85bf879ad4b61d351300c14b3cdc5242a222464edc4d16b1d1cec329f60029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, A0) - andBool #rangeUInt(256, A1) - -endmodule - diff --git a/tests/specs/benchmarks/encode-keccak00.sol b/tests/specs/benchmarks/encode-keccak00.sol deleted file mode 100644 index 18cf12d541..0000000000 --- a/tests/specs/benchmarks/encode-keccak00.sol +++ /dev/null @@ -1,6 +0,0 @@ -pragma solidity 0.4.24; -contract encode_keccak00 { - function execute(bytes32 a0, bytes32 a1) pure external returns(bytes32) { - return keccak256(abi.encode(a0, a1)); - } -} \ No newline at end of file diff --git a/tests/specs/benchmarks/encodepacked-keccak01-spec.k b/tests/specs/benchmarks/encodepacked-keccak01-spec.k deleted file mode 100644 index af0dc84952..0000000000 --- a/tests/specs/benchmarks/encodepacked-keccak01-spec.k +++ /dev/null @@ -1,128 +0,0 @@ -requires "verification.k" - -module ENCODEPACKED-KECCAK01-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#bytes32(keccak(1 : #encodeArgs(#uint256(A0))))) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e751f27114610046575b600080fd5b34801561005257600080fd5b5061007f6004803603602081101561006957600080fd5b8101908080359060200190929190505050610095565b6040518082815260200191505060405180910390f35b600060017f0100000000000000000000000000000000000000000000000000000000000000028260405160200180837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018281526020019250505060405160208183030381529060405280519060200120905091905056fea165627a7a723058203520bb36206a4f2e5d339c6abf58e023923d22de47e6cc79455e9b349f2c3a2a0029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e751f27114610046575b600080fd5b34801561005257600080fd5b5061007f6004803603602081101561006957600080fd5b8101908080359060200190929190505050610095565b6040518082815260200191505060405180910390f35b600060017f0100000000000000000000000000000000000000000000000000000000000000028260405160200180837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018281526020019250505060405160208183030381529060405280519060200120905091905056fea165627a7a723058203520bb36206a4f2e5d339c6abf58e023923d22de47e6cc79455e9b349f2c3a2a0029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #bytes32(A0)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063e751f27114610046575b600080fd5b34801561005257600080fd5b5061007f6004803603602081101561006957600080fd5b8101908080359060200190929190505050610095565b6040518082815260200191505060405180910390f35b600060017f0100000000000000000000000000000000000000000000000000000000000000028260405160200180837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018281526020019250505060405160208183030381529060405280519060200120905091905056fea165627a7a723058203520bb36206a4f2e5d339c6abf58e023923d22de47e6cc79455e9b349f2c3a2a0029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, A0) - -endmodule - diff --git a/tests/specs/benchmarks/encodepacked-keccak01.sol b/tests/specs/benchmarks/encodepacked-keccak01.sol deleted file mode 100644 index 8b90eacd60..0000000000 --- a/tests/specs/benchmarks/encodepacked-keccak01.sol +++ /dev/null @@ -1,6 +0,0 @@ -pragma solidity 0.5.0; -contract encodepacked_keccak01 { - function execute(bytes32 a0) pure external returns(bytes32) { - return keccak256(abi.encodePacked(byte(0x01), a0)); - } -} \ No newline at end of file diff --git a/tests/specs/benchmarks/functional-spec.k b/tests/specs/benchmarks/functional-spec.k deleted file mode 100644 index 3414928504..0000000000 --- a/tests/specs/benchmarks/functional-spec.k +++ /dev/null @@ -1,120 +0,0 @@ -requires "verification.k" - -module FUNCTIONAL-SPEC-SYNTAX - imports VERIFICATION - - syntax KItem ::= runLemma ( Step ) [symbol(runLemma)] | doneLemma ( Step ) - // ------------------------------------------------------- - rule runLemma(S) => doneLemma(S) ... - - syntax Step ::= Bytes | Int | Bool - // ---------------------------------- - -endmodule - -module FUNCTIONAL-SPEC - imports FUNCTIONAL-SPEC-SYNTAX - - claim runLemma (#range (_B [ 128 := #ecrec ( #buf ( 32 , HASH ) , #buf ( 32 , SIGV ) , #buf ( 32 , SIGR ) , #buf ( 32 , SIGS ) ) ] [ 160 := #buf ( 32 , HASH ) ] [ 192 := #buf ( 32 , SIGV ) ] [ 224 := #buf ( 32 , SIGR ) ] [ 256 := #buf ( 32 , SIGS ) ] [ 160 := #padToWidth ( 32 , #asByteStack ( #asWord ( #ecrec ( #buf ( 32 , HASH ) , #buf ( 32 , SIGV ) , #buf ( 32 , SIGR ) , #buf ( 32 , SIGS ) ) ) ) ) ] , 160 , 32 )) => doneLemma (#buf(32, RECOVERED)) ... - requires notBool #ecrecEmpty(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)) - andBool RECOVERED ==Int #asWord(#ecrec(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS))) - andBool #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV) - andBool #rangeBytes(32, SIGR) - andBool #rangeBytes(32, SIGS) - - claim runLemma ( lengthBytes ( #ecrec ( #buf ( 32 , HASH ) , #buf ( 32 , 255 &Int SIGV ) , #buf ( 32 , SIGR ) , #buf ( 32 , SIGS ) ) ) ) => doneLemma ( 0 ) ... - requires #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV) - andBool #rangeBytes(32, SIGR) - andBool #rangeBytes(32, SIGS) - andBool #ecrecEmpty ( #buf ( 32 , HASH ) , #buf ( 32 , SIGV ) , #buf ( 32 , SIGR ) , #buf ( 32 , SIGS ) ) - - claim runLemma(#encodeArgs(#bytes32(keccak(1 : #encodeArgs(#uint256(A0)))))) => doneLemma(#buf(32, keccak(#buf(1,1) +Bytes #buf(32, A0)))) ... requires #rangeUInt(256, A0) - - claim runLemma(#buf(32, maxUInt256 &Int keccak(#buf(32, maxUInt256 &Int A0) +Bytes #buf(32, maxUInt256 &Int A1)))) - => doneLemma(#buf(32, keccak(#buf(32,A0) +Bytes #buf(32,A1)))) ... - requires #rangeUInt(256, A0) - andBool #rangeUInt(256, A1) - - claim runLemma( chop( #ceil32(DATA_LEN) +Int 64 ) ) => doneLemma ( #ceil32(DATA_LEN) +Int 64 ) ... requires #range(0 <= DATA_LEN < pow16) - claim runLemma( chop( chop( #ceil32(DATA_LEN) +Int 64 ) +Int 4 ) ) => doneLemma ( #ceil32(DATA_LEN) +Int 68 ) ... requires #range(0 <= DATA_LEN < pow16) - - claim runLemma(#ceil32(DATA_LEN) +Int 292 doneLemma(false) ... requires #range(0 <= DATA_LEN < pow16) - - claim runLemma(#buf(4, 0) +Bytes (#buf(32, 6) +Bytes BA:Bytes)) => doneLemma(#buf(36, 6) +Bytes BA:Bytes) ... - - claim runLemma(#range( (112 : 190 : 104 : 75 : (#buf(32, A0) +Bytes #buf(32, A1))), 0, 32)) => doneLemma(112 : 190 : 104 : 75 : (#range(#buf(32, A0), 0, 28))) ... requires #rangeUInt(256, A0) andBool #rangeUInt(256, A1) - claim runLemma(#range( (112 : 190 : 104 : 75 : (#buf(32, A0) +Bytes #buf(32, A1))), 0, 4)) => doneLemma(112 : 190 : 104 : 75 : .Bytes) ... requires #rangeUInt(256, A0) andBool #rangeUInt(256, A1) - - claim runLemma(#asWord(112 : 190 : 104 : 74 : #buf(28, A0)) /Int pow224) => doneLemma(1891526730) ... requires #rangeUInt(224, A0) - - claim runLemma( minInt(32, lengthBytes(#ecrec(#bufStrict(32, HASH), #bufStrict(1, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS))))) => doneLemma(32) ... - requires #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV) - andBool #rangeBytes(32, SIGR) - andBool #rangeBytes(32, SIGS) - andBool notBool #ecrecEmpty(#bufStrict(32, HASH), #bufStrict(1, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)) - - claim runLemma( #range( _:Bytes [ 128 := #ecrec(#bufStrict(32, HASH), #bufStrict(1, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)) ], 128, 32)) - => doneLemma(#ecrec(#buf(32, HASH), #buf(1, SIGV), #buf(32, SIGR), #buf(32, SIGS))) ... - requires #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV) - andBool #rangeBytes(32, SIGR) - andBool #rangeBytes(32, SIGS) - andBool notBool #ecrecEmpty(#bufStrict(32, HASH), #bufStrict(1, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)) - - claim runLemma(lengthBytes(#ecrec(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)))) => doneLemma(0) ... - requires #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV) - andBool #rangeBytes(32, SIGR) - andBool #rangeBytes(32, SIGS) - andBool #ecrecEmpty(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)) - - claim runLemma(lengthBytes(#ecrec(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)))) => doneLemma(32) ... - requires #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV) - andBool #rangeBytes(32, SIGR) - andBool #rangeBytes(32, SIGS) - andBool notBool #ecrecEmpty(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)) - - - claim runLemma(0 doneLemma(true) ... - requires #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV) - andBool #rangeBytes(32, SIGR) - andBool #rangeBytes(32, SIGS) - andBool notBool #ecrecEmpty(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)) - - claim runLemma(maxUInt160 &Int #asWord(#ecrec(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)))) => doneLemma(#asWord(#ecrec(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)))) ... - requires #rangeUInt(256, HASH) - andBool #rangeUInt(8, SIGV) - andBool #rangeBytes(32, SIGR) - andBool #rangeBytes(32, SIGS) - andBool notBool #ecrecEmpty(#bufStrict(32, HASH), #bufStrict(32, SIGV), #bufStrict(32, SIGR), #bufStrict(32, SIGS)) - - claim runLemma(#range( .Bytes [ 0 := #bufStrict(0, 0) ], 0, 1)) - => doneLemma(#buf(1, 0)) ... - - claim runLemma(#range( .Bytes [ 0 := #bufStrict(2, 0) ], 0, 1)) - => doneLemma(#buf(1, 0)) ... - - claim runLemma(#range( .Bytes [ 0 := #bufStrict(10, 0) ], 5, 1)) - => doneLemma(#buf(1, 0)) ... - - claim runLemma(#range( .Bytes [ 0 := #bufStrict(5, 0) ], 0, 3)) - => doneLemma(#buf(3, 0)) ... - - claim runLemma(#range( .Bytes [ 0 := #bufStrict(100, 0) ] [ 10 := #bufStrict(N, 0) ], 10, 5 )) => - doneLemma(#range(#bufStrict(N, 0), 10 -Int 10, minInt(5, lengthBytes(#bufStrict(N, 0)) -Int (10 -Int 10)) ) +Bytes #range( .Bytes [ 0 := #bufStrict(100, 0) ], 10 +Int lengthBytes(#bufStrict(N, 0)), 5 -Int minInt(5, lengthBytes(#bufStrict(N, 0)) -Int (10 -Int 10)))) - - requires N >=Int 0 - andBool N <=Int 5 - - claim runLemma(#range( .Bytes [0 := #bufStrict(100, 0) ] [ 10 := #bufStrict(N, 0) ], 13, 5 )) => - doneLemma(#range(#bufStrict(N, 0), 13 -Int 10, minInt(5, lengthBytes(#bufStrict(N, 0)) -Int (13 -Int 10)) ) +Bytes #range( .Bytes [ 0 := #bufStrict(100, 0) ], 10 +Int lengthBytes(#bufStrict(N, 0)), 5 -Int minInt(5, lengthBytes(#bufStrict(N, 0)) -Int (13 -Int 10)))) - - requires N >=Int 5 - andBool N <=Int 10 - -endmodule diff --git a/tests/specs/benchmarks/index.html b/tests/specs/benchmarks/index.html new file mode 100644 index 0000000000..eb90722e45 --- /dev/null +++ b/tests/specs/benchmarks/index.html @@ -0,0 +1,180 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Specs generated from https://github.com/denis-bogdanas/kevm-verify-benchmarks/tree/jenkins-support, for all directories starting with 0-. Originally developed by Suhabe Bugrara.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + + + + + diff --git a/tests/specs/benchmarks/keccak00-spec.k b/tests/specs/benchmarks/keccak00-spec.k deleted file mode 100644 index 95d320c016..0000000000 --- a/tests/specs/benchmarks/keccak00-spec.k +++ /dev/null @@ -1,129 +0,0 @@ -requires "verification.k" - -module KECCAK00-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#bytes32(keccak(#buf(DATA_LEN, DATA)))) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806309c5eabe146044575b600080fd5b348015604f57600080fd5b50607a6004803603810190808035906020019082018035906020019190919293919293905050506098565b60405180826000191660001916815260200191505060405180910390f35b600082826040518083838082843782019150509250505060405180910390209050929150505600a165627a7a72305820bc7bb160225c771a020b10383aac22cc86e16ac58b8b938b40d658bde052ff6a0029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806309c5eabe146044575b600080fd5b348015604f57600080fd5b50607a6004803603810190808035906020019082018035906020019190919293919293905050506098565b60405180826000191660001916815260200191505060405180910390f35b600082826040518083838082843782019150509250505060405180910390209050929150505600a165627a7a72305820bc7bb160225c771a020b10383aac22cc86e16ac58b8b938b40d658bde052ff6a0029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #bytes(#bufStrict(DATA_LEN,DATA))) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806309c5eabe146044575b600080fd5b348015604f57600080fd5b50607a6004803603810190808035906020019082018035906020019190919293919293905050506098565b60405180826000191660001916815260200191505060405180910390f35b600082826040518083838082843782019150509250505060405180910390209050929150505600a165627a7a72305820bc7bb160225c771a020b10383aac22cc86e16ac58b8b938b40d658bde052ff6a0029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #range(0 <= DATA_LEN < pow16) - andBool #range(0 <= DATA < (2 ^Int (DATA_LEN *Int 8))) - -endmodule - diff --git a/tests/specs/benchmarks/keccak00.sol b/tests/specs/benchmarks/keccak00.sol deleted file mode 100644 index 0c1cea3b78..0000000000 --- a/tests/specs/benchmarks/keccak00.sol +++ /dev/null @@ -1,6 +0,0 @@ -pragma solidity 0.4.24; -contract keccak00 { - function execute(bytes x) pure external returns(bytes32) { - return keccak256(x); - } -} \ No newline at end of file diff --git a/tests/specs/benchmarks/overflow00-nooverflow-spec.k b/tests/specs/benchmarks/overflow00-nooverflow-spec.k deleted file mode 100644 index b7ac9b300b..0000000000 --- a/tests/specs/benchmarks/overflow00-nooverflow-spec.k +++ /dev/null @@ -1,128 +0,0 @@ -requires "verification.k" - -module OVERFLOW00-NOOVERFLOW-SPEC - imports VERIFICATION - - // fn-execute-nooverflow - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(A0 +Int 1)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50607960048036036020811015606457600080fd5b8101908080359060200190929190505050608f565b6040518082815260200191505060405180910390f35b6000806001830190508091505091905056fea165627a7a72305820fbb52294b87f58c290f1b4a624b5152e0dd074db32048a743b8ff993cc4cf6180029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50607960048036036020811015606457600080fd5b8101908080359060200190929190505050608f565b6040518082815260200191505060405180910390f35b6000806001830190508091505091905056fea165627a7a72305820fbb52294b87f58c290f1b4a624b5152e0dd074db32048a743b8ff993cc4cf6180029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #uint256(A0)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50607960048036036020811015606457600080fd5b8101908080359060200190929190505050608f565b6040518082815260200191505060405180910390f35b6000806001830190508091505091905056fea165627a7a72305820fbb52294b87f58c290f1b4a624b5152e0dd074db32048a743b8ff993cc4cf6180029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #range(0 <= A0 < pow256 -Int 1) - -endmodule - diff --git a/tests/specs/benchmarks/overflow00-overflow-spec.k b/tests/specs/benchmarks/overflow00-overflow-spec.k deleted file mode 100644 index e8e510df58..0000000000 --- a/tests/specs/benchmarks/overflow00-overflow-spec.k +++ /dev/null @@ -1,128 +0,0 @@ -requires "verification.k" - -module OVERFLOW00-OVERFLOW-SPEC - imports VERIFICATION - - // fn-execute-overflow - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(0)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50607960048036036020811015606457600080fd5b8101908080359060200190929190505050608f565b6040518082815260200191505060405180910390f35b6000806001830190508091505091905056fea165627a7a72305820fbb52294b87f58c290f1b4a624b5152e0dd074db32048a743b8ff993cc4cf6180029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50607960048036036020811015606457600080fd5b8101908080359060200190929190505050608f565b6040518082815260200191505060405180910390f35b6000806001830190508091505091905056fea165627a7a72305820fbb52294b87f58c290f1b4a624b5152e0dd074db32048a743b8ff993cc4cf6180029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #uint256(A0)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50607960048036036020811015606457600080fd5b8101908080359060200190929190505050608f565b6040518082815260200191505060405180910390f35b6000806001830190508091505091905056fea165627a7a72305820fbb52294b87f58c290f1b4a624b5152e0dd074db32048a743b8ff993cc4cf6180029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool A0 ==Int pow256 -Int 1 - -endmodule - diff --git a/tests/specs/benchmarks/overflow00.sol b/tests/specs/benchmarks/overflow00.sol deleted file mode 100644 index 302947ab6f..0000000000 --- a/tests/specs/benchmarks/overflow00.sol +++ /dev/null @@ -1,7 +0,0 @@ -pragma solidity 0.5.0; -contract overflow00 { - function execute(uint a0) public returns(uint) { - uint n = a0 + 1; - return n; - } -} \ No newline at end of file diff --git a/tests/specs/benchmarks/requires01-a0gt0-spec.k b/tests/specs/benchmarks/requires01-a0gt0-spec.k deleted file mode 100644 index 8b7a20e6e5..0000000000 --- a/tests/specs/benchmarks/requires01-a0gt0-spec.k +++ /dev/null @@ -1,125 +0,0 @@ -requires "verification.k" - -module REQUIRES01-A0GT0-SPEC - imports VERIFICATION - - // fn-execute-a0gt0 - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(5)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50606c6004803603810190808035906020019092919050505060ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000808211151560bd57600080fd5b600590509190505600a165627a7a72305820885b6ddc678a06d1bd68f28d6a516e4fb72fb2d325ac780ffc7605ac95a408390029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50606c6004803603810190808035906020019092919050505060ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000808211151560bd57600080fd5b600590509190505600a165627a7a72305820885b6ddc678a06d1bd68f28d6a516e4fb72fb2d325ac780ffc7605ac95a408390029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #uint256(A0)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50606c6004803603810190808035906020019092919050505060ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000808211151560bd57600080fd5b600590509190505600a165627a7a72305820885b6ddc678a06d1bd68f28d6a516e4fb72fb2d325ac780ffc7605ac95a408390029") - _S - _OS - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, A0) - andBool A0 >Int 0 - -endmodule - diff --git a/tests/specs/benchmarks/requires01-a0le0-spec.k b/tests/specs/benchmarks/requires01-a0le0-spec.k deleted file mode 100644 index 8d53fc557a..0000000000 --- a/tests/specs/benchmarks/requires01-a0le0-spec.k +++ /dev/null @@ -1,124 +0,0 @@ -requires "verification.k" - -module REQUIRES01-A0LE0-SPEC - imports VERIFICATION - - // fn-execute-a0le0 - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => EVMC_REVERT - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50606c6004803603810190808035906020019092919050505060ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000808211151560bd57600080fd5b600590509190505600a165627a7a72305820885b6ddc678a06d1bd68f28d6a516e4fb72fb2d325ac780ffc7605ac95a408390029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50606c6004803603810190808035906020019092919050505060ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000808211151560bd57600080fd5b600590509190505600a165627a7a72305820885b6ddc678a06d1bd68f28d6a516e4fb72fb2d325ac780ffc7605ac95a408390029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #uint256(A0)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50606c6004803603810190808035906020019092919050505060ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000808211151560bd57600080fd5b600590509190505600a165627a7a72305820885b6ddc678a06d1bd68f28d6a516e4fb72fb2d325ac780ffc7605ac95a408390029") - _S - _OS - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, A0) - andBool A0 <=Int 0 - -endmodule diff --git a/tests/specs/benchmarks/requires01.sol b/tests/specs/benchmarks/requires01.sol deleted file mode 100644 index bc5520c18d..0000000000 --- a/tests/specs/benchmarks/requires01.sol +++ /dev/null @@ -1,8 +0,0 @@ -pragma solidity 0.4.24; -contract requires01 { - function execute(uint256 a0) public returns (address) { - require(a0 > 0); - return 5; - } -} - diff --git a/tests/specs/benchmarks/staticarray00-spec.k b/tests/specs/benchmarks/staticarray00-spec.k deleted file mode 100644 index 444835f06a..0000000000 --- a/tests/specs/benchmarks/staticarray00-spec.k +++ /dev/null @@ -1,130 +0,0 @@ -requires "verification.k" - -module STATICARRAY00-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(A0)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806370be684b146044575b600080fd5b348015604f57600080fd5b506091600480360381019080806060019060038060200260405190810160405280929190826003602002808284378201915050505050919291929050505060a7565b6040518082815260200191505060405180910390f35b600081600060038110151560b757fe5b602002015190509190505600a165627a7a72305820f933900bbad49f9329cff0a7f38c1eafbf37ee141efe28f6296e158e1fcb137a0029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806370be684b146044575b600080fd5b348015604f57600080fd5b506091600480360381019080806060019060038060200260405190810160405280929190826003602002808284378201915050505050919291929050505060a7565b6040518082815260200191505060405180910390f35b600081600060038110151560b757fe5b602002015190509190505600a165627a7a72305820f933900bbad49f9329cff0a7f38c1eafbf37ee141efe28f6296e158e1fcb137a0029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData2("execute(uint256[3])", #uint256(A0), #uint256(A1), #uint256(A2)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806370be684b146044575b600080fd5b348015604f57600080fd5b506091600480360381019080806060019060038060200260405190810160405280929190826003602002808284378201915050505050919291929050505060a7565b6040518082815260200191505060405180910390f35b600081600060038110151560b757fe5b602002015190509190505600a165627a7a72305820f933900bbad49f9329cff0a7f38c1eafbf37ee141efe28f6296e158e1fcb137a0029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, A0) - andBool #rangeUInt(256, A1) - andBool #rangeUInt(256, A2) - -endmodule - diff --git a/tests/specs/benchmarks/staticarray00.sol b/tests/specs/benchmarks/staticarray00.sol deleted file mode 100644 index c2b8149a93..0000000000 --- a/tests/specs/benchmarks/staticarray00.sol +++ /dev/null @@ -1,7 +0,0 @@ -pragma solidity 0.4.24; -contract staticarray00 { - function execute(uint[3] a) public returns (uint) { - return a[0]; - } -} - diff --git a/tests/specs/benchmarks/staticloop00-a0lt10-spec.k b/tests/specs/benchmarks/staticloop00-a0lt10-spec.k deleted file mode 100644 index 8353a21fa6..0000000000 --- a/tests/specs/benchmarks/staticloop00-a0lt10-spec.k +++ /dev/null @@ -1,128 +0,0 @@ -requires "verification.k" - -module STATICLOOP00-A0LT10-SPEC - imports VERIFICATION - - // fn-execute-a0lt10 - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(A0 +Int 3)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50607960048036036020811015606457600080fd5b8101908080359060200190929190505050608f565b6040518082815260200191505060405180910390f35b600080829050600a8310151560a357600080fd5b60008090505b600381101560c2578082019150808060010191505060a9565b508091505091905056fea165627a7a72305820e9eae4d836605e8f28df860b8f590e6cd933ddcbf111d99767c764aa99f093900029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50607960048036036020811015606457600080fd5b8101908080359060200190929190505050608f565b6040518082815260200191505060405180910390f35b600080829050600a8310151560a357600080fd5b60008090505b600381101560c2578082019150808060010191505060a9565b508091505091905056fea165627a7a72305820e9eae4d836605e8f28df860b8f590e6cd933ddcbf111d99767c764aa99f093900029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", #uint256(A0)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063fe0d94c1146044575b600080fd5b348015604f57600080fd5b50607960048036036020811015606457600080fd5b8101908080359060200190929190505050608f565b6040518082815260200191505060405180910390f35b600080829050600a8310151560a357600080fd5b60008090505b600381101560c2578082019150808060010191505060a9565b508091505091905056fea165627a7a72305820e9eae4d836605e8f28df860b8f590e6cd933ddcbf111d99767c764aa99f093900029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #range(0 <= A0 < 10) - -endmodule - diff --git a/tests/specs/benchmarks/staticloop00.sol b/tests/specs/benchmarks/staticloop00.sol deleted file mode 100644 index 27163a9646..0000000000 --- a/tests/specs/benchmarks/staticloop00.sol +++ /dev/null @@ -1,11 +0,0 @@ -pragma solidity 0.5.0; -contract staticloop00 { - function execute(uint a0) pure external returns(uint256) { - uint sum = a0; - require (a0 < 10); - for (uint i = 0; i < 3; i++) { - sum += i; - } - return sum; - } -} diff --git a/tests/specs/benchmarks/storagevar00-spec.k b/tests/specs/benchmarks/storagevar00-spec.k deleted file mode 100644 index 9b86032228..0000000000 --- a/tests/specs/benchmarks/storagevar00-spec.k +++ /dev/null @@ -1,121 +0,0 @@ -requires "verification.k" - -module STORAGEVAR00-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(N)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b6000805490509056fea165627a7a7230582042a42ab720fca3a1db0ba7ac19c662cf1a6fb8fdb252593eb42de55a510e09470029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b6000805490509056fea165627a7a7230582042a42ab720fca3a1db0ba7ac19c662cf1a6fb8fdb252593eb42de55a510e09470029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", .TypedArgs) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b6000805490509056fea165627a7a7230582042a42ab720fca3a1db0ba7ac19c662cf1a6fb8fdb252593eb42de55a510e09470029") - S - S - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - _S - _OS - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, N) - andBool #lookup(S, #hashedLocation("Solidity", 0, .IntList)) ==Int N - -endmodule - diff --git a/tests/specs/benchmarks/storagevar00.sol b/tests/specs/benchmarks/storagevar00.sol deleted file mode 100644 index c41eef75bf..0000000000 --- a/tests/specs/benchmarks/storagevar00.sol +++ /dev/null @@ -1,8 +0,0 @@ -pragma solidity 0.5.0; -contract storagevar00 { - uint private n; - - function execute() view public returns(uint) { - return n; - } -} \ No newline at end of file diff --git a/tests/specs/benchmarks/storagevar01-spec.k b/tests/specs/benchmarks/storagevar01-spec.k deleted file mode 100644 index 2a64337cac..0000000000 --- a/tests/specs/benchmarks/storagevar01-spec.k +++ /dev/null @@ -1,123 +0,0 @@ -requires "verification.k" - -module STORAGEVAR01-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(5)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b6000600560008190555060005490509056fea165627a7a723058208e118da62d2a0da493acb1e41710779922db5b5cf40e1413cbe69a7d2933c9a50029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b6000600560008190555060005490509056fea165627a7a723058208e118da62d2a0da493acb1e41710779922db5b5cf40e1413cbe69a7d2933c9a50029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", .TypedArgs) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ => ?_ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b6000600560008190555060005490509056fea165627a7a723058208e118da62d2a0da493acb1e41710779922db5b5cf40e1413cbe69a7d2933c9a50029") - S => S [ #hashedLocation("Solidity", 0, .IntList) <- 5 ] - _OS => ?_OS - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - -endmodule - diff --git a/tests/specs/benchmarks/storagevar01.sol b/tests/specs/benchmarks/storagevar01.sol deleted file mode 100644 index 0fdc8074d6..0000000000 --- a/tests/specs/benchmarks/storagevar01.sol +++ /dev/null @@ -1,9 +0,0 @@ -pragma solidity 0.5.0; -contract storagevar01 { - uint private n; - - function execute() public returns(uint) { - n = 5; - return n; - } -} \ No newline at end of file diff --git a/tests/specs/benchmarks/storagevar02-nooverflow-spec.k b/tests/specs/benchmarks/storagevar02-nooverflow-spec.k deleted file mode 100644 index c5ce372e8e..0000000000 --- a/tests/specs/benchmarks/storagevar02-nooverflow-spec.k +++ /dev/null @@ -1,126 +0,0 @@ -requires "verification.k" - -module STORAGEVAR02-NOOVERFLOW-SPEC - imports VERIFICATION - - // fn-execute-nooverflow - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(N0 +Int 1)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b600060016000540160008190555060005490509056fea165627a7a7230582084ad795d13123f60bc7fd2a18dba66eb8d320ddea8765847f2ae5982179470600029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b600060016000540160008190555060005490509056fea165627a7a7230582084ad795d13123f60bc7fd2a18dba66eb8d320ddea8765847f2ae5982179470600029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", .TypedArgs) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ => ?_ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b600060016000540160008190555060005490509056fea165627a7a7230582084ad795d13123f60bc7fd2a18dba66eb8d320ddea8765847f2ae5982179470600029") - S => S [ #hashedLocation("Solidity", 0, .IntList) <- N0 +Int 1 ] - _OS => ?_OS - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #range(0 <= N0 < pow256) - andBool #range(0 <= N0 +Int 1 < pow256) - andBool #lookup(S, #hashedLocation("Solidity", 0, .IntList)) ==Int N0 - -endmodule - diff --git a/tests/specs/benchmarks/storagevar02-overflow-spec.k b/tests/specs/benchmarks/storagevar02-overflow-spec.k deleted file mode 100644 index 93938a8360..0000000000 --- a/tests/specs/benchmarks/storagevar02-overflow-spec.k +++ /dev/null @@ -1,124 +0,0 @@ -requires "verification.k" - -module STORAGEVAR02-OVERFLOW-SPEC - imports VERIFICATION - - // fn-execute-overflow - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(0)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b600060016000540160008190555060005490509056fea165627a7a7230582084ad795d13123f60bc7fd2a18dba66eb8d320ddea8765847f2ae5982179470600029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b600060016000540160008190555060005490509056fea165627a7a7230582084ad795d13123f60bc7fd2a18dba66eb8d320ddea8765847f2ae5982179470600029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", .TypedArgs) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ => ?_ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b600060016000540160008190555060005490509056fea165627a7a7230582084ad795d13123f60bc7fd2a18dba66eb8d320ddea8765847f2ae5982179470600029") - S => S [ #hashedLocation("Solidity", 0, .IntList) <- 0 ] - _OS => ?_OS - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #lookup(S, #hashedLocation("Solidity", 0, .IntList)) ==Int pow256 -Int 1 - -endmodule - diff --git a/tests/specs/benchmarks/storagevar02.sol b/tests/specs/benchmarks/storagevar02.sol deleted file mode 100644 index 03c1daa7b0..0000000000 --- a/tests/specs/benchmarks/storagevar02.sol +++ /dev/null @@ -1,9 +0,0 @@ -pragma solidity 0.5.0; -contract storagevar02 { - uint private n; - - function execute() public returns(uint) { - n = n + 1; - return n; - } -} \ No newline at end of file diff --git a/tests/specs/benchmarks/storagevar03-spec.k b/tests/specs/benchmarks/storagevar03-spec.k deleted file mode 100644 index 967b66c0b5..0000000000 --- a/tests/specs/benchmarks/storagevar03-spec.k +++ /dev/null @@ -1,123 +0,0 @@ -requires "verification.k" - -module STORAGEVAR03-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => EVMC_REVERT - _ - _ - _ => ?_ - - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b6000600560008190555060001515608257600080fd5b9056fea165627a7a723058206c2e2e763fa3e914d5806ac22d4cf3bd0ff53cd57740965d5e5d05934668a9110029") - #computeValidJumpDests(#parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b6000600560008190555060001515608257600080fd5b9056fea165627a7a723058206c2e2e763fa3e914d5806ac22d4cf3bd0ff53cd57740965d5e5d05934668a9110029")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData("execute", .TypedArgs) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ => ?_ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _ // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361461954146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b6000600560008190555060001515608257600080fd5b9056fea165627a7a723058206c2e2e763fa3e914d5806ac22d4cf3bd0ff53cd57740965d5e5d05934668a9110029") - _S => ?_S - _OS - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - -endmodule - diff --git a/tests/specs/benchmarks/storagevar03.sol b/tests/specs/benchmarks/storagevar03.sol deleted file mode 100644 index 9227455470..0000000000 --- a/tests/specs/benchmarks/storagevar03.sol +++ /dev/null @@ -1,10 +0,0 @@ -pragma solidity 0.5.0; -contract storagevar03 { - uint private n; - - function execute() public returns(uint) { - n = 5; - require(false); - } -} - diff --git a/tests/specs/benchmarks/structarg00-spec.k b/tests/specs/benchmarks/structarg00-spec.k deleted file mode 100644 index 0b95ce87f1..0000000000 --- a/tests/specs/benchmarks/structarg00-spec.k +++ /dev/null @@ -1,128 +0,0 @@ -requires "verification.k" - -module STRUCTARG00-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#uint256(A0)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x6080604052600436106100245760003560e01c63ffffffff168063dd77d08e14610029575b600080fd5b34801561003557600080fd5b506100496100443660046100c9565b61005f565b60405161005691906100fe565b60405180910390f35b5190565b60006040828403121561007557600080fd5b61007f6040610112565b9050600061008d84846100aa565b825250602061009e848483016100bd565b60208301525092915050565b60006100b68235610139565b9392505050565b60006100b6823561013c565b6000604082840312156100db57600080fd5b60006100e78484610063565b949350505050565b6100f881610139565b82525050565b6020810161010c82846100ef565b92915050565b60405181810167ffffffffffffffff8111828210171561013157600080fd5b604052919050565b90565b60ff16905600a265627a7a723058206cff7fc5f1eee5a02118c03209b136de08c05265f52541d16a578e6ff695a84b6c6578706572696d656e74616cf50037") - #computeValidJumpDests(#parseByteStack("0x6080604052600436106100245760003560e01c63ffffffff168063dd77d08e14610029575b600080fd5b34801561003557600080fd5b506100496100443660046100c9565b61005f565b60405161005691906100fe565b60405180910390f35b5190565b60006040828403121561007557600080fd5b61007f6040610112565b9050600061008d84846100aa565b825250602061009e848483016100bd565b60208301525092915050565b60006100b68235610139565b9392505050565b60006100b6823561013c565b6000604082840312156100db57600080fd5b60006100e78484610063565b949350505050565b6100f881610139565b82525050565b6020810161010c82846100ef565b92915050565b60405181810167ffffffffffffffff8111828210171561013157600080fd5b604052919050565b90565b60ff16905600a265627a7a723058206cff7fc5f1eee5a02118c03209b136de08c05265f52541d16a578e6ff695a84b6c6578706572696d656e74616cf50037")) - CONTRACT_ID // this - MSG_SENDER // msg.sender - #abiCallData2("execute((uint256,uint8))", #tuple(#uint256(A0), #uint8(A1), .TypedArgs)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ // tx.origin - _BLOCK_HASHES // block.blockhash - - _ - _ - _ // block.coinbase - _ - _ - _ - _ - _ - BLOCK_NUM // block.number - _ - _ - NOW // now = block.timestamp - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x60806040526004361060225760003560e01c63ffffffff1680638ef16cd9146027575b600080fd5b348015603257600080fd5b5060408051602060048035808201358381028086018501909652808552607995369593946024949385019291829185019084908082843750949750608b9650505050505050565b60408051918252519081900360200190f35b51905600a165627a7a72305820033b07c141d79055a0848aadceb745344b5e3a1fb5eff1292fc547e38d5bbe2a0029") - -_ - - -_ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - - - // precompiled account for ECCREC - 1 - 0 - .Bytes - .Map - .Map - 0 - - - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, NOW) - andBool #rangeUInt(128, BLOCK_NUM) // Solidity - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeAddress(MSG_SENDER) - andBool #rangeUInt(256, A0) - andBool #rangeUInt(8, A1) - -endmodule diff --git a/tests/specs/benchmarks/structarg00.sol b/tests/specs/benchmarks/structarg00.sol deleted file mode 100644 index f2a1045fcc..0000000000 --- a/tests/specs/benchmarks/structarg00.sol +++ /dev/null @@ -1,13 +0,0 @@ -pragma solidity 0.4.24; -pragma experimental ABIEncoderV2; - -contract structarg00 { - struct Var { - uint a; - uint8 b; - } - - function execute(Var p) public returns (uint) { - return p.a; - } -} diff --git a/tests/specs/benchmarks/structarg01-spec.k b/tests/specs/benchmarks/structarg01-spec.k deleted file mode 100644 index caa28bedcf..0000000000 --- a/tests/specs/benchmarks/structarg01-spec.k +++ /dev/null @@ -1,114 +0,0 @@ -requires "verification.k" - -module STRUCTARG01-SPEC - imports VERIFICATION - - // fn-execute - claim - (#execute => #halt) ~> _ - 1 - NORMAL - ISTANBUL - true - - - _ => #encodeArgs(#bytes(A0)) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - #parseByteStack("0x6080604052600436106100245760003560e01c63ffffffff1680634a39f70214610029575b600080fd5b34801561003557600080fd5b5061004961004436600461013c565b61005f565b60405161005691906101ae565b60405180910390f35b5190565b6000601f8201831361007457600080fd5b8135610087610082826101e6565b6101bf565b915080825260208301602083018583830111156100a357600080fd5b6100ae838284610211565b50505092915050565b6000606082840312156100c957600080fd5b6100d360606101bf565b9050813567ffffffffffffffff8111156100ec57600080fd5b6100f884828501610063565b825250602061010984848301610129565b602083015250604061011d84828501610129565b60408301525092915050565b6000610135823561020e565b9392505050565b60006020828403121561014e57600080fd5b813567ffffffffffffffff81111561016557600080fd5b610171848285016100b7565b949350505050565b60006101848261005f565b80845261019881602086016020860161021d565b6101a18161024d565b9093016020019392505050565b602080825281016101358184610179565b60405181810167ffffffffffffffff811182821017156101de57600080fd5b604052919050565b600067ffffffffffffffff8211156101fd57600080fd5b506020601f91909101601f19160190565b90565b82818337506000910152565b60005b83811015610238578181015183820152602001610220565b83811115610247576000848401525b50505050565b601f01601f1916905600a265627a7a72305820e24054b606276c885165f6ec29d3a2833d528d07d72783ef5f0277b5a6906d196c6578706572696d656e74616cf50037") - #computeValidJumpDests(#parseByteStack("0x6080604052600436106100245760003560e01c63ffffffff1680634a39f70214610029575b600080fd5b34801561003557600080fd5b5061004961004436600461013c565b61005f565b60405161005691906101ae565b60405180910390f35b5190565b6000601f8201831361007457600080fd5b8135610087610082826101e6565b6101bf565b915080825260208301602083018583830111156100a357600080fd5b6100ae838284610211565b50505092915050565b6000606082840312156100c957600080fd5b6100d360606101bf565b9050813567ffffffffffffffff8111156100ec57600080fd5b6100f884828501610063565b825250602061010984848301610129565b602083015250604061011d84828501610129565b60408301525092915050565b6000610135823561020e565b9392505050565b60006020828403121561014e57600080fd5b813567ffffffffffffffff81111561016557600080fd5b610171848285016100b7565b949350505050565b60006101848261005f565b80845261019881602086016020860161021d565b6101a18161024d565b9093016020019392505050565b602080825281016101358184610179565b60405181810167ffffffffffffffff811182821017156101de57600080fd5b604052919050565b600067ffffffffffffffff8211156101fd57600080fd5b506020601f91909101601f19160190565b90565b82818337506000910152565b60005b83811015610238578181015183820152602001610220565b83811115610247576000848401525b50505050565b601f01601f1916905600a265627a7a72305820e24054b606276c885165f6ec29d3a2833d528d07d72783ef5f0277b5a6906d196c6578706572696d656e74616cf50037")) - CONTRACT_ID // this - CALLEE_ID // msg.sender - #abiCallData2("execute((bytes,uint256,uint256))", #tuple(#bytes(A0), #uint256(A1), #uint256(A2), .TypedArgs)) // msg.data - 0 // msg.value - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - false // NOTE: non-static call - CD - - - _ - _ - _ - _ => ?_ - _ => ?_ - - _ - _ - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - _ - - - - CONTRACT_ID - CONTRACT_BAL - #parseByteStack("0x6080604052600436106100245760003560e01c63ffffffff1680634a39f70214610029575b600080fd5b34801561003557600080fd5b5061004961004436600461013c565b61005f565b60405161005691906101ae565b60405180910390f35b5190565b6000601f8201831361007457600080fd5b8135610087610082826101e6565b6101bf565b915080825260208301602083018583830111156100a357600080fd5b6100ae838284610211565b50505092915050565b6000606082840312156100c957600080fd5b6100d360606101bf565b9050813567ffffffffffffffff8111156100ec57600080fd5b6100f884828501610063565b825250602061010984848301610129565b602083015250604061011d84828501610129565b60408301525092915050565b6000610135823561020e565b9392505050565b60006020828403121561014e57600080fd5b813567ffffffffffffffff81111561016557600080fd5b610171848285016100b7565b949350505050565b60006101848261005f565b80845261019881602086016020860161021d565b6101a18161024d565b9093016020019392505050565b602080825281016101358184610179565b60405181810167ffffffffffffffff811182821017156101de57600080fd5b604052919050565b600067ffffffffffffffff8211156101fd57600080fd5b506020601f91909101601f19160190565b90565b82818337506000910152565b60005b83811015610238578181015183820152602001610220565b83811115610247576000848401525b50505050565b601f01601f1916905600a265627a7a72305820e24054b606276c885165f6ec29d3a2833d528d07d72783ef5f0277b5a6906d196c6578706572696d656e74616cf50037") - - _ - - - _ - - CONTRACT_NONCE - - - - CALLEE_ID - CALLEE_BAL - _ - - _ - - - _ - - CALLEE_NONCE - - ... - - _ - _ - _ - - - requires #rangeAddress(CONTRACT_ID) - andBool #rangeAddress(CALLEE_ID) - andBool #rangeUInt(256, CONTRACT_BAL) - andBool #rangeUInt(256, CALLEE_BAL) - andBool #rangeNonce(CONTRACT_NONCE) - andBool #rangeNonce(CALLEE_NONCE) - andBool #range(0 <= CD < 1024) - andBool #rangeUInt(256, A1) - andBool #rangeUInt(256, A2) - andBool lengthBytes(A0) ==Int 100 - -endmodule diff --git a/tests/specs/benchmarks/structarg01.sol b/tests/specs/benchmarks/structarg01.sol deleted file mode 100644 index 5edc767e27..0000000000 --- a/tests/specs/benchmarks/structarg01.sol +++ /dev/null @@ -1,14 +0,0 @@ -pragma solidity 0.4.24; -pragma experimental ABIEncoderV2; - -contract structarg01 { - struct Var { - bytes a; - uint b; - uint256 c; - } - - function execute(Var p) public returns (uint) { - return p.a; - } -} diff --git a/tests/specs/benchmarks/verification.k b/tests/specs/benchmarks/verification.k deleted file mode 100644 index 5421baf819..0000000000 --- a/tests/specs/benchmarks/verification.k +++ /dev/null @@ -1,154 +0,0 @@ -requires "lemmas/lemmas.k" -requires "edsl.md" - -module VERIFICATION-COMMON - imports LEMMAS - imports EDSL - - // ######################## - // Ecrecover - // ######################## - - //Symbolic predicate representing whether output of #ecrec is empty. No implementation. - syntax Bool ::= #ecrecEmpty( Bytes , Bytes , Bytes , Bytes ) [function, no-evaluators, smtlib(ecrecEmpty)] - // ---------------------------------------------------------------------------------------------------------- - rule lengthBytes(#ecrec(HASH, SIGV, SIGR, SIGS)) => 32 requires notBool #ecrecEmpty(HASH, SIGV, SIGR, SIGS) [simplification] - rule lengthBytes(#ecrec(HASH, SIGV, SIGR, SIGS)) => 0 requires #ecrecEmpty(HASH, SIGV, SIGR, SIGS) [simplification] - - rule #asWord(#ecrec(HASH, SIGV, SIGR, SIGS)) => 0 requires #ecrecEmpty(HASH, SIGV, SIGR, SIGS) [simplification] - rule 0 true requires notBool #ecrecEmpty(HASH, SIGV, SIGR, SIGS) [simplification] - rule 0 <=Int #asWord(#ecrec(_ , _ , _ , _ )) => true [simplification] - rule #asWord(#ecrec(_ , _ , _ , _ )) true [simplification] - - rule #Ceil( #ecrec(HASH, SIGV, SIGR, SIGS) ) => #Top - requires #ecrecEmpty(HASH, SIGV, SIGR, SIGS) [simplification] - - rule #Ceil( #ecrec(HASH, SIGV, SIGR, SIGS) ) => #Top - requires notBool #ecrecEmpty(HASH, SIGV, SIGR, SIGS) [simplification] - -endmodule - -module VERIFICATION - imports VERIFICATION-COMMON - imports VERIFICATION-HASKELL - - // ######################## - // Map Reasoning - // ######################## - - rule M:Map [ K1 <- _ ] [ K2 <- V2 ] => M [ K1 <- V2 ] requires K1 ==Int K2 [simplification] - rule M:Map [ K1 <- V1 ] [ K2 <- V2 ] => M [ K2 <- V2 ] [ K1 <- V1 ] requires K2 0 requires NEW =/=Int 0 [simplification] - - // ######################## - // ABI Encoding - // ######################## - - syntax Bytes ::= #abiCallData2 ( String , TypedArgs ) [function] - - rule #abiCallData2(FSIG, ARGS) => #parseByteStack(substrString(Keccak256(String2Bytes(FSIG)), 0, 8)) +Bytes #encodeArgs(ARGS) - - rule chop(I) => 0 requires I ==Int pow256 [simplification] - - // ######################## - // Memory Usage - // ######################## - - rule #memoryUsageUpdate(#memoryUsageUpdate(MU, START0, WIDTH0), START1, WIDTH1) => #memoryUsageUpdate(MU, START0, WIDTH0) requires START1 +Int WIDTH1 <=Int START0 +Int WIDTH0 andBool 0 #memoryUsageUpdate(MU, START1, WIDTH1) requires START0 +Int WIDTH0 true [simplification] - - // ######################## - // Buffer Reasoning - // ######################## - - rule #sizeWordStack(WS, N) #sizeWordStack(WS, 0) +Int N SIZELIMIT SIZELIMIT #sizeWordStack(WS, 0) +Int N <=Int SIZE requires N =/=Int 0 [simplification] - - // ######################## - // Range - // ######################## - - rule 0 <=Int (_X modInt _Y) => true [simplification] - rule (_X modInt Y) true requires Y >Int 0 [simplification] - - rule 0 <=Int 2 ^Int _X => true [simplification] - rule 2 ^Int X true requires X true requires #rangeUInt(256, X) andBool #rangeUInt(256, Y) [simplification] - rule X &Int Y true requires #rangeUInt(256, X) andBool #rangeUInt(256, Y) [simplification] - - rule 0 <=Int X |Int Y => true requires #rangeUInt(256, X) andBool #rangeUInt(256, Y) [simplification] - rule X |Int Y true requires #rangeUInt(256, X) andBool #rangeUInt(256, Y) [simplification] - - rule 0 <=Int #blockhash(_, _, _, _) => true [simplification] - rule #blockhash(_, _, _, _) true [simplification] - - rule 0 <=Int X xorInt maxUInt256 => true requires #rangeUInt(256, X) [simplification] - rule X xorInt maxUInt256 true requires #rangeUInt(256, X) [simplification] - - // ######################## - // Simplification - // ######################## - - rule #range( _M [ N := #buf(WIDTH, DATA) ], N, WIDTH ) => #buf(WIDTH, DATA) [simplification] - - rule #asWord(WS) &Int maxUInt256 => #asWord(WS) [simplification] - - rule maxUInt256 &Int X => X requires #rangeUInt(256, X) [simplification] - - // 2^256 - 2^160 = 0xff..ff00..00 (96 1's followed by 160 0's) - rule notMaxUInt160 &Int ADDR => 0 - requires #rangeAddress(ADDR) - [simplification] - - rule chop((ADDR &Int maxUInt160) modInt pow160) => ADDR - requires #rangeAddress(ADDR) - [simplification] - - // ######################## - // Arithmetic - // ######################## - - rule 2 ^%Int X pow256 => 2 ^Int X requires 0 <=Int X andBool X (X /Int 32) *Int 32 requires 0 <=Int X [simplification] - - rule X +Int Y true requires X <=Int pow16 andBool Y true requires 0 <=Int X [simplification] - rule #ceil32(X) false requires 0 <=Int X [simplification] - rule #ceil32(X) <=Int pow16 => true requires 0 <=Int X andBool X <=Int pow16 [simplification] - -endmodule - -module VERIFICATION-HASKELL [symbolic] - imports VERIFICATION-COMMON - - // ######################## - // Buffer Reasoning - // ######################## - - rule BA1 +Bytes (BA2 +Bytes BA3) => (BA1 +Bytes BA2) +Bytes BA3 [concrete(BA1, BA2), simplification] - - rule maxUInt160 &Int Y => Y requires 0 <=Int Y andBool Y <=Int maxUInt160 [simplification] - - rule ( lengthBytes(#ecrec( HASH, SIGV, SIGR, SIGS )) ==Int 0 ) => #ecrecEmpty ( HASH, SIGV, SIGR, SIGS ) [simplification] - rule ( lengthBytes(#ecrec( HASH, SIGV, SIGR, SIGS )) ==Int 32 ) => notBool ( #ecrecEmpty ( HASH, SIGV, SIGR, SIGS )) [simplification] - - rule ( lengthBytes(#ecrec( _, _, _, _ )) <=Int K ) => true requires 32 <=Int K [simplification] - - rule 0 notBool ( #ecrecEmpty ( HASH, SIGV, SIGR, SIGS ) ) [simplification] - -endmodule diff --git a/tests/specs/bihu/collectToken-spec.k b/tests/specs/bihu/collectToken-spec.k deleted file mode 100644 index 0b73824d2e..0000000000 --- a/tests/specs/bihu/collectToken-spec.k +++ /dev/null @@ -1,336 +0,0 @@ -requires "verification.k" - -module COLLECTTOKEN-SPEC - imports VERIFICATION - - // collectToken - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _ => ?_ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630e4aed3f1461007257806340ba126b1461009b578063787e9137146100db578063b69ef8a814610104578063b93e2cdb1461012d575b600080fd5b341561007d57600080fd5b610085610171565b6040518082815260200191505060405180910390f35b34156100a657600080fd5b6100c56004808035906020019091908035906020019091905050610176565b6040518082815260200191505060405180910390f35b34156100e657600080fd5b6100ee6101a8565b6040518082815260200191505060405180910390f35b341561010f57600080fd5b6101176101ae565b6040518082815260200191505060405180910390f35b341561013857600080fd5b61015760048080359060200190919080359060200190919050506101b4565b604051808215151515815260200191505060405180910390f35b600a81565b600081831061019d576301e1338061018e84846102bc565b81151561019757fe5b046101a0565b60005b905092915050565b60005481565b60015481565b600080600080600080600080888a1115156101ce57600080fd5b6101dc6000546001546102d5565b96508695506101eb8a8a610176565b9450600093505b848410156102215761021261020b87600a6064036102ee565b606461031c565b955083806001019450506101f2565b61023661022f87600a6102ee565b606461031c565b9250610260610256846301e133808c8e0381151561025057fe5b066102ee565b6301e1338061031c565b915085870382019050610275816000546102bc565b90506001548111156102875760015490505b610293600054826102d5565b6000819055506102a5600154826102bc565b600181905550600197505050505050505092915050565b600082828403915081111515156102cf57fe5b92915050565b600082828401915081101515156102e857fe5b92915050565b60008183029050600083148061030e575081838281151561030b57fe5b04145b151561031657fe5b92915050565b6000818381151561032957fe5b049050929150505600a165627a7a72305820d8edeeb44c8346eca139385cfaecddeb8b02fcc380c3b54473746e8103ff62e70029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630e4aed3f1461007257806340ba126b1461009b578063787e9137146100db578063b69ef8a814610104578063b93e2cdb1461012d575b600080fd5b341561007d57600080fd5b610085610171565b6040518082815260200191505060405180910390f35b34156100a657600080fd5b6100c56004808035906020019091908035906020019091905050610176565b6040518082815260200191505060405180910390f35b34156100e657600080fd5b6100ee6101a8565b6040518082815260200191505060405180910390f35b341561010f57600080fd5b6101176101ae565b6040518082815260200191505060405180910390f35b341561013857600080fd5b61015760048080359060200190919080359060200190919050506101b4565b604051808215151515815260200191505060405180910390f35b600a81565b600081831061019d576301e1338061018e84846102bc565b81151561019757fe5b046101a0565b60005b905092915050565b60005481565b60015481565b600080600080600080600080888a1115156101ce57600080fd5b6101dc6000546001546102d5565b96508695506101eb8a8a610176565b9450600093505b848410156102215761021261020b87600a6064036102ee565b606461031c565b955083806001019450506101f2565b61023661022f87600a6102ee565b606461031c565b9250610260610256846301e133808c8e0381151561025057fe5b066102ee565b6301e1338061031c565b915085870382019050610275816000546102bc565b90506001548111156102875760015490505b610293600054826102d5565b6000819055506102a5600154826102bc565b600181905550600197505050505050505092915050565b600082828403915081111515156102cf57fe5b92915050565b600082828401915081101515156102e857fe5b92915050565b60008183029050600083148061030e575081838281151561030b57fe5b04145b151561031657fe5b92915050565b6000818381151561032957fe5b049050929150505600a165627a7a72305820d8edeeb44c8346eca139385cfaecddeb8b02fcc380c3b54473746e8103ff62e70029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("collectToken", #uint256(NOW), #uint256(START)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - GASCAP => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - NOW // block.timestamp // now - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630e4aed3f1461007257806340ba126b1461009b578063787e9137146100db578063b69ef8a814610104578063b93e2cdb1461012d575b600080fd5b341561007d57600080fd5b610085610171565b6040518082815260200191505060405180910390f35b34156100a657600080fd5b6100c56004808035906020019091908035906020019091905050610176565b6040518082815260200191505060405180910390f35b34156100e657600080fd5b6100ee6101a8565b6040518082815260200191505060405180910390f35b341561010f57600080fd5b6101176101ae565b6040518082815260200191505060405180910390f35b341561013857600080fd5b61015760048080359060200190919080359060200190919050506101b4565b604051808215151515815260200191505060405180910390f35b600a81565b600081831061019d576301e1338061018e84846102bc565b81151561019757fe5b046101a0565b60005b905092915050565b60005481565b60015481565b600080600080600080600080888a1115156101ce57600080fd5b6101dc6000546001546102d5565b96508695506101eb8a8a610176565b9450600093505b848410156102215761021261020b87600a6064036102ee565b606461031c565b955083806001019450506101f2565b61023661022f87600a6102ee565b606461031c565b9250610260610256846301e133808c8e0381151561025057fe5b066102ee565b6301e1338061031c565b915085870382019050610275816000546102bc565b90506001548111156102875760015490505b610293600054826102d5565b6000819055506102a5600154826102bc565b600181905550600197505050505050505092915050565b600082828403915081111515156102cf57fe5b92915050565b600082828401915081101515156102e857fe5b92915050565b60008183029050600083148061030e575081838281151561030b57fe5b04145b151561031657fe5b92915050565b6000818381151561032957fe5b049050929150505600a165627a7a72305820d8edeeb44c8346eca139385cfaecddeb8b02fcc380c3b54473746e8103ff62e70029") - -#hashedLocation("Solidity", 0, .IntList) |-> (COLLECTED => COLLECTED +Int ?VALUE) -#hashedLocation("Solidity", 1, .IntList) |-> (BAL => BAL -Int ?VALUE) -_:Map - - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID = 0 -andBool #accumulatedReleasedTokens(BAL, COLLECTED, START, NOW) >Int COLLECTED +Int 3 -// canExtract > balance -andBool #accumulatedReleasedTokens(BAL, COLLECTED, START, NOW) =Int (293 *Int ((NOW -Int START) /Int 31536000)) +Int 43000 -ensures ?VALUE ==Int @canExtractThisYear(COLLECTED +Int BAL, NOW, START) +Int BAL -Int @remainingTokens(COLLECTED +Int BAL, NOW, START) - - - // loop - claim - #execute => #execute - 1 - NORMAL - ISTANBUL - true - - - - _ - _ - _ => ?_ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630e4aed3f1461007257806340ba126b1461009b578063787e9137146100db578063b69ef8a814610104578063b93e2cdb1461012d575b600080fd5b341561007d57600080fd5b610085610171565b6040518082815260200191505060405180910390f35b34156100a657600080fd5b6100c56004808035906020019091908035906020019091905050610176565b6040518082815260200191505060405180910390f35b34156100e657600080fd5b6100ee6101a8565b6040518082815260200191505060405180910390f35b341561010f57600080fd5b6101176101ae565b6040518082815260200191505060405180910390f35b341561013857600080fd5b61015760048080359060200190919080359060200190919050506101b4565b604051808215151515815260200191505060405180910390f35b600a81565b600081831061019d576301e1338061018e84846102bc565b81151561019757fe5b046101a0565b60005b905092915050565b60005481565b60015481565b600080600080600080600080888a1115156101ce57600080fd5b6101dc6000546001546102d5565b96508695506101eb8a8a610176565b9450600093505b848410156102215761021261020b87600a6064036102ee565b606461031c565b955083806001019450506101f2565b61023661022f87600a6102ee565b606461031c565b9250610260610256846301e133808c8e0381151561025057fe5b066102ee565b6301e1338061031c565b915085870382019050610275816000546102bc565b90506001548111156102875760015490505b610293600054826102d5565b6000819055506102a5600154826102bc565b600181905550600197505050505050505092915050565b600082828403915081111515156102cf57fe5b92915050565b600082828401915081101515156102e857fe5b92915050565b60008183029050600083148061030e575081838281151561030b57fe5b04145b151561031657fe5b92915050565b6000818381151561032957fe5b049050929150505600a165627a7a72305820d8edeeb44c8346eca139385cfaecddeb8b02fcc380c3b54473746e8103ff62e70029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630e4aed3f1461007257806340ba126b1461009b578063787e9137146100db578063b69ef8a814610104578063b93e2cdb1461012d575b600080fd5b341561007d57600080fd5b610085610171565b6040518082815260200191505060405180910390f35b34156100a657600080fd5b6100c56004808035906020019091908035906020019091905050610176565b6040518082815260200191505060405180910390f35b34156100e657600080fd5b6100ee6101a8565b6040518082815260200191505060405180910390f35b341561010f57600080fd5b6101176101ae565b6040518082815260200191505060405180910390f35b341561013857600080fd5b61015760048080359060200190919080359060200190919050506101b4565b604051808215151515815260200191505060405180910390f35b600a81565b600081831061019d576301e1338061018e84846102bc565b81151561019757fe5b046101a0565b60005b905092915050565b60005481565b60015481565b600080600080600080600080888a1115156101ce57600080fd5b6101dc6000546001546102d5565b96508695506101eb8a8a610176565b9450600093505b848410156102215761021261020b87600a6064036102ee565b606461031c565b955083806001019450506101f2565b61023661022f87600a6102ee565b606461031c565b9250610260610256846301e133808c8e0381151561025057fe5b066102ee565b6301e1338061031c565b915085870382019050610275816000546102bc565b90506001548111156102875760015490505b610293600054826102d5565b6000819055506102a5600154826102bc565b600181905550600197505050505050505092915050565b600082828403915081111515156102cf57fe5b92915050565b600082828401915081101515156102e857fe5b92915050565b60008183029050600083148061030e575081838281151561030b57fe5b04145b151561031657fe5b92915050565b6000818381151561032957fe5b049050929150505600a165627a7a72305820d8edeeb44c8346eca139385cfaecddeb8b02fcc380c3b54473746e8103ff62e70029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - _ - - 0 - CANEXTRACT : CANEXTRACTTHISYEAR : TOTALREWARDTHISYEAR : INDEX : YEARCOUNT : REMAINING : TOTAL : RETURNVAL : START : NOW : RPC : FUNID : .WordStack -=> CANEXTRACT : CANEXTRACTTHISYEAR : TOTALREWARDTHISYEAR : YEARCOUNT : YEARCOUNT : #roundpower(REMAINING, 90, 100, YEARCOUNT -Int INDEX) : TOTAL : RETURNVAL : START : NOW : RPC : FUNID : .WordStack - _ - 498 => 545 - GASCAP => GASCAP -Int (293 *Int (YEARCOUNT -Int INDEX)) -Int 26 - MU - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - NOW // block.timestamp // now - _ - _ - _ - _ - - _ - _ - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630e4aed3f1461007257806340ba126b1461009b578063787e9137146100db578063b69ef8a814610104578063b93e2cdb1461012d575b600080fd5b341561007d57600080fd5b610085610171565b6040518082815260200191505060405180910390f35b34156100a657600080fd5b6100c56004808035906020019091908035906020019091905050610176565b6040518082815260200191505060405180910390f35b34156100e657600080fd5b6100ee6101a8565b6040518082815260200191505060405180910390f35b341561010f57600080fd5b6101176101ae565b6040518082815260200191505060405180910390f35b341561013857600080fd5b61015760048080359060200190919080359060200190919050506101b4565b604051808215151515815260200191505060405180910390f35b600a81565b600081831061019d576301e1338061018e84846102bc565b81151561019757fe5b046101a0565b60005b905092915050565b60005481565b60015481565b600080600080600080600080888a1115156101ce57600080fd5b6101dc6000546001546102d5565b96508695506101eb8a8a610176565b9450600093505b848410156102215761021261020b87600a6064036102ee565b606461031c565b955083806001019450506101f2565b61023661022f87600a6102ee565b606461031c565b9250610260610256846301e133808c8e0381151561025057fe5b066102ee565b6301e1338061031c565b915085870382019050610275816000546102bc565b90506001548111156102875760015490505b610293600054826102d5565b6000819055506102a5600154826102bc565b600181905550600197505050505050505092915050565b600082828403915081111515156102cf57fe5b92915050565b600082828401915081101515156102e857fe5b92915050565b60008183029050600083148061030e575081838281151561030b57fe5b04145b151561031657fe5b92915050565b6000818381151561032957fe5b049050929150505600a165627a7a72305820d8edeeb44c8346eca139385cfaecddeb8b02fcc380c3b54473746e8103ff62e70029") - -_ - - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - requires 0 <=Int ACCT_ID andBool ACCT_ID =Int ((293 *Int (YEARCOUNT -Int INDEX)) +Int 26) - - - - // ds-math-mul - claim - #execute => #execute - 1 - NORMAL - ISTANBUL - true - - - - _ - _ - _ => ?_ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630e4aed3f1461007257806340ba126b1461009b578063787e9137146100db578063b69ef8a814610104578063b93e2cdb1461012d575b600080fd5b341561007d57600080fd5b610085610171565b6040518082815260200191505060405180910390f35b34156100a657600080fd5b6100c56004808035906020019091908035906020019091905050610176565b6040518082815260200191505060405180910390f35b34156100e657600080fd5b6100ee6101a8565b6040518082815260200191505060405180910390f35b341561010f57600080fd5b6101176101ae565b6040518082815260200191505060405180910390f35b341561013857600080fd5b61015760048080359060200190919080359060200190919050506101b4565b604051808215151515815260200191505060405180910390f35b600a81565b600081831061019d576301e1338061018e84846102bc565b81151561019757fe5b046101a0565b60005b905092915050565b60005481565b60015481565b600080600080600080600080888a1115156101ce57600080fd5b6101dc6000546001546102d5565b96508695506101eb8a8a610176565b9450600093505b848410156102215761021261020b87600a6064036102ee565b606461031c565b955083806001019450506101f2565b61023661022f87600a6102ee565b606461031c565b9250610260610256846301e133808c8e0381151561025057fe5b066102ee565b6301e1338061031c565b915085870382019050610275816000546102bc565b90506001548111156102875760015490505b610293600054826102d5565b6000819055506102a5600154826102bc565b600181905550600197505050505050505092915050565b600082828403915081111515156102cf57fe5b92915050565b600082828401915081101515156102e857fe5b92915050565b60008183029050600083148061030e575081838281151561030b57fe5b04145b151561031657fe5b92915050565b6000818381151561032957fe5b049050929150505600a165627a7a72305820d8edeeb44c8346eca139385cfaecddeb8b02fcc380c3b54473746e8103ff62e70029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630e4aed3f1461007257806340ba126b1461009b578063787e9137146100db578063b69ef8a814610104578063b93e2cdb1461012d575b600080fd5b341561007d57600080fd5b610085610171565b6040518082815260200191505060405180910390f35b34156100a657600080fd5b6100c56004808035906020019091908035906020019091905050610176565b6040518082815260200191505060405180910390f35b34156100e657600080fd5b6100ee6101a8565b6040518082815260200191505060405180910390f35b341561010f57600080fd5b6101176101ae565b6040518082815260200191505060405180910390f35b341561013857600080fd5b61015760048080359060200190919080359060200190919050506101b4565b604051808215151515815260200191505060405180910390f35b600a81565b600081831061019d576301e1338061018e84846102bc565b81151561019757fe5b046101a0565b60005b905092915050565b60005481565b60015481565b600080600080600080600080888a1115156101ce57600080fd5b6101dc6000546001546102d5565b96508695506101eb8a8a610176565b9450600093505b848410156102215761021261020b87600a6064036102ee565b606461031c565b955083806001019450506101f2565b61023661022f87600a6102ee565b606461031c565b9250610260610256846301e133808c8e0381151561025057fe5b066102ee565b6301e1338061031c565b915085870382019050610275816000546102bc565b90506001548111156102875760015490505b610293600054826102d5565b6000819055506102a5600154826102bc565b600181905550600197505050505050505092915050565b600082828403915081111515156102cf57fe5b92915050565b600082828401915081101515156102e857fe5b92915050565b60008183029050600083148061030e575081838281151561030b57fe5b04145b151561031657fe5b92915050565b6000818381151561032957fe5b049050929150505600a165627a7a72305820d8edeeb44c8346eca139385cfaecddeb8b02fcc380c3b54473746e8103ff62e70029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - _ - - 0 - Y : X : RET : WS => X : Y : RET : X *Int Y : WS - _ - 750 => 793 - GASCAP => GASCAP -Int 114 - MU - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - NOW // block.timestamp // now - _ - _ - _ - _ - - _ - _ - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630e4aed3f1461007257806340ba126b1461009b578063787e9137146100db578063b69ef8a814610104578063b93e2cdb1461012d575b600080fd5b341561007d57600080fd5b610085610171565b6040518082815260200191505060405180910390f35b34156100a657600080fd5b6100c56004808035906020019091908035906020019091905050610176565b6040518082815260200191505060405180910390f35b34156100e657600080fd5b6100ee6101a8565b6040518082815260200191505060405180910390f35b341561010f57600080fd5b6101176101ae565b6040518082815260200191505060405180910390f35b341561013857600080fd5b61015760048080359060200190919080359060200190919050506101b4565b604051808215151515815260200191505060405180910390f35b600a81565b600081831061019d576301e1338061018e84846102bc565b81151561019757fe5b046101a0565b60005b905092915050565b60005481565b60015481565b600080600080600080600080888a1115156101ce57600080fd5b6101dc6000546001546102d5565b96508695506101eb8a8a610176565b9450600093505b848410156102215761021261020b87600a6064036102ee565b606461031c565b955083806001019450506101f2565b61023661022f87600a6102ee565b606461031c565b9250610260610256846301e133808c8e0381151561025057fe5b066102ee565b6301e1338061031c565b915085870382019050610275816000546102bc565b90506001548111156102875760015490505b610293600054826102d5565b6000819055506102a5600154826102bc565b600181905550600197505050505050505092915050565b600082828403915081111515156102cf57fe5b92915050565b600082828401915081101515156102e857fe5b92915050565b60008183029050600083148061030e575081838281151561030b57fe5b04145b151561031657fe5b92915050565b6000818381151561032957fe5b049050929150505600a165627a7a72305820d8edeeb44c8346eca139385cfaecddeb8b02fcc380c3b54473746e8103ff62e70029") - -_ - - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - requires 0 <=Int ACCT_ID andBool ACCT_ID =Int 114 // for the current spec - -[trusted] - - -endmodule - diff --git a/tests/specs/bihu/forwardToHotWallet-failure-1-spec.k b/tests/specs/bihu/forwardToHotWallet-failure-1-spec.k deleted file mode 100644 index 22d95b1324..0000000000 --- a/tests/specs/bihu/forwardToHotWallet-failure-1-spec.k +++ /dev/null @@ -1,121 +0,0 @@ -requires "verification.k" - -module FORWARDTOHOTWALLET-FAILURE-1-SPEC - imports VERIFICATION - - // forwardToHotWallet-failure-1 - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_REVERT - _ => ?_ - _ - _ => ?_ - - - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - #computeValidJumpDests(#parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("forwardToHotWallet", #uint256(AMOUNT)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - 22000 => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - NOW // block.timestamp // now - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - -#hashedLocation("Solidity", 3, .IntList) |-> WITHDRAWER -#hashedLocation("Solidity", 4, .IntList) |-> WITHDRAWLIMIT -#hashedLocation("Solidity", 5, .IntList) |-> LASTWITHDRAWTIME -#hashedLocation("Solidity", 6, .IntList) |-> PAUSED -_:Map - - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_REVERT - _ => ?_ - _ - _ => ?_ - - - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - #computeValidJumpDests(#parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("forwardToHotWallet", #uint256(AMOUNT)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - 22000 => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - NOW // block.timestamp // now - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - -#hashedLocation("Solidity", 3, .IntList) |-> WITHDRAWER -#hashedLocation("Solidity", 4, .IntList) |-> WITHDRAWLIMIT -#hashedLocation("Solidity", 5, .IntList) |-> LASTWITHDRAWTIME -#hashedLocation("Solidity", 6, .IntList) |-> PAUSED -_:Map - - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_REVERT - _ => ?_ - _ - _ => ?_ - - - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - #computeValidJumpDests(#parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("forwardToHotWallet", #uint256(AMOUNT)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - 22000 => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - NOW // block.timestamp // now - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - -#hashedLocation("Solidity", 3, .IntList) |-> WITHDRAWER -#hashedLocation("Solidity", 4, .IntList) |-> WITHDRAWLIMIT -#hashedLocation("Solidity", 5, .IntList) |-> LASTWITHDRAWTIME -#hashedLocation("Solidity", 6, .IntList) |-> PAUSED -_:Map - - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID 0); - - - - -endmodule - diff --git a/tests/specs/bihu/forwardToHotWallet-failure-4-spec.k b/tests/specs/bihu/forwardToHotWallet-failure-4-spec.k deleted file mode 100644 index 8dfd6d5c19..0000000000 --- a/tests/specs/bihu/forwardToHotWallet-failure-4-spec.k +++ /dev/null @@ -1,121 +0,0 @@ -requires "verification.k" - -module FORWARDTOHOTWALLET-FAILURE-4-SPEC - imports VERIFICATION - - // forwardToHotWallet-failure-4 - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_REVERT - _ => ?_ - _ - _ => ?_ - - - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - #computeValidJumpDests(#parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("forwardToHotWallet", #uint256(AMOUNT)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - 22000 => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - NOW // block.timestamp // now - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - -#hashedLocation("Solidity", 3, .IntList) |-> WITHDRAWER -#hashedLocation("Solidity", 4, .IntList) |-> WITHDRAWLIMIT -#hashedLocation("Solidity", 5, .IntList) |-> LASTWITHDRAWTIME -#hashedLocation("Solidity", 6, .IntList) |-> PAUSED -_:Map - - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID (lastWithdrawTime + 24 hours)); - - - - -endmodule - diff --git a/tests/specs/bihu/forwardToHotWallet-success-1-spec.k b/tests/specs/bihu/forwardToHotWallet-success-1-spec.k deleted file mode 100644 index b5be50c178..0000000000 --- a/tests/specs/bihu/forwardToHotWallet-success-1-spec.k +++ /dev/null @@ -1,127 +0,0 @@ -requires "verification.k" - -module FORWARDTOHOTWALLET-SUCCESS-1-SPEC - imports VERIFICATION - - // forwardToHotWallet-success-1 - claim - - #execute => #halt - 1 - NORMAL - BYZANTIUM - true - - - - _ => #buf(32, ?RET_VAL) - _ => EVMC_SUCCESS - _ => ?_ - _ - _ => ?_ - - - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - #computeValidJumpDests(#parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("forwardToHotWallet", #uint256(AMOUNT)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - 22000 => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - NOW // block.timestamp // now - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - -#hashedLocation("Solidity", 3, .IntList) |-> WITHDRAWER -#hashedLocation("Solidity", 4, .IntList) |-> WITHDRAWLIMIT -#hashedLocation("Solidity", 5, .IntList) |-> ( LASTWITHDRAWTIME => NOW ) -#hashedLocation("Solidity", 6, .IntList) |-> PAUSED -_:Map - - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int 0 // require(_amount > 0); -andBool NOW >Int LASTWITHDRAWTIME +Word (24 *Int 3600) // require(_time > (lastWithdrawTime + 24 hours)); -// NOTE: +Word instead of +Int -andBool AMOUNT <=Int WITHDRAWLIMIT // if (amount > withdrawLimit) { ... } -ensures ?RET_VAL ==Int AMOUNT - - - - -endmodule - diff --git a/tests/specs/bihu/forwardToHotWallet-success-2-spec.k b/tests/specs/bihu/forwardToHotWallet-success-2-spec.k deleted file mode 100644 index 35b696c17a..0000000000 --- a/tests/specs/bihu/forwardToHotWallet-success-2-spec.k +++ /dev/null @@ -1,127 +0,0 @@ -requires "verification.k" - -module FORWARDTOHOTWALLET-SUCCESS-2-SPEC - imports VERIFICATION - - // forwardToHotWallet-success-2 - claim - - #execute => #halt - 1 - NORMAL - BYZANTIUM - true - - - - _ => #buf(32, ?RET_VAL) - _ => EVMC_SUCCESS - _ => ?_ - _ - _ => ?_ - - - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - #computeValidJumpDests(#parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("forwardToHotWallet", #uint256(AMOUNT)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - 22000 => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - NOW // block.timestamp // now - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x6060604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806257e8d4146100f55780630d174c241461012c57806313af40351461016557806316ada5471461019e57806329113bc8146101c75780633943380c1461021c5780634abdf2e0146102715780634af350eb146102945780635c975abb146102f55780636be13c92146103225780638da5cb5b146103775780639550276b146103cc578063ab231511146103e1578063bde27f4a1461040a578063cdc1842414610441578063d87522ae14610496578063f848d541146104ab575b600080fd5b341561010057600080fd5b61011660048080359060200190919050506104d4565b6040518082815260200191505060405180910390f35b341561013757600080fd5b610163600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610549565b005b341561017057600080fd5b61019c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610668565b005b34156101a957600080fd5b6101b161074b565b6040518082815260200191505060405180910390f35b34156101d257600080fd5b6101da610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b61022f610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027c57600080fd5b610292600480803590602001909190505061079e565b005b341561029f57600080fd5b6102f3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610861565b005b341561030057600080fd5b6103086109f5565b604051808215151515815260200191505060405180910390f35b341561032d57600080fd5b610335610a08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038257600080fd5b61038a610a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103d757600080fd5b6103df610a54565b005b34156103ec57600080fd5b6103f4610acd565b6040518082815260200191505060405180910390f35b341561041557600080fd5b61042b6004808035906020019091905050610ad3565b6040518082815260200191505060405180910390f35b341561044c57600080fd5b610454610ba2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104a157600080fd5b6104a9610bc8565b005b34156104b657600080fd5b6104be610c41565b6040518082815260200191505060405180910390f35b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561053257600080fd5b60008211151561054157600080fd5b819050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91ea294e4187e15075dc6da5e9abb3161ca1a608c538e1a1c6528fc644b1b6f560405160405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106c457600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b600042905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107fa57600080fd5b60008111151561080957600080fd5b806004819055503373ffffffffffffffffffffffffffffffffffffffff167fd9f754a3457d492d875ed93adbb513556202c51d9d6e0f9de8d9d4e7cf232008826040518082815260200191505060405180910390a250565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108bf57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561091b57600080fd5b60008311156109ef578190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156109d257600080fd5b6102c65a03f115156109e357600080fd5b50505060405180519050505b50505050565b600660149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab057600080fd5b6001600660146101000a81548160ff021916908315150217905550565b60055481565b6000806000600660149054906101000a900460ff16151515610af457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b5057600080fd5b600084111515610b5f57600080fd5b610b6761074b565b9150620151806005540182111515610b7e57600080fd5b839050600454811115610b915760045490505b816005819055508092505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2457600080fd5b6000600660146101000a81548160ff021916908315150217905550565b600454815600a165627a7a72305820f1e3e5a9cf1054e7c34a3f0f60ea3dc352ed9f0cd000953a1113bacc56ddb77e0029") - -#hashedLocation("Solidity", 3, .IntList) |-> WITHDRAWER -#hashedLocation("Solidity", 4, .IntList) |-> WITHDRAWLIMIT -#hashedLocation("Solidity", 5, .IntList) |-> ( LASTWITHDRAWTIME => NOW ) -#hashedLocation("Solidity", 6, .IntList) |-> PAUSED -_:Map - - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int 0 // require(_amount > 0); -andBool NOW >Int LASTWITHDRAWTIME +Word (24 *Int 3600) // require(_time > (lastWithdrawTime + 24 hours)); -// NOTE: +Word instead of +Int -andBool AMOUNT >Int WITHDRAWLIMIT // if (amount > withdrawLimit) { ... } -ensures ?RET_VAL ==Int WITHDRAWLIMIT - - - - -endmodule - diff --git a/tests/specs/bihu/functional-spec.k b/tests/specs/bihu/functional-spec.k deleted file mode 100644 index 6751157db6..0000000000 --- a/tests/specs/bihu/functional-spec.k +++ /dev/null @@ -1,22 +0,0 @@ -requires "verification.k" - -module FUNCTIONAL-SPEC-SYNTAX - imports VERIFICATION - - syntax KItem ::= runLemma ( Step ) [symbol(runLemma)] | doneLemma ( Step ) - // ------------------------------------------------------- - rule runLemma(S) => doneLemma(S) ... - - syntax Step ::= Bytes | Int | Bool - // ---------------------------------- - -endmodule - -module FUNCTIONAL-SPEC - imports FUNCTIONAL-SPEC-SYNTAX - - claim runLemma(#range( _MEM [ 96 := #padToWidth(32, #asByteStack(BS)) ], 96, 32)) - => doneLemma(#buf(32, BS)) ... - requires #rangeUInt(256, BS) - -endmodule diff --git a/tests/specs/bihu/verification.k b/tests/specs/bihu/verification.k deleted file mode 100644 index 925dd3b094..0000000000 --- a/tests/specs/bihu/verification.k +++ /dev/null @@ -1,104 +0,0 @@ -requires "edsl.md" -requires "lemmas/lemmas.k" - -module VERIFICATION - imports EDSL - imports LEMMAS - imports VERIFICATION-HASKELL - - // ######################## - // Buffer Reasoning - // ######################## - - //semantics of #buf - rule #buf(LEN, BYTES) => #padToWidth(LEN, #asByteStack( BYTES )) [simplification, concrete] - - //Rules for #padToWidth with non-regular symbolic arguments. - rule #padToWidth(32, #asByteStack(V)) => #buf(32, V) - requires 0 <=Int V andBool V true requires 0 <=Int X andBool X true requires 0 <=Int X andBool X I1 -Int I2 requires #rangeUInt(256, I1) andBool #rangeUInt(256, I2) andBool I2 <=Int I1 [simplification] - - rule chop(I1 +Int (I2 -Int I3)) => I1 +Int (I2 -Int I3) - requires 0 <=Int I2 - andBool I2 =Int I3 - [simplification] - - // ######################## - // #roundpower - // ######################## - - syntax Int ::= "#roundpower" "(" Int "," Int "," Int "," Int ")" [function, smtlib(smt_roundpower)] - // ---------------------------------------------------------------------------------------------------- - rule #roundpower(0, BASEN, BASED, EXPONENT) => 0 requires BASEN >Int 0 andBool BASED >=Int BASEN andBool EXPONENT >=Int 0 - rule #roundpower(ACC, BASEN, BASED, 0 ) => ACC requires BASEN >Int 0 andBool BASED >=Int BASEN - rule #roundpower((ACC *Int BASEN) /Int BASED, BASEN, BASED, EXPONENT) => #roundpower(ACC, BASEN, BASED, EXPONENT +Int 1) requires BASEN >Int 0 andBool BASED >=Int BASEN andBool EXPONENT >=Int 0 [simplification] - - rule 0 <=Int #roundpower(ACC, BASEN, BASED, EXPONENT) => true requires ACC >=Int 0 andBool BASEN >Int 0 andBool BASED >=Int BASEN andBool EXPONENT >=Int 0 [simplification, preserves-definedness] - rule #roundpower(ACC, BASEN, BASED, EXPONENT) <=Int ACC => true requires ACC >=Int 0 andBool BASEN >Int 0 andBool BASED >=Int BASEN andBool EXPONENT >=Int 0 [simplification, preserves-definedness] - rule #roundpower(ACC, BASEN, BASED, EXPONENT) true requires ACC >=Int 0 andBool BASEN >Int 0 andBool BASED >=Int BASEN andBool EXPONENT >=Int 0 andBool ACC true requires ACC >=Int 0 andBool BASEN >Int 0 andBool BASED >=Int BASEN andBool EXPONENT >=Int 0 [simplification, preserves-definedness] - rule (#roundpower(ACC, BASEN, BASED, EXPONENT) *Int 10) true requires ACC >=Int 0 andBool BASEN >Int 0 andBool BASED >=Int BASEN andBool EXPONENT >=Int 0 andBool ACC *Int 10 true requires ACC >=Int 0 andBool BASEN >Int 0 andBool BASED >=Int BASEN andBool EXPONENT >=Int 0 andBool A >=Int 0 andBool B >Int 0 andBool C >=Int 0 [simplification, preserves-definedness] - rule #roundpower(ACC, BASEN, BASED, EXPONENT) *Int A /Int B *Int C true requires ACC >=Int 0 andBool BASEN >Int 0 andBool BASED >=Int BASEN andBool EXPONENT >=Int 0 andBool A >=Int 0 andBool B >Int 0 andBool C >=Int 0 andBool ACC *Int A /Int B *Int C #roundpower(TOTAL, 90, 100, (NOW -Int START) /Int 31536000) - rule @canExtractThisYear(TOTAL, NOW, START) => ((#roundpower(TOTAL, 90, 100, (NOW -Int START) /Int 31536000) *Int 10 /Int 100) *Int ((NOW -Int START) modInt 31536000)) /Int 31536000 - - // ############################### - // #accumulatedReleasedTokens - // ############################### - - syntax Int ::= "#accumulatedReleasedTokens" "(" Int "," Int "," Int "," Int ")" [function, no-evaluators] - // ---------------------------------------------------------------------------------------------------------- - // proved manually - rule COLLECTED <=Int @canExtractThisYear(COLLECTED +Int BAL, NOW, START) +Int ((COLLECTED +Int BAL) -Int @remainingTokens(COLLECTED +Int BAL, NOW, START)) => true requires #accumulatedReleasedTokens(BAL, COLLECTED, START, NOW) >Int COLLECTED +Int 3 [simplification] - rule 0 <=Int @canExtractThisYear(COLLECTED +Int BAL, NOW, START) +Int ((COLLECTED +Int BAL) -Int @remainingTokens(COLLECTED +Int BAL, NOW, START)) => true requires #accumulatedReleasedTokens(BAL, COLLECTED, START, NOW) >Int COLLECTED +Int 3 [simplification] - rule 0 <=Int @canExtractThisYear(COLLECTED +Int BAL, NOW, START) +Int ((COLLECTED +Int BAL) -Int @remainingTokens(COLLECTED +Int BAL, NOW, START)) -Int COLLECTED => true requires #accumulatedReleasedTokens(BAL, COLLECTED, START, NOW) >Int COLLECTED +Int 3 [simplification] - - // proved manually (canExtract > balance) --- if condition - rule BAL false requires #accumulatedReleasedTokens(BAL, COLLECTED, START, NOW) = canExtract) --- balance = sub(balance, canExtract) - rule @canExtractThisYear(COLLECTED +Int BAL, NOW, START) +Int ((COLLECTED +Int BAL) -Int @remainingTokens(COLLECTED +Int BAL, NOW, START)) -Int COLLECTED <=Int BAL => true requires #accumulatedReleasedTokens(BAL, COLLECTED, START, NOW) true requires #accumulatedReleasedTokens(BAL, COLLECTED, START, NOW) >Int COLLECTED +Int 3 [simplification] - rule @canExtractThisYear(COLLECTED +Int BAL, NOW, START) +Int ((COLLECTED +Int BAL) -Int @remainingTokens(COLLECTED +Int BAL, NOW, START)) true requires #accumulatedReleasedTokens(BAL, COLLECTED, START, NOW) >Int COLLECTED +Int 3 [simplification] - -endmodule - -module VERIFICATION-HASKELL [symbolic] - imports EVM - - rule X false - requires Gsload < SCHED > <=Int X - andBool Gsstoreset < SCHED > <=Int X - andBool Gsstorereset < SCHED > <=Int X - [simplification] - - rule Csstore(SCHED, _, _, _) <=Int X => true - requires Gsload < SCHED > <=Int X - andBool Gsstoreset < SCHED > <=Int X - andBool Gsstorereset < SCHED > <=Int X - [simplification] - - rule X -Int Y X -Int Z Z <=Int Y -Int X [concrete(X, Y), symbolic(Z), simplification] - -endmodule diff --git a/tests/specs/erc20/ds/allowance-spec.k b/tests/specs/erc20/ds/allowance-spec.k deleted file mode 100644 index 00a63900a8..0000000000 --- a/tests/specs/erc20/ds/allowance-spec.k +++ /dev/null @@ -1,110 +0,0 @@ -requires "../verification.k" - -module ALLOWANCE-SPEC - imports VERIFICATION - - // allowance - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => #buf(32, ALLOWANCE) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("allowance", #address(OWNER), #address(SPENDER)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 2, OWNER SPENDER) |-> ALLOWANCE -_:Map - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("approve", #address(SPENDER), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -_:Map - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("approve", #address(SPENDER), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 2, CALLER_ID SPENDER) |-> (ORIG_VAL => VALUE) -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 2, CALLER_ID SPENDER) |-> ORIG_VAL -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => #buf(32, BAL) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("balanceOf", #address(OWNER)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 1, OWNER) |-> BAL -_:Map - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => #buf(32, TOTAL) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("totalSupply", .TypedArgs) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 0, .IntList) |-> TOTAL -_:Map - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transfer", #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> (BAL_FROM => ?_) -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int BAL_FROM - - -endmodule - diff --git a/tests/specs/erc20/ds/transfer-failure-1-b-spec.k b/tests/specs/erc20/ds/transfer-failure-1-b-spec.k deleted file mode 100644 index bf703e224a..0000000000 --- a/tests/specs/erc20/ds/transfer-failure-1-b-spec.k +++ /dev/null @@ -1,122 +0,0 @@ -requires "../verification.k" - -module TRANSFER-FAILURE-1-B-SPEC - imports VERIFICATION - - // transfer-failure-1-b - claim - - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transfer", #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> (BAL_FROM => ?_) -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID =Int (2 ^Int 256) - - -endmodule - diff --git a/tests/specs/erc20/ds/transfer-failure-1-c-spec.k b/tests/specs/erc20/ds/transfer-failure-1-c-spec.k deleted file mode 100644 index 0e0a41094b..0000000000 --- a/tests/specs/erc20/ds/transfer-failure-1-c-spec.k +++ /dev/null @@ -1,122 +0,0 @@ -requires "../verification.k" - -module TRANSFER-FAILURE-1-C-SPEC - imports VERIFICATION - - // transfer-failure-1-c - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transfer", #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> (BAL_FROM => ?_) -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transfer", #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int BAL_FROM - - -endmodule - diff --git a/tests/specs/erc20/ds/transfer-failure-2-b-spec.k b/tests/specs/erc20/ds/transfer-failure-2-b-spec.k deleted file mode 100644 index ba37dba467..0000000000 --- a/tests/specs/erc20/ds/transfer-failure-2-b-spec.k +++ /dev/null @@ -1,118 +0,0 @@ -requires "../verification.k" - -module TRANSFER-FAILURE-2-B-SPEC - imports VERIFICATION - - // transfer-failure-2-b - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transfer", #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transfer", #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> (BAL_FROM => BAL_FROM -Int VALUE) -#hashedLocation("Solidity", 1, TO_ID) |-> (BAL_TO => BAL_TO +Int VALUE) -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transfer", #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> (BAL_FROM => ?_) // BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> (BAL_TO => ?_) // BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> (ALLOW => ?_) -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int BAL_FROM - - -endmodule - diff --git a/tests/specs/erc20/ds/transferFrom-failure-1-b-spec.k b/tests/specs/erc20/ds/transferFrom-failure-1-b-spec.k deleted file mode 100644 index c88e226bd0..0000000000 --- a/tests/specs/erc20/ds/transferFrom-failure-1-b-spec.k +++ /dev/null @@ -1,129 +0,0 @@ -requires "../verification.k" - -module TRANSFERFROM-FAILURE-1-B-SPEC - imports VERIFICATION - - // transferFrom-failure-1-b - claim - - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> (BAL_FROM => ?_) // BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> (BAL_TO => ?_) // BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> (ALLOW => ?_) -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID =Int (2 ^Int 256) - - -endmodule - diff --git a/tests/specs/erc20/ds/transferFrom-failure-1-c-spec.k b/tests/specs/erc20/ds/transferFrom-failure-1-c-spec.k deleted file mode 100644 index 55d11407b4..0000000000 --- a/tests/specs/erc20/ds/transferFrom-failure-1-c-spec.k +++ /dev/null @@ -1,129 +0,0 @@ -requires "../verification.k" - -module TRANSFERFROM-FAILURE-1-C-SPEC - imports VERIFICATION - - // transferFrom-failure-1-c - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> (BAL_FROM => ?_) // BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> (BAL_TO => ?_) // BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> (ALLOW => ?_) -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int ALLOW - - -endmodule - diff --git a/tests/specs/erc20/ds/transferFrom-failure-1-d-spec.k b/tests/specs/erc20/ds/transferFrom-failure-1-d-spec.k deleted file mode 100644 index e102983055..0000000000 --- a/tests/specs/erc20/ds/transferFrom-failure-1-d-spec.k +++ /dev/null @@ -1,129 +0,0 @@ -requires "../verification.k" - -module TRANSFERFROM-FAILURE-1-D-SPEC - imports VERIFICATION - - // transferFrom-failure-1-d - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> (BAL_FROM => ?_) // BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> (BAL_TO => ?_) // BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> (ALLOW => ?_) -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int BAL_FROM - - -endmodule - diff --git a/tests/specs/erc20/ds/transferFrom-failure-2-b-spec.k b/tests/specs/erc20/ds/transferFrom-failure-2-b-spec.k deleted file mode 100644 index f15fdc3873..0000000000 --- a/tests/specs/erc20/ds/transferFrom-failure-2-b-spec.k +++ /dev/null @@ -1,124 +0,0 @@ -requires "../verification.k" - -module TRANSFERFROM-FAILURE-2-B-SPEC - imports VERIFICATION - - // transferFrom-failure-2-b - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int ALLOW - - -endmodule - diff --git a/tests/specs/erc20/ds/transferFrom-failure-2-c-spec.k b/tests/specs/erc20/ds/transferFrom-failure-2-c-spec.k deleted file mode 100644 index 9a9543c0b3..0000000000 --- a/tests/specs/erc20/ds/transferFrom-failure-2-c-spec.k +++ /dev/null @@ -1,124 +0,0 @@ -requires "../verification.k" - -module TRANSFERFROM-FAILURE-2-C-SPEC - imports VERIFICATION - - // transferFrom-failure-2-c - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_INVALID_INSTRUCTION - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> (BAL_FROM => BAL_FROM -Int VALUE) -#hashedLocation("Solidity", 1, TO_ID) |-> (BAL_TO => BAL_TO +Int VALUE) -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> (ALLOW => ALLOW -Int VALUE) -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ => ?_ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461012257806307da68f514610153578063095ea7b31461016857806313af4035146101c257806318160ddd146101fb57806323b872dd14610224578063313ce5671461029d5780633452f51d146102c65780635ac801fe1461033257806369d3e20e1461035957806370a082311461038e57806375f12b21146103db5780637a9e5e4b146104085780638402181f146104415780638da5cb5b146104ad57806390bc16931461050257806395d89b4114610537578063a9059cbb14610568578063be9a6555146105c2578063bf7e214f146105d7578063dd62ed3e1461062c575b600080fd5b341561012d57600080fd5b610135610698565b60405180826000191660001916815260200191505060405180910390f35b341561015e57600080fd5b61016661069e565b005b341561017357600080fd5b6101a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061079e565b604051808215151515815260200191505060405180910390f35b34156101cd57600080fd5b6101f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610878565b005b341561020657600080fd5b61020e610957565b6040518082815260200191505060405180910390f35b341561022f57600080fd5b610283600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610960565b604051808215151515815260200191505060405180910390f35b34156102a857600080fd5b6102b0610a3c565b6040518082815260200191505060405180910390f35b34156102d157600080fd5b610318600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a42565b604051808215151515815260200191505060405180910390f35b341561033d57600080fd5b610357600480803560001916906020019091905050610a68565b005b341561036457600080fd5b61038c60048080356fffffffffffffffffffffffffffffffff16906020019091905050610aac565b005b341561039957600080fd5b6103c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c6d565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb6565b604051808215151515815260200191505060405180910390f35b341561041357600080fd5b61043f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cc9565b005b341561044c57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610da8565b604051808215151515815260200191505060405180910390f35b34156104b857600080fd5b6104c0610dcf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050d57600080fd5b61053560048080356fffffffffffffffffffffffffffffffff16906020019091905050610df5565b005b341561054257600080fd5b61054a610fb6565b60405180826000191660001916815260200191505060405180910390f35b341561057357600080fd5b6105a8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fbc565b604051808215151515815260200191505060405180910390f35b34156105cd57600080fd5b6105d5611096565b005b34156105e257600080fd5b6105ea611196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561063757600080fd5b610682600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111bc565b6040518082815260200191505060405180910390f35b60075481565b6106cc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156106d457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff161515156107b957fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461086e85856114a4565b9250505092915050565b6108a6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156108ae57fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615151561097b57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610a31868686611596565b925050509392505050565b60065481565b6000610a6083836fffffffffffffffffffffffffffffffff16610fbc565b905092915050565b610a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610a9e57fe5b806007816000191690555050565b610ada336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610ae257fe5b600460149054906101000a900460ff16151515610afb57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c01600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c62600054846fffffffffffffffffffffffffffffffff166118f9565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610cf7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610cff57fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610dc78333846fffffffffffffffffffffffffffffffff16610960565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e23336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b1515610e2b57fe5b600460149054906101000a900460ff16151515610e4457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f4a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fab600054846fffffffffffffffffffffffffffffffff16611912565b600081905550505050565b60055481565b6000600460149054906101000a900460ff16151515610fd757fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461108c858561192b565b9250505092915050565b6110c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611243565b15156110cc57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611282576001905061149e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e1576001905061149e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611341576000905061149e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561148057600080fd5b6102c65a03f1151561149157600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e357fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166b57fe5b6116f1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611846600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828284019150811015151561190c57fe5b92915050565b6000828284039150811115151561192557fe5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197857fe5b6119c1600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611912565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4d600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820fb55366ece8a4477c9397b20e007129a3014819c6fb99d9f51c9903e245fadbc0029") - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> (ALLOW => ALLOW -Int VALUE) -_:Map - #hashedLocation("Solidity", 4, .IntList) |-> STOPPED -#hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID runLemma(S) => doneLemma(S) ...
- - syntax Step ::= Int - // ------------------- - -endmodule - -module FUNCTIONAL-SPEC - imports FUNCTIONAL-SPEC-SYNTAX - - claim runLemma(#hashedLocation("Solidity", 2, OWNER SPENDER .IntList)) - => doneLemma(keccak(#bufStrict(32, SPENDER) +Bytes #bufStrict(32, keccak(#bufStrict(32, OWNER) +Bytes #bufStrict(32, 2))))) ... - requires #rangeUInt(256, SPENDER) andBool #rangeUInt(256, OWNER) -endmodule diff --git a/tests/specs/erc20/hkg/allowance-spec.k b/tests/specs/erc20/hkg/allowance-spec.k deleted file mode 100644 index c3239ef2ef..0000000000 --- a/tests/specs/erc20/hkg/allowance-spec.k +++ /dev/null @@ -1,110 +0,0 @@ -requires "../verification.k" - -module ALLOWANCE-SPEC - imports VERIFICATION - - // allowance - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => #buf(32, ALLOWANCE) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("allowance", #address(OWNER), #address(SPENDER)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #hashedLocation("Solidity", 2, OWNER SPENDER) |-> ALLOWANCE -_:Map - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("approve", #address(SPENDER), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _:List ( .List => ListItem(#abiEventLog(ACCT_ID, "Approval", #indexed(#address(CALLER_ID)), #indexed(#address(SPENDER)), #uint256(VALUE))) ) - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #hashedLocation("Solidity", 2, CALLER_ID SPENDER) |-> (INIT_VALUE => VALUE) -_:Map - #hashedLocation("Solidity", 2, CALLER_ID SPENDER) |-> INIT_VALUE -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => #buf(32, BAL) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("balanceOf", #address(OWNER)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #hashedLocation("Solidity", 1, OWNER) |-> BAL -_:Map - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => ?_ - _ => EVMC_REVERT - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("totalSupply", .TypedArgs) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - 100000 => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - _:Map - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => #buf(32, 0) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transfer", #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #hashedLocation("Solidity", 1, CALLER_ID) |-> (BAL_FROM => ?_) -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -_:Map - #hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int BAL_FROM -orBool VALUE <=Int 0 ) - - -endmodule - diff --git a/tests/specs/erc20/hkg/transfer-failure-2-spec.k b/tests/specs/erc20/hkg/transfer-failure-2-spec.k deleted file mode 100644 index ac8ca387e1..0000000000 --- a/tests/specs/erc20/hkg/transfer-failure-2-spec.k +++ /dev/null @@ -1,114 +0,0 @@ -requires "../verification.k" - -module TRANSFER-FAILURE-2-SPEC - imports VERIFICATION - - // transfer-failure-2 - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => #buf(32, 0) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transfer", #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -_:Map - _ - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int BAL_FROM -orBool VALUE <=Int 0 ) - - -endmodule - diff --git a/tests/specs/erc20/hkg/transfer-success-1-spec.k b/tests/specs/erc20/hkg/transfer-success-1-spec.k deleted file mode 100644 index 43ae47d760..0000000000 --- a/tests/specs/erc20/hkg/transfer-success-1-spec.k +++ /dev/null @@ -1,118 +0,0 @@ -requires "../verification.k" - -module TRANSFER-SUCCESS-1-SPEC - imports VERIFICATION - - // transfer-success-1 - claim - - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transfer", #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _:List ( .List => ListItem(#abiEventLog(ACCT_ID, "Transfer", #indexed(#address(CALLER_ID)), #indexed(#address(TO_ID)), #uint256(VALUE))) ) - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #hashedLocation("Solidity", 1, CALLER_ID) |-> (BAL_FROM => BAL_FROM -Int VALUE) -#hashedLocation("Solidity", 1, TO_ID) |-> (BAL_TO => BAL_TO +Word VALUE) -_:Map - #hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int 0 -andBool #hashedLocation("Solidity", 1, CALLER_ID) =/=Int #hashedLocation("Solidity", 1, TO_ID) - - -endmodule - diff --git a/tests/specs/erc20/hkg/transfer-success-2-spec.k b/tests/specs/erc20/hkg/transfer-success-2-spec.k deleted file mode 100644 index e8e5481b3e..0000000000 --- a/tests/specs/erc20/hkg/transfer-success-2-spec.k +++ /dev/null @@ -1,115 +0,0 @@ -requires "../verification.k" - -module TRANSFER-SUCCESS-2-SPEC - imports VERIFICATION - - // transfer-success-2 - claim - - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transfer", #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _:List ( .List => ListItem(#abiEventLog(ACCT_ID, "Transfer", #indexed(#address(CALLER_ID)), #indexed(#address(TO_ID)), #uint256(VALUE))) ) - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -_:Map - #hashedLocation("Solidity", 1, CALLER_ID) |-> BAL_FROM -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int 0 - - -endmodule - diff --git a/tests/specs/erc20/hkg/transferFrom-failure-1-spec.k b/tests/specs/erc20/hkg/transferFrom-failure-1-spec.k deleted file mode 100644 index b00f08cd6b..0000000000 --- a/tests/specs/erc20/hkg/transferFrom-failure-1-spec.k +++ /dev/null @@ -1,123 +0,0 @@ -requires "../verification.k" - -module TRANSFERFROM-FAILURE-1-SPEC - imports VERIFICATION - - // transferFrom-failure-1 - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => #buf(32, 0) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #hashedLocation("Solidity", 1, FROM_ID) |-> (BAL_FROM => ?_) // BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> (BAL_TO => ?_) // BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - #hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int BAL_FROM orBool VALUE >Int ALLOW orBool VALUE <=Int 0 ) -andBool #hashedLocation("Solidity", 2, FROM_ID CALLER_ID) =/=Int #hashedLocation("Solidity", 1, TO_ID) -andBool #hashedLocation("Solidity", 2, FROM_ID CALLER_ID) =/=Int #hashedLocation("Solidity", 1, FROM_ID) -andBool #hashedLocation("Solidity", 1, FROM_ID) =/=Int #hashedLocation("Solidity", 1, TO_ID) - - -endmodule - diff --git a/tests/specs/erc20/hkg/transferFrom-failure-2-spec.k b/tests/specs/erc20/hkg/transferFrom-failure-2-spec.k deleted file mode 100644 index 65e45713ff..0000000000 --- a/tests/specs/erc20/hkg/transferFrom-failure-2-spec.k +++ /dev/null @@ -1,118 +0,0 @@ -requires "../verification.k" - -module TRANSFERFROM-FAILURE-2-SPEC - imports VERIFICATION - - // transferFrom-failure-2 - claim - - #execute => #halt - 1 - NORMAL - ISTANBUL - true - - - - _ => #buf(32, 0) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _ - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int BAL_FROM orBool VALUE >Int ALLOW orBool VALUE <=Int 0 ) -andBool #hashedLocation("Solidity", 2, FROM_ID CALLER_ID) =/=Int #hashedLocation("Solidity", 1, FROM_ID) - - -endmodule - diff --git a/tests/specs/erc20/hkg/transferFrom-success-1-spec.k b/tests/specs/erc20/hkg/transferFrom-success-1-spec.k deleted file mode 100644 index 7b3b1bb141..0000000000 --- a/tests/specs/erc20/hkg/transferFrom-success-1-spec.k +++ /dev/null @@ -1,125 +0,0 @@ -requires "../verification.k" - -module TRANSFERFROM-SUCCESS-1-SPEC - imports VERIFICATION - - // transferFrom-success-1 - claim - - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _:List ( .List => ListItem(#abiEventLog(ACCT_ID, "Transfer", #indexed(#address(FROM_ID)), #indexed(#address(TO_ID)), #uint256(VALUE))) ) - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #hashedLocation("Solidity", 1, FROM_ID) |-> (BAL_FROM => BAL_FROM -Int VALUE) -#hashedLocation("Solidity", 1, TO_ID) |-> (BAL_TO => BAL_TO +Word VALUE) -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> (ALLOW => ALLOW -Int VALUE) -_:Map - #hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 1, TO_ID) |-> BAL_TO -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int 0 -andBool #hashedLocation("Solidity", 2, FROM_ID CALLER_ID) =/=Int #hashedLocation("Solidity", 1, TO_ID) -andBool #hashedLocation("Solidity", 2, FROM_ID CALLER_ID) =/=Int #hashedLocation("Solidity", 1, FROM_ID) -andBool #hashedLocation("Solidity", 1, FROM_ID) =/=Int #hashedLocation("Solidity", 1, TO_ID) - - -endmodule - diff --git a/tests/specs/erc20/hkg/transferFrom-success-2-spec.k b/tests/specs/erc20/hkg/transferFrom-success-2-spec.k deleted file mode 100644 index 3120334ef2..0000000000 --- a/tests/specs/erc20/hkg/transferFrom-success-2-spec.k +++ /dev/null @@ -1,121 +0,0 @@ -requires "../verification.k" - -module TRANSFERFROM-SUCCESS-2-SPEC - imports VERIFICATION - - // transferFrom-success-2 - claim - - #execute => #halt - 1 - NORMAL - CONSTANTINOPLE - true - - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #computeValidJumpDests(#parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029")) - - ACCT_ID // contract owner - CALLER_ID // who called this contract; in the begining, origin // msg.sender - - #abiCallData("transferFrom", #address(FROM_ID), #address(TO_ID), #uint256(VALUE)) - - 0 - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - false // NOTE: non-static call - CALL_DEPTH - - - - _ - _:List ( .List => ListItem(#abiEventLog(ACCT_ID, "Transfer", #indexed(#address(FROM_ID)), #indexed(#address(TO_ID)), #uint256(VALUE))) ) - _ => ?_ // TODO: more detail - _ => ?_ - _ => ?_ - - - _ - ORIGIN_ID // who fires tx - - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - - - - - _ - - - - ACCT_ID - _ - #parseByteStack("0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061034a565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506105c6565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061060f565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610778565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610417575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104235750600082115b156105ba5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105bf565b600090505b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106605750600082115b1561076d5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610772565b600090505b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058206cb5284e8795f7d1c570318732bc1cb8add2222946156c0ba28c946531c4a2f50029") - #hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> (ALLOW => ALLOW -Int VALUE) -_:Map - #hashedLocation("Solidity", 1, FROM_ID) |-> BAL_FROM -#hashedLocation("Solidity", 2, FROM_ID CALLER_ID) |-> ALLOW -_:Map - _ - - // ... // TODO: fix - - - _ - _ - _ - - - - requires 0 <=Int ACCT_ID andBool ACCT_ID Int 0 -andBool #hashedLocation("Solidity", 2, FROM_ID CALLER_ID) =/=Int #hashedLocation("Solidity", 1, FROM_ID) - - -endmodule - diff --git a/tests/specs/erc20/verification.k b/tests/specs/erc20/verification.k deleted file mode 100644 index f6a6ba4bf6..0000000000 --- a/tests/specs/erc20/verification.k +++ /dev/null @@ -1,7 +0,0 @@ -requires "edsl.md" -requires "lemmas/lemmas.k" - -module VERIFICATION - imports LEMMAS - imports EDSL -endmodule diff --git a/tests/specs/examples/ERC20.sol b/tests/specs/examples/ERC20.sol deleted file mode 100644 index f62add45a8..0000000000 --- a/tests/specs/examples/ERC20.sol +++ /dev/null @@ -1,94 +0,0 @@ -// THIS IS A BUGGY ERC20 -// DO NOT USE FOR ANYTHING - -pragma solidity >=0.6.0; - -contract ERC20 { - - mapping(address => uint256) private _balances; - mapping(address => mapping(address => uint256)) private _allowances; - - uint256 private _totalSupply; - uint8 private _decimals; - string private _name; - string private _symbol; - - constructor ( - string memory name - , string memory symbol - , address initAccount - , uint256 initSupply - , uint8 decimals - ) public { - _name = name; - _symbol = symbol; - _decimals = decimals; - _mint(initAccount, initSupply); - } - - function name() public view returns (string memory) { return _name; } - function symbol() public view returns (string memory) { return _symbol; } - function decimals() public view returns (uint256) { return _decimals; } - function totalSupply() public view returns (uint256) { return _totalSupply; } - - function balanceOf(address account) external view returns (uint256) { - return _balances[account]; - } - - function transfer(address to, uint256 amount) external returns (bool) { - _transfer(msg.sender, to, amount); - return true; - } - - function allowance(address owner, address spender) external view returns (uint256) { - return _allowances[owner][spender]; - } - - function approve(address spender, uint256 amount) external returns (bool) { - _approve(msg.sender, spender, amount); - return true; - } - - function transferFrom(address from, address to, uint256 amount) external returns (bool) { - _transfer(from, to, amount); - - uint256 currentAllowance = _allowances[from][msg.sender]; - require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); - _approve(from, msg.sender, currentAllowance - amount); - - return true; - } - - function _transfer(address from, address to, uint256 amount) internal { - require(from != address(0), "ERC20: transfer from the zero address"); - require(to != address(0), "ERC20: transfer to the zero address"); - uint256 toBalance = _balances[to]; - uint256 fromBalance = _balances[from]; - require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); - uint256 fromBalanceUpdated = fromBalance - amount; - uint256 toBalanceUpdated = toBalance + amount; - _balances[from] = fromBalanceUpdated; - _balances[to] = toBalanceUpdated; - } - - function _approve(address owner, address spender, uint256 amount) internal { - require(owner != address(0), "ERC20: approve from the zero address"); - require(spender != address(0), "ERC20: approve to the zero address"); - - _allowances[owner][spender] = amount; - } - - function _mint(address account, uint256 amount) internal { - require(account != address(0), "ERC20: mint to the zero address"); - require(_totalSupply <= _totalSupply + amount);//check overflow on totalSupply - _totalSupply = _totalSupply + amount; - _balances[account] = _balances[account] + amount; - } - - function _burn(address account, uint256 amount) internal { - require(account != address(0), "ERC20: burn from the zero address"); - require(_balances[account] >= _balances[account] - amount);//check underflow on balances - _totalSupply = _totalSupply - amount; - _balances[account] = _balances[account] - amount; - } -} diff --git a/tests/specs/examples/ERC721.sol b/tests/specs/examples/ERC721.sol deleted file mode 100644 index d3ec55f9d1..0000000000 --- a/tests/specs/examples/ERC721.sol +++ /dev/null @@ -1,982 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.0; - -// OpenZeppelin Contracts v4.4.1 (utils/Address.sol) - -/** - * @dev Collection of functions related to the address type - */ -library Address { - /** - * @dev Returns true if `account` is a contract. - * - * [IMPORTANT] - * ==== - * It is unsafe to assume that an address for which this function returns - * false is an externally-owned account (EOA) and not a contract. - * - * Among others, `isContract` will return false for the following - * types of addresses: - * - * - an externally-owned account - * - a contract in construction - * - an address where a contract will be created - * - an address where a contract lived, but was destroyed - * ==== - * - * [IMPORTANT] - * ==== - * You shouldn't rely on `isContract` to protect against flash loan attacks! - * - * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets - * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract - * constructor. - * ==== - */ - function isContract(address account) internal view returns (bool) { - // This method relies on extcodesize/address.code.length, which returns 0 - // for contracts in construction, since the code is only stored at the end - // of the constructor execution. - - return account.code.length > 0; - } - - /** - * @dev Replacement for Solidity's `transfer`: sends `amount` wei to - * `recipient`, forwarding all available gas and reverting on errors. - * - * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost - * of certain opcodes, possibly making contracts go over the 2300 gas limit - * imposed by `transfer`, making them unable to receive funds via - * `transfer`. {sendValue} removes this limitation. - * - * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. - * - * IMPORTANT: because control is transferred to `recipient`, care must be - * taken to not create reentrancy vulnerabilities. Consider using - * {ReentrancyGuard} or the - * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. - */ - function sendValue(address payable recipient, uint256 amount) internal { - require(address(this).balance >= amount, "Address: insufficient balance"); - - (bool success, ) = recipient.call{value: amount}(""); - require(success, "Address: unable to send value, recipient may have reverted"); - } - - /** - * @dev Performs a Solidity function call using a low level `call`. A - * plain `call` is an unsafe replacement for a function call: use this - * function instead. - * - * If `target` reverts with a revert reason, it is bubbled up by this - * function (like regular Solidity function calls). - * - * Returns the raw returned data. To convert to the expected return value, - * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. - * - * Requirements: - * - * - `target` must be a contract. - * - calling `target` with `data` must not revert. - * - * _Available since v3.1._ - */ - function functionCall(address target, bytes memory data) internal returns (bytes memory) { - return functionCall(target, data, "Address: low-level call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with - * `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCall( - address target, - bytes memory data, - string memory errorMessage - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, 0, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but also transferring `value` wei to `target`. - * - * Requirements: - * - * - the calling contract must have an ETH balance of at least `value`. - * - the called Solidity function must be `payable`. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); - } - - /** - * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but - * with `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value, - string memory errorMessage - ) internal returns (bytes memory) { - require(address(this).balance >= value, "Address: insufficient balance for call"); - require(isContract(target), "Address: call to non-contract"); - - (bool success, bytes memory returndata) = target.call{value: value}(data); - return verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { - return functionStaticCall(target, data, "Address: low-level static call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall( - address target, - bytes memory data, - string memory errorMessage - ) internal view returns (bytes memory) { - require(isContract(target), "Address: static call to non-contract"); - - (bool success, bytes memory returndata) = target.staticcall(data); - return verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but performing a delegate call. - * - * _Available since v3.4._ - */ - function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { - return functionDelegateCall(target, data, "Address: low-level delegate call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], - * but performing a delegate call. - * - * _Available since v3.4._ - */ - function functionDelegateCall( - address target, - bytes memory data, - string memory errorMessage - ) internal returns (bytes memory) { - require(isContract(target), "Address: delegate call to non-contract"); - - (bool success, bytes memory returndata) = target.delegatecall(data); - return verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the - * revert reason using the provided one. - * - * _Available since v4.3._ - */ - function verifyCallResult( - bool success, - bytes memory returndata, - string memory errorMessage - ) internal pure returns (bytes memory) { - if (success) { - return returndata; - } else { - // Look for revert reason and bubble it up if present - if (returndata.length > 0) { - // The easiest way to bubble the revert reason is using memory via assembly - - assembly { - let returndata_size := mload(returndata) - revert(add(32, returndata), returndata_size) - } - } else { - revert(errorMessage); - } - } - } -} - -// OpenZeppelin Contracts v4.4.1 (utils/Context.sol) - -/** - * @dev Provides information about the current execution context, including the - * sender of the transaction and its data. While these are generally available - * via msg.sender and msg.data, they should not be accessed in such a direct - * manner, since when dealing with meta-transactions the account sending and - * paying for execution may not be the actual sender (as far as an application - * is concerned). - * - * This contract is only required for intermediate, library-like contracts. - */ -abstract contract Context { - function _msgSender() internal view virtual returns (address) { - return msg.sender; - } - - function _msgData() internal view virtual returns (bytes calldata) { - return msg.data; - } -} - -// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) - -/** - * @dev String operations. - */ -library Strings { - bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; - - /** - * @dev Converts a `uint256` to its ASCII `string` decimal representation. - */ - function toString(uint256 value) internal pure returns (string memory) { - // Inspired by OraclizeAPI's implementation - MIT licence - // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol - - if (value == 0) { - return "0"; - } - uint256 temp = value; - uint256 digits; - while (temp != 0) { - digits++; - temp /= 10; - } - bytes memory buffer = new bytes(digits); - while (value != 0) { - digits -= 1; - buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); - value /= 10; - } - return string(buffer); - } - - /** - * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. - */ - function toHexString(uint256 value) internal pure returns (string memory) { - if (value == 0) { - return "0x00"; - } - uint256 temp = value; - uint256 length = 0; - while (temp != 0) { - length++; - temp >>= 8; - } - return toHexString(value, length); - } - - /** - * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. - */ - function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { - bytes memory buffer = new bytes(2 * length + 2); - buffer[0] = "0"; - buffer[1] = "x"; - for (uint256 i = 2 * length + 1; i > 1; --i) { - buffer[i] = _HEX_SYMBOLS[value & 0xf]; - value >>= 4; - } - require(value == 0, "Strings: hex length insufficient"); - return string(buffer); - } -} - -// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) - -/** - * @dev Interface of the ERC165 standard, as defined in the - * https://eips.ethereum.org/EIPS/eip-165[EIP]. - * - * Implementers can declare support of contract interfaces, which can then be - * queried by others ({ERC165Checker}). - * - * For an implementation, see {ERC165}. - */ -interface IERC165 { - /** - * @dev Returns true if this contract implements the interface defined by - * `interfaceId`. See the corresponding - * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] - * to learn more about how these ids are created. - * - * This function call must use less than 30 000 gas. - */ - function supportsInterface(bytes4 interfaceId) external view returns (bool); -} - -// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) - -/** - * @dev Implementation of the {IERC165} interface. - * - * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check - * for the additional interface id that will be supported. For example: - * - * ```solidity - * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { - * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); - * } - * ``` - * - * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. - */ -abstract contract ERC165 is IERC165 { - /** - * @dev See {IERC165-supportsInterface}. - */ - function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { - return interfaceId == type(IERC165).interfaceId; - } -} - -// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) - -/** - * @dev Required interface of an ERC721 compliant contract. - */ -interface IERC721 is IERC165 { - /** - * @dev Emitted when `tokenId` token is transferred from `from` to `to`. - */ - event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); - - /** - * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. - */ - event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); - - /** - * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. - */ - event ApprovalForAll(address indexed owner, address indexed operator, bool approved); - - /** - * @dev Returns the number of tokens in ``owner``'s account. - */ - function balanceOf(address owner) external view returns (uint256 balance); - - /** - * @dev Returns the owner of the `tokenId` token. - * - * Requirements: - * - * - `tokenId` must exist. - */ - function ownerOf(uint256 tokenId) external view returns (address owner); - - /** - * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients - * are aware of the ERC721 protocol to prevent tokens from being forever locked. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `tokenId` token must exist and be owned by `from`. - * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. - * - * Emits a {Transfer} event. - */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId - ) external; - - /** - * @dev Transfers `tokenId` token from `from` to `to`. - * - * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `tokenId` token must be owned by `from`. - * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - * - * Emits a {Transfer} event. - */ - function transferFrom( - address from, - address to, - uint256 tokenId - ) external; - - /** - * @dev Gives permission to `to` to transfer `tokenId` token to another account. - * The approval is cleared when the token is transferred. - * - * Only a single account can be approved at a time, so approving the zero address clears previous approvals. - * - * Requirements: - * - * - The caller must own the token or be an approved operator. - * - `tokenId` must exist. - * - * Emits an {Approval} event. - */ - function approve(address to, uint256 tokenId) external; - - /** - * @dev Returns the account approved for `tokenId` token. - * - * Requirements: - * - * - `tokenId` must exist. - */ - function getApproved(uint256 tokenId) external view returns (address operator); - - /** - * @dev Approve or remove `operator` as an operator for the caller. - * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. - * - * Requirements: - * - * - The `operator` cannot be the caller. - * - * Emits an {ApprovalForAll} event. - */ - function setApprovalForAll(address operator, bool _approved) external; - - /** - * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. - * - * See {setApprovalForAll} - */ - function isApprovedForAll(address owner, address operator) external view returns (bool); - - /** - * @dev Safely transfers `tokenId` token from `from` to `to`. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `tokenId` token must exist and be owned by `from`. - * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. - * - * Emits a {Transfer} event. - */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId, - bytes calldata data - ) external; -} - -// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) - -/** - * @title ERC721 token receiver interface - * @dev Interface for any contract that wants to support safeTransfers - * from ERC721 asset contracts. - */ -interface IERC721Receiver { - /** - * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} - * by `operator` from `from`, this function is called. - * - * It must return its Solidity selector to confirm the token transfer. - * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. - * - * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. - */ - function onERC721Received( - address operator, - address from, - uint256 tokenId, - bytes calldata data - ) external returns (bytes4); -} - -// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) - -/** - * @title ERC-721 Non-Fungible Token Standard, optional metadata extension - * @dev See https://eips.ethereum.org/EIPS/eip-721 - */ -interface IERC721Metadata is IERC721 { - /** - * @dev Returns the token collection name. - */ - function name() external view returns (string memory); - - /** - * @dev Returns the token collection symbol. - */ - function symbol() external view returns (string memory); - - /** - * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. - */ - function tokenURI(uint256 tokenId) external view returns (string memory); -} - -// OpenZeppelin Contracts v4.4.1 (token/ERC721/ERC721.sol) - -/** - * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including - * the Metadata extension, but not including the Enumerable extension, which is available separately as - * {ERC721Enumerable}. - */ -contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { - using Address for address; - using Strings for uint256; - - // Token name - string private _name; - - // Token symbol - string private _symbol; - - // Mapping from token ID to owner address - mapping(uint256 => address) private _owners; - - // Mapping owner address to token count - mapping(address => uint256) private _balances; - - // Mapping from token ID to approved address - mapping(uint256 => address) private _tokenApprovals; - - // Mapping from owner to operator approvals - mapping(address => mapping(address => bool)) private _operatorApprovals; - - /** - * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. - */ - constructor(string memory name_, string memory symbol_) { - _name = name_; - _symbol = symbol_; - } - - /** - * @dev See {IERC165-supportsInterface}. - */ - function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { - return - interfaceId == type(IERC721).interfaceId || - interfaceId == type(IERC721Metadata).interfaceId || - super.supportsInterface(interfaceId); - } - - /** - * @dev See {IERC721-balanceOf}. - */ - function balanceOf(address owner) public view virtual override returns (uint256) { - require(owner != address(0), "ERC721: balance query for the zero address"); - return _balances[owner]; - } - - /** - * @dev See {IERC721-ownerOf}. - */ - function ownerOf(uint256 tokenId) public view virtual override returns (address) { - address owner = _owners[tokenId]; - require(owner != address(0), "ERC721: owner query for nonexistent token"); - return owner; - } - - /** - * @dev See {IERC721Metadata-name}. - */ - function name() public view virtual override returns (string memory) { - return _name; - } - - /** - * @dev See {IERC721Metadata-symbol}. - */ - function symbol() public view virtual override returns (string memory) { - return _symbol; - } - - /** - * @dev See {IERC721Metadata-tokenURI}. - */ - function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { - require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); - - string memory baseURI = _baseURI(); - return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; - } - - /** - * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each - * token will be the concatenation of the `baseURI` and the `tokenId`. Empty - * by default, can be overriden in child contracts. - */ - function _baseURI() internal view virtual returns (string memory) { - return ""; - } - - /** - * @dev See {IERC721-approve}. - */ - function approve(address to, uint256 tokenId) public virtual override { - address owner = ERC721.ownerOf(tokenId); - require(to != owner, "ERC721: approval to current owner"); - - require( - _msgSender() == owner || isApprovedForAll(owner, _msgSender()), - "ERC721: approve caller is not owner nor approved for all" - ); - - _approve(to, tokenId); - } - - /** - * @dev See {IERC721-getApproved}. - */ - function getApproved(uint256 tokenId) public view virtual override returns (address) { - require(_exists(tokenId), "ERC721: approved query for nonexistent token"); - - return _tokenApprovals[tokenId]; - } - - /** - * @dev See {IERC721-setApprovalForAll}. - */ - function setApprovalForAll(address operator, bool approved) public virtual override { - _setApprovalForAll(_msgSender(), operator, approved); - } - - /** - * @dev See {IERC721-isApprovedForAll}. - */ - function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { - return _operatorApprovals[owner][operator]; - } - - /** - * @dev See {IERC721-transferFrom}. - */ - function transferFrom( - address from, - address to, - uint256 tokenId - ) public virtual override { - //solhint-disable-next-line max-line-length - require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); - - _transfer(from, to, tokenId); - } - - /** - * @dev See {IERC721-safeTransferFrom}. - */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId - ) public virtual override { - safeTransferFrom(from, to, tokenId, ""); - } - - /** - * @dev See {IERC721-safeTransferFrom}. - */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId, - bytes memory _data - ) public virtual override { - require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); - _safeTransfer(from, to, tokenId, _data); - } - - /** - * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients - * are aware of the ERC721 protocol to prevent tokens from being forever locked. - * - * `_data` is additional data, it has no specified format and it is sent in call to `to`. - * - * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. - * implement alternative mechanisms to perform token transfer, such as signature-based. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `tokenId` token must exist and be owned by `from`. - * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. - * - * Emits a {Transfer} event. - */ - function _safeTransfer( - address from, - address to, - uint256 tokenId, - bytes memory _data - ) internal virtual { - _transfer(from, to, tokenId); - require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); - } - - /** - * @dev Returns whether `tokenId` exists. - * - * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. - * - * Tokens start existing when they are minted (`_mint`), - * and stop existing when they are burned (`_burn`). - */ - function _exists(uint256 tokenId) internal view virtual returns (bool) { - return _owners[tokenId] != address(0); - } - - /** - * @dev Returns whether `spender` is allowed to manage `tokenId`. - * - * Requirements: - * - * - `tokenId` must exist. - */ - function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { - require(_exists(tokenId), "ERC721: operator query for nonexistent token"); - address owner = ERC721.ownerOf(tokenId); - return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); - } - - /** - * @dev Safely mints `tokenId` and transfers it to `to`. - * - * Requirements: - * - * - `tokenId` must not exist. - * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. - * - * Emits a {Transfer} event. - */ - function _safeMint(address to, uint256 tokenId) internal virtual { - _safeMint(to, tokenId, ""); - } - - /** - * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is - * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. - */ - function _safeMint( - address to, - uint256 tokenId, - bytes memory _data - ) internal virtual { - _mint(to, tokenId); - require( - _checkOnERC721Received(address(0), to, tokenId, _data), - "ERC721: transfer to non ERC721Receiver implementer" - ); - } - - /** - * @dev Mints `tokenId` and transfers it to `to`. - * - * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible - * - * Requirements: - * - * - `tokenId` must not exist. - * - `to` cannot be the zero address. - * - * Emits a {Transfer} event. - */ - function _mint(address to, uint256 tokenId) internal virtual { - require(to != address(0), "ERC721: mint to the zero address"); - require(!_exists(tokenId), "ERC721: token already minted"); - - _beforeTokenTransfer(address(0), to, tokenId); - - _balances[to] += 1; - _owners[tokenId] = to; - - emit Transfer(address(0), to, tokenId); - - _afterTokenTransfer(address(0), to, tokenId); - } - - /** - * @dev Destroys `tokenId`. - * The approval is cleared when the token is burned. - * - * Requirements: - * - * - `tokenId` must exist. - * - * Emits a {Transfer} event. - */ - function _burn(uint256 tokenId) internal virtual { - address owner = ERC721.ownerOf(tokenId); - - _beforeTokenTransfer(owner, address(0), tokenId); - - // Clear approvals - _approve(address(0), tokenId); - - _balances[owner] -= 1; - delete _owners[tokenId]; - - emit Transfer(owner, address(0), tokenId); - - _afterTokenTransfer(owner, address(0), tokenId); - } - - /** - * @dev Transfers `tokenId` from `from` to `to`. - * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. - * - * Requirements: - * - * - `to` cannot be the zero address. - * - `tokenId` token must be owned by `from`. - * - * Emits a {Transfer} event. - */ - function _transfer( - address from, - address to, - uint256 tokenId - ) internal virtual { - require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); - require(to != address(0), "ERC721: transfer to the zero address"); - - _beforeTokenTransfer(from, to, tokenId); - - // Clear approvals from the previous owner - _approve(address(0), tokenId); - - _balances[from] -= 1; - _balances[to] += 1; - _owners[tokenId] = to; - - emit Transfer(from, to, tokenId); - - _afterTokenTransfer(from, to, tokenId); - } - - /** - * @dev Approve `to` to operate on `tokenId` - * - * Emits a {Approval} event. - */ - function _approve(address to, uint256 tokenId) internal virtual { - _tokenApprovals[tokenId] = to; - emit Approval(ERC721.ownerOf(tokenId), to, tokenId); - } - - /** - * @dev Approve `operator` to operate on all of `owner` tokens - * - * Emits a {ApprovalForAll} event. - */ - function _setApprovalForAll( - address owner, - address operator, - bool approved - ) internal virtual { - require(owner != operator, "ERC721: approve to caller"); - _operatorApprovals[owner][operator] = approved; - emit ApprovalForAll(owner, operator, approved); - } - - /** - * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. - * The call is not executed if the target address is not a contract. - * - * @param from address representing the previous owner of the given token ID - * @param to target address that will receive the tokens - * @param tokenId uint256 ID of the token to be transferred - * @param _data bytes optional data to send along with the call - * @return bool whether the call correctly returned the expected magic value - */ - function _checkOnERC721Received( - address from, - address to, - uint256 tokenId, - bytes memory _data - ) private returns (bool) { - if (to.isContract()) { - try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { - return retval == IERC721Receiver.onERC721Received.selector; - } catch (bytes memory reason) { - if (reason.length == 0) { - revert("ERC721: transfer to non ERC721Receiver implementer"); - } else { - assembly { - revert(add(32, reason), mload(reason)) - } - } - } - } else { - return true; - } - } - - /** - * @dev Hook that is called before any token transfer. This includes minting - * and burning. - * - * Calling conditions: - * - * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be - * transferred to `to`. - * - When `from` is zero, `tokenId` will be minted for `to`. - * - When `to` is zero, ``from``'s `tokenId` will be burned. - * - `from` and `to` are never both zero. - * - * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. - */ - function _beforeTokenTransfer( - address from, - address to, - uint256 tokenId - ) internal virtual {} - - /** - * @dev Hook that is called after any transfer of tokens. This includes - * minting and burning. - * - * Calling conditions: - * - * - when `from` and `to` are both non-zero. - * - `from` and `to` are never both zero. - * - * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. - */ - function _afterTokenTransfer( - address from, - address to, - uint256 tokenId - ) internal virtual {} -} diff --git a/tests/specs/examples/Empty.sol b/tests/specs/examples/Empty.sol deleted file mode 100644 index 21a7692229..0000000000 --- a/tests/specs/examples/Empty.sol +++ /dev/null @@ -1,4 +0,0 @@ -pragma solidity >=0.6.0; - -contract Empty { -} diff --git a/tests/specs/examples/README.md b/tests/specs/examples/README.md deleted file mode 100644 index 6d77b97f76..0000000000 --- a/tests/specs/examples/README.md +++ /dev/null @@ -1,75 +0,0 @@ -Verification Instructions for KEVM -================================== - -If you're trying to analyze Solidity smart contracts with symbolic execution, check out our guide for Kontrol at [docs.runtimeverification.com/kontrol]. - -This folder contains instructions for kompiling and running claims using KEVM to help you start proving. - -Example: Sum to N ------------------ - -Have a look at the [sum-to-n-spec.k] file. -It has two modules: - - - `VERIFICATION` - containing the EVM program and a few `simplification` rules. - - `SUM-TO-N-SPEC` - containing the claims which will be executed. - -The first step is kompiling the `.k` file with the below command. - -```sh -kevm kompile-spec sum-to-n-spec.k --target haskell --syntax-module VERIFICATION --main-module VERIFICATION --output-definition sum-to-n-spec/haskell -``` - -In this example, the arguments used are: - - - `--target haskell`: specify which symbolic backend to use for reasoning. - - `--syntax-module VERIFICATION`: explicitly state the syntax module. - - `--main-module VERIFICATION`: explicitly state the main module. - - `--output-definition sum-to-n-spec/haskell`: the path where the kompiled definition is stored. - -Next, run the prover with: - -```sh -kevm prove-legacy sum-to-n-spec.k --definition sum-to-n-spec/haskell -``` - -The expected output is `#Top` which represents that all the claims have been proven. - -Debugging a proof ------------------ - -For `kevm prove-legacy`, you can use the `--debugger` flag to debug a proof. -With it, you can use `step`/`stepf` to navigate through the rewrite steps and `konfig` to display the K configuration. -You can see all the available commands using `help`. - -For `kevm prove`, you can use `kevm show-kcfg ...` or `kevm view-kcfg ...` to get a visualization. -***Note:*** this is not compatible with `kevm prove-legacy`. - -`kevm view-kcfg [spec_file] [--save-directory save_directory] [--claim claim_label] ...` command takes the same basic arguments as `kevm prove ...` does, including: - - `spec_file` is the file to look in for specifications. - This is the same file that is used for `kevm prove …`. - - `--save-directory` must be passed as where the KCFGs have been saved (by a previous call to `kevm prove --save-directory save_directory ...`) - - `--claim claim_label` lets you select an individual claim out of the `spec_file`. -If the flag is ommited, it’s assumed that only one claim is present. -If the flag is ommited and more than one claim is present in the `spec_file` then an error will be raised. - - `--spec-module spec_module` is also an inherited option. - -The interactive KCFG (`view-kcfg`) puts your terminal in *application mode*. -To select text in this mode, hold the modifier key provided by your terminal emulator (typically SHIFT or OPTION) while clicking and dragging. -Refer to the [Textualize documentation](https://github.com/Textualize/textual/blob/main/docs/FAQ.md#how-can-i-select-and-copy-text-in-a-textual-app) for more information. - -`kevm show-kcfg [spec_file] [--save-directory save_directory] [--claim claim_label] ...` command is pretty similar, but prints out the K Control Flow Graph to `stdout` instead. - -A running example (starting from the root of the repository): - -```sh -mkdir kcfgs -kevm kompile-spec tests/specs/benchmarks/verification.k --output-definition tests/specs/benchmarks/verification/haskell --main-module VERIFICATION --syntax-module VERIFICATION -kevm prove tests/specs/benchmarks/address00-spec.k --definition tests/specs/benchmarks/verification/haskell --verbose --save-directory kcfgs -kevm view-kcfg tests/specs/benchmarks/address00-spec.k --save-directory kcfgs --definition tests/specs/benchmarks/verification/haskell -``` - -[sum-to-n-spec.k]: <./sum-to-n-spec.k> -[K tutorial]: -[more about it here]: -[docs.runtimeverification.com/kontrol]: \ No newline at end of file diff --git a/tests/specs/examples/Storage.sol b/tests/specs/examples/Storage.sol deleted file mode 100644 index 5a795bb182..0000000000 --- a/tests/specs/examples/Storage.sol +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -contract Storage { - bool public myBool; - - uint8 public myUint8; - uint16 public myUint16; - uint24 public myUint24; - uint32 public myUint32; - uint40 public myUint40; - uint48 public myUint48; - uint56 public myUint56; - uint64 public myUint64; - uint72 public myUint72; - uint80 public myUint80; - uint88 public myUint88; - uint96 public myUint96; - uint104 public myUint104; - uint112 public myUint112; - uint120 public myUint120; - uint128 public myUint128; - uint136 public myUint136; - uint144 public myUint144; - uint152 public myUint152; - uint160 public myUint160; - uint168 public myUint168; - uint176 public myUint176; - uint184 public myUint184; - uint192 public myUint192; - uint200 public myUint200; - uint208 public myUint208; - uint216 public myUint216; - uint224 public myUint224; - uint232 public myUint232; - uint240 public myUint240; - uint248 public myUint248; - uint256 public myUint256; - - int8 public myInt8; - int16 public myInt16; - int24 public myInt24; - int32 public myInt32; - int40 public myInt40; - int48 public myInt48; - int56 public myInt56; - int64 public myInt64; - int72 public myInt72; - int80 public myInt80; - int88 public myInt88; - int96 public myInt96; - int104 public myInt104; - int112 public myInt112; - int120 public myInt120; - int128 public myInt128; - int136 public myInt136; - int144 public myInt144; - int152 public myInt152; - int160 public myInt160; - int168 public myInt168; - int176 public myInt176; - int184 public myInt184; - int192 public myInt192; - int200 public myInt200; - int208 public myInt208; - int216 public myInt216; - int224 public myInt224; - int232 public myInt232; - int240 public myInt240; - int248 public myInt248; - int256 public myInt256; - - string public myString; - bytes public myBytes; - - uint128[] myUint128s; - uint64[5] myUint64s; - - struct Foo { - uint128 myUint128; - uint8[] myUint8Array; - } - - Foo myFoo; - Foo[] myFoos; - - constructor () { - myBool = true; - myUint128 = 100; - myUint256 = 200; - myString = "foo"; - } - - function setMyBool(bool newBool) public { - myBool = newBool; - } - -} diff --git a/tests/specs/examples/erc20-bin-runtime.k b/tests/specs/examples/erc20-bin-runtime.k deleted file mode 100644 index 2c37f00a6f..0000000000 --- a/tests/specs/examples/erc20-bin-runtime.k +++ /dev/null @@ -1,141 +0,0 @@ -requires "edsl.md" - -module ERC20-CONTRACT - imports public EDSL - - syntax Contract ::= S2KERC20Contract - - syntax S2KERC20Contract ::= "S2KERC20" [symbol(), klabel(contract_ERC20)] - - rule ( #binRuntime ( S2KERC20 ) => #parseByteStack ( "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad919061098b565b60405180910390f35b6100d060048036038101906100cb9190610a46565b610292565b6040516100dd9190610aa1565b60405180910390f35b6100ee6102a9565b6040516100fb9190610acb565b60405180910390f35b61011e60048036038101906101199190610ae6565b6102b3565b60405161012b9190610aa1565b60405180910390f35b61013c6103a6565b6040516101499190610acb565b60405180910390f35b61016c60048036038101906101679190610b39565b6103c0565b6040516101799190610acb565b60405180910390f35b61018a610408565b604051610197919061098b565b60405180910390f35b6101ba60048036038101906101b59190610a46565b61049a565b6040516101c79190610aa1565b60405180910390f35b6101ea60048036038101906101e59190610b66565b6104b1565b6040516101f79190610acb565b60405180910390f35b60606004805461020f90610bd5565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610bd5565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b600061029f338484610538565b6001905092915050565b6000600254905090565b60006102c084848461069c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037b90610c78565b60405180910390fd5b61039a853385846103959190610cc7565b610538565b60019150509392505050565b6000600360009054906101000a900460ff1660ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606005805461041790610bd5565b80601f016020809104026020016040519081016040528092919081815260200182805461044390610bd5565b80156104905780601f1061046557610100808354040283529160200191610490565b820191906000526020600020905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b60006104a733848461069c565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059e90610d6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610dff565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361070b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070290610e91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361077a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077190610f23565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90610fb5565b60405180910390fd5b600083826108519190610cc7565b9050600084846108619190610fd5565b9050816000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561092c578082015181840152602081019050610911565b8381111561093b576000848401525b50505050565b6000601f19601f8301169050919050565b600061095d826108f2565b61096781856108fd565b935061097781856020860161090e565b61098081610941565b840191505092915050565b600060208201905081810360008301526109a58184610952565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109dd826109b2565b9050919050565b6109ed816109d2565b81146109f857600080fd5b50565b600081359050610a0a816109e4565b92915050565b6000819050919050565b610a2381610a10565b8114610a2e57600080fd5b50565b600081359050610a4081610a1a565b92915050565b60008060408385031215610a5d57610a5c6109ad565b5b6000610a6b858286016109fb565b9250506020610a7c85828601610a31565b9150509250929050565b60008115159050919050565b610a9b81610a86565b82525050565b6000602082019050610ab66000830184610a92565b92915050565b610ac581610a10565b82525050565b6000602082019050610ae06000830184610abc565b92915050565b600080600060608486031215610aff57610afe6109ad565b5b6000610b0d868287016109fb565b9350506020610b1e868287016109fb565b9250506040610b2f86828701610a31565b9150509250925092565b600060208284031215610b4f57610b4e6109ad565b5b6000610b5d848285016109fb565b91505092915050565b60008060408385031215610b7d57610b7c6109ad565b5b6000610b8b858286016109fb565b9250506020610b9c858286016109fb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610bed57607f821691505b602082108103610c0057610bff610ba6565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000610c626028836108fd565b9150610c6d82610c06565b604082019050919050565b60006020820190508181036000830152610c9181610c55565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610cd282610a10565b9150610cdd83610a10565b925082821015610cf057610cef610c98565b5b828203905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610d576024836108fd565b9150610d6282610cfb565b604082019050919050565b60006020820190508181036000830152610d8681610d4a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610de96022836108fd565b9150610df482610d8d565b604082019050919050565b60006020820190508181036000830152610e1881610ddc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000610e7b6025836108fd565b9150610e8682610e1f565b604082019050919050565b60006020820190508181036000830152610eaa81610e6e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000610f0d6023836108fd565b9150610f1882610eb1565b604082019050919050565b60006020820190508181036000830152610f3c81610f00565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000610f9f6026836108fd565b9150610faa82610f43565b604082019050919050565b60006020820190508181036000830152610fce81610f92565b9050919050565b6000610fe082610a10565b9150610feb83610a10565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156110205761101f610c98565b5b82820190509291505056fea2646970667358221220f0099f9a0198681f813e72904e1ac296b2e55f71057febf64d98a19b63dfc0c564736f6c634300080d0033" ) ) - - - syntax Field ::= ERC20Field - - syntax ERC20Field ::= "_balances" [symbol(), klabel(field_ERC20__balances)] - - syntax ERC20Field ::= "_allowances" [symbol(), klabel(field_ERC20__allowances)] - - syntax ERC20Field ::= "_totalSupply" [symbol(), klabel(field_ERC20__totalSupply)] - - syntax ERC20Field ::= "_decimals" [symbol(), klabel(field_ERC20__decimals)] - - syntax ERC20Field ::= "_name" [symbol(), klabel(field_ERC20__name)] - - syntax ERC20Field ::= "_symbol" [symbol(), klabel(field_ERC20__symbol)] - - rule ( #loc ( S2KERC20 . _balances ) => 0 ) - - - rule ( #loc ( S2KERC20 . _allowances ) => 1 ) - - - rule ( #loc ( S2KERC20 . _totalSupply ) => 2 ) - - - rule ( #loc ( S2KERC20 . _decimals ) => 3 ) - - - rule ( #loc ( S2KERC20 . _name ) => 4 ) - - - rule ( #loc ( S2KERC20 . _symbol ) => 5 ) - - - syntax Bytes ::= S2KERC20Contract "." S2KERC20Method [function(), symbol(), klabel(method_ERC20)] - - syntax S2KERC20Method ::= "S2Kallowance" "(" Int ":" "address" "," Int ":" "address" ")" [symbol(), klabel(method_ERC20_S2Kallowance_address_address)] - - syntax S2KERC20Method ::= "S2Kapprove" "(" Int ":" "address" "," Int ":" "uint256" ")" [symbol(), klabel(method_ERC20_S2Kapprove_address_uint256)] - - syntax S2KERC20Method ::= "S2KbalanceOf" "(" Int ":" "address" ")" [symbol(), klabel(method_ERC20_S2KbalanceOf_address)] - - syntax S2KERC20Method ::= "S2Kdecimals" "(" ")" [symbol(), klabel(method_ERC20_S2Kdecimals_)] - - syntax S2KERC20Method ::= "S2Kname" "(" ")" [symbol(), klabel(method_ERC20_S2Kname_)] - - syntax S2KERC20Method ::= "S2Ksymbol" "(" ")" [symbol(), klabel(method_ERC20_S2Ksymbol_)] - - syntax S2KERC20Method ::= "S2KtotalSupply" "(" ")" [symbol(), klabel(method_ERC20_S2KtotalSupply_)] - - syntax S2KERC20Method ::= "S2Ktransfer" "(" Int ":" "address" "," Int ":" "uint256" ")" [symbol(), klabel(method_ERC20_S2Ktransfer_address_uint256)] - - syntax S2KERC20Method ::= "S2KtransferFrom" "(" Int ":" "address" "," Int ":" "address" "," Int ":" "uint256" ")" [symbol(), klabel(method_ERC20_S2KtransferFrom_address_address_uint256)] - - rule ( S2KERC20 . S2Kallowance ( V0_owner : address , V1_spender : address ) => #abiCallData ( "allowance" , #address ( V0_owner ) , #address ( V1_spender ) , .TypedArgs ) ) - ensures ( #rangeAddress ( V0_owner ) - andBool ( #rangeAddress ( V1_spender ) - )) - - - rule ( S2KERC20 . S2Kapprove ( V0_spender : address , V1_amount : uint256 ) => #abiCallData ( "approve" , #address ( V0_spender ) , #uint256 ( V1_amount ) , .TypedArgs ) ) - ensures ( #rangeAddress ( V0_spender ) - andBool ( #rangeUInt ( 256 , V1_amount ) - )) - - - rule ( S2KERC20 . S2KbalanceOf ( V0_account : address ) => #abiCallData ( "balanceOf" , #address ( V0_account ) , .TypedArgs ) ) - ensures #rangeAddress ( V0_account ) - - - rule ( S2KERC20 . S2Kdecimals ( ) => #abiCallData ( "decimals" , .TypedArgs ) ) - - - rule ( S2KERC20 . S2Kname ( ) => #abiCallData ( "name" , .TypedArgs ) ) - - - rule ( S2KERC20 . S2Ksymbol ( ) => #abiCallData ( "symbol" , .TypedArgs ) ) - - - rule ( S2KERC20 . S2KtotalSupply ( ) => #abiCallData ( "totalSupply" , .TypedArgs ) ) - - - rule ( S2KERC20 . S2Ktransfer ( V0_to : address , V1_amount : uint256 ) => #abiCallData ( "transfer" , #address ( V0_to ) , #uint256 ( V1_amount ) , .TypedArgs ) ) - ensures ( #rangeAddress ( V0_to ) - andBool ( #rangeUInt ( 256 , V1_amount ) - )) - - - rule ( S2KERC20 . S2KtransferFrom ( V0_from : address , V1_to : address , V2_amount : uint256 ) => #abiCallData ( "transferFrom" , #address ( V0_from ) , #address ( V1_to ) , #uint256 ( V2_amount ) , .TypedArgs ) ) - ensures ( #rangeAddress ( V0_from ) - andBool ( #rangeAddress ( V1_to ) - andBool ( #rangeUInt ( 256 , V2_amount ) - ))) - - - rule ( selector ( "allowance(address,address)" ) => 3714247998 ) - - - rule ( selector ( "approve(address,uint256)" ) => 157198259 ) - - - rule ( selector ( "balanceOf(address)" ) => 1889567281 ) - - - rule ( selector ( "decimals()" ) => 826074471 ) - - - rule ( selector ( "name()" ) => 117300739 ) - - - rule ( selector ( "symbol()" ) => 2514000705 ) - - - rule ( selector ( "totalSupply()" ) => 404098525 ) - - - rule ( selector ( "transfer(address,uint256)" ) => 2835717307 ) - - - rule ( selector ( "transferFrom(address,address,uint256)" ) => 599290589 ) - - -endmodule - -module ERC20-VERIFICATION - imports public ERC20-CONTRACT - - - -endmodule - diff --git a/tests/specs/examples/erc20-spec.md b/tests/specs/examples/erc20-spec.md deleted file mode 100644 index cca506b9e9..0000000000 --- a/tests/specs/examples/erc20-spec.md +++ /dev/null @@ -1,266 +0,0 @@ -ERC20-ish Verification -====================== - -```k -requires "edsl.md" -requires "optimizations.md" -requires "lemmas/lemmas.k" -``` - -Solidity Code -------------- - -File [`ERC20.sol`](ERC20.sol) contains some code snippets we want to verify the functional correctness of. -Call `kevm solc-to-k ERC20.sol ERC20 --main-module ERC20-VERIFICATION > erc20-bin-runtime.k `, to generate the helper K files. - -Verification Module -------------------- - -Helper module for verification tasks. - -- Add any lemmas needed for our proofs. -- Import a large body of existing lemmas from KEVM. - -```k -requires "erc20-bin-runtime.k" - -module VERIFICATION - imports EDSL - imports LEMMAS - imports EVM-OPTIMIZATIONS - imports ERC20-VERIFICATION - - syntax Step ::= Bytes | Int - syntax KItem ::= runLemma ( Step ) [symbol(runLemma)] | doneLemma ( Step ) - // ------------------------------------------------------- - rule runLemma(S) => doneLemma(S) ... - - // decimals lemmas - // --------------- - - rule 255 &Int X true requires 0 <=Int X [simplification, smt-lemma] - rule 0 <=Int 255 &Int X => true requires 0 <=Int X [simplification, smt-lemma] - -endmodule -``` - -K Specifications ----------------- - -Formal specifications (using KEVM) of the correctness properties for our Solidity code. - -```k -module ERC20-SPEC - imports VERIFICATION -``` - -### Functional Claims - -```k - claim runLemma(#bufStrict(32, #loc(S2KERC20._allowances[OWNER]))) => doneLemma(#buf(32, keccak(#buf(32, OWNER) +Bytes #buf(32, 1)))) ... - requires #rangeAddress(OWNER) -``` - -### Calling decimals() works - -- Everything from `` to `` is boilerplate. -- We are setting `` to `decimals()`. -- We ask the prover to show that in all cases, we will end in `EVMC_SUCCESS` (rollback) when this happens. -- The `` cell specifies that we correctly lookup the `DECIMALS` value from the account storage. - -```k - claim [decimals]: - NORMAL - ISTANBUL - true - - .List - #binRuntime(S2KERC20) - #computeValidJumpDests(#binRuntime(S2KERC20)) - - ACCTID => ?_ - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - - S2KERC20.S2Kdecimals() - #execute => #halt ... - .Bytes => #buf(32, DECIMALS) - _ => EVMC_SUCCESS - - - ACCTID - ACCT_STORAGE - ... - - - requires DECIMALS_KEY ==Int #loc(S2KERC20._decimals) - andBool DECIMALS ==Int 255 &Int #lookup(ACCT_STORAGE, DECIMALS_KEY) -``` - -### Calling totalSupply() works - -- Everything from `` to `` is boilerplate. -- We are setting `` to `totalSupply()`. -- We ask the prover to show that in all cases, we will end in `EVMC_SUCCESS` (rollback) when this happens. -- The `` cell specifies that we correctly lookup the `TS` value from the account storage. - - -```k - claim [totalSupply]: - NORMAL - ISTANBUL - true - - .List - #binRuntime(S2KERC20) - #computeValidJumpDests(#binRuntime(S2KERC20)) - - ACCTID => ?_ - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - - S2KERC20.S2KtotalSupply() - #execute => #halt ... - .Bytes => #buf(32, TOTALSUPPLY) - _ => EVMC_SUCCESS - - - ACCTID - ACCT_STORAGE - ... - - - requires TOTALSUPPLY_KEY ==Int #loc(S2KERC20._totalSupply) - andBool TOTALSUPPLY ==Int #lookup(ACCT_STORAGE, TOTALSUPPLY_KEY) -``` - -```k - claim [totalSupply.noGas]: - NORMAL - ISTANBUL - false - - .List - #binRuntime(S2KERC20) - #computeValidJumpDests(#binRuntime(S2KERC20)) - - ACCTID => ?_ - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - _ - 0 => ?_ - - S2KERC20.S2KtotalSupply() - #execute => #halt ... - .Bytes => #buf(32, TOTALSUPPLY) - _ => EVMC_SUCCESS - - - ACCTID - ACCT_STORAGE - ... - - - requires TOTALSUPPLY_KEY ==Int #loc(S2KERC20._totalSupply) - andBool TOTALSUPPLY ==Int #lookup(ACCT_STORAGE, TOTALSUPPLY_KEY) -``` -### Calling Approve works - -- Everything from `` to `` is boilerplate. -- We are setting `` to `approve(SPENDER : address, AMOUNT : uint256)`. -- We ask the prover to show that in all cases, we will end in `EVMC_SUCCESS` when `SENDER` or `OWNER` is not `address(0)`, and that we will end in `EVMC_REVERT` (rollback) when either one of them is. -- We take the OWNER from the `` cell, which is the `msg.sender`. -- The `` should be `#buf(32, bool2Word(True))` if the function does not revert. -- The storage locations for Allowance should be updated accordingly. - -```k - claim [approve.success]: - NORMAL - ISTANBUL - true - - .List - #binRuntime(S2KERC20) - #computeValidJumpDests(#binRuntime(S2KERC20)) - false - - ACCTID => ?_ - OWNER => ?_ - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - S2KERC20.S2Kapprove(SPENDER : address, AMOUNT : uint256) - #execute => #halt ... - .Bytes => #buf(32, 1) - _ => EVMC_SUCCESS - - - ACCTID - ACCT_STORAGE => ACCT_STORAGE [ ALLOWANCE_KEY <- AMOUNT ] - ... - - - requires ALLOWANCE_KEY ==Int #loc(S2KERC20._allowances[OWNER][SPENDER]) - andBool #rangeAddress(OWNER) - andBool #rangeAddress(SPENDER) - andBool #rangeUInt(256, AMOUNT) - andBool OWNER =/=Int 0 - andBool SPENDER =/=Int 0 -``` - -```k - claim [approve.revert]: - NORMAL - ISTANBUL - true - - .List - #binRuntime(S2KERC20) - #computeValidJumpDests(#binRuntime(S2KERC20)) - false - - ACCTID => ?_ - OWNER => ?_ - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - _ => ?_ - - S2KERC20.S2Kapprove(SPENDER : address, AMOUNT : uint256) - #execute => #halt ... - _ => ?_ - _ => EVMC_REVERT - - - ACCTID - _ACCT_STORAGE - ... - - - requires #rangeAddress(OWNER) - andBool #rangeAddress(SPENDER) - andBool #rangeUInt(256, AMOUNT) - andBool (OWNER ==Int 0 orBool SPENDER ==Int 0) -``` - -```k -endmodule -``` diff --git a/tests/specs/examples/erc20-spec/index.html b/tests/specs/examples/erc20-spec/index.html new file mode 100644 index 0000000000..c75deb6223 --- /dev/null +++ b/tests/specs/examples/erc20-spec/index.html @@ -0,0 +1,477 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

ERC20-ish Verification

+
requires "edsl.md"
+requires "optimizations.md"
+requires "lemmas/lemmas.k"
+
+

Solidity Code

+

File ERC20.sol contains some code snippets we want to verify the functional correctness of. +Call kevm solc-to-k ERC20.sol ERC20 --main-module ERC20-VERIFICATION > erc20-bin-runtime.k , to generate the helper K files.

+

Verification Module

+

Helper module for verification tasks.

+
    +
  • Add any lemmas needed for our proofs.
  • +
  • Import a large body of existing lemmas from KEVM.
  • +
+
requires "erc20-bin-runtime.k"
+
+module VERIFICATION
+    imports EDSL
+    imports LEMMAS
+    imports EVM-OPTIMIZATIONS
+    imports ERC20-VERIFICATION
+
+    syntax Step ::= Bytes | Int
+    syntax KItem ::= runLemma ( Step ) [symbol(runLemma)] | doneLemma ( Step )
+ // -------------------------------------------------------
+    rule <k> runLemma(S) => doneLemma(S) ... </k>
+
+ // decimals lemmas
+ // ---------------
+
+    rule         255 &Int X <Int 256 => true requires 0 <=Int X [simplification, smt-lemma]
+    rule 0 <=Int 255 &Int X          => true requires 0 <=Int X [simplification, smt-lemma]
+
+endmodule
+
+

K Specifications

+

Formal specifications (using KEVM) of the correctness properties for our Solidity code.

+
module ERC20-SPEC
+    imports VERIFICATION
+
+

Functional Claims

+
    claim <k> runLemma(#bufStrict(32, #loc(S2KERC20._allowances[OWNER]))) => doneLemma(#buf(32, keccak(#buf(32, OWNER) +Bytes #buf(32, 1)))) ... </k>
+      requires #rangeAddress(OWNER)
+
+

Calling decimals() works

+
    +
  • Everything from <mode> to <callValue> is boilerplate.
  • +
  • We are setting <callData> to decimals().
  • +
  • We ask the prover to show that in all cases, we will end in EVMC_SUCCESS (rollback) when this happens.
  • +
  • The <output> cell specifies that we correctly lookup the DECIMALS value from the account storage.
  • +
+
    claim [decimals]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                      </callStack>
+          <program>   #binRuntime(S2KERC20)                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime(S2KERC20)) </jumpDests>
+
+          <id>         ACCTID      => ?_ </id>
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+
+          <callData>   S2KERC20.S2Kdecimals()               </callData>
+          <k>          #execute => #halt ...          </k>
+          <output>     .Bytes   => #buf(32, DECIMALS) </output>
+          <statusCode> _        => EVMC_SUCCESS       </statusCode>
+
+          <account>
+            <acctID> ACCTID </acctID>
+            <storage> ACCT_STORAGE </storage>
+            ...
+          </account>
+
+       requires DECIMALS_KEY ==Int #loc(S2KERC20._decimals)
+        andBool DECIMALS     ==Int 255 &Int #lookup(ACCT_STORAGE, DECIMALS_KEY)
+
+

Calling totalSupply() works

+
    +
  • Everything from <mode> to <callValue> is boilerplate.
  • +
  • We are setting <callData> to totalSupply().
  • +
  • We ask the prover to show that in all cases, we will end in EVMC_SUCCESS (rollback) when this happens.
  • +
  • The <output> cell specifies that we correctly lookup the TS value from the account storage.
  • +
+
    claim [totalSupply]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                      </callStack>
+          <program>   #binRuntime(S2KERC20)                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime(S2KERC20)) </jumpDests>
+
+          <id>         ACCTID      => ?_ </id>
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+
+          <callData>   S2KERC20.S2KtotalSupply()               </callData>
+          <k>          #execute => #halt ...             </k>
+          <output>     .Bytes   => #buf(32, TOTALSUPPLY) </output>
+          <statusCode> _        => EVMC_SUCCESS          </statusCode>
+
+          <account>
+            <acctID> ACCTID </acctID>
+            <storage> ACCT_STORAGE </storage>
+            ...
+          </account>
+
+       requires TOTALSUPPLY_KEY ==Int #loc(S2KERC20._totalSupply)
+        andBool TOTALSUPPLY     ==Int #lookup(ACCT_STORAGE,  TOTALSUPPLY_KEY)
+
+
    claim [totalSupply.noGas]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  false     </useGas>
+
+          <callStack> .List                                         </callStack>
+          <program>   #binRuntime(S2KERC20)                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime(S2KERC20)) </jumpDests>
+
+          <id>         ACCTID      => ?_ </id>
+          <localMem>   .Bytes      => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        _                  </gas>
+          <callValue>  0           => ?_ </callValue>
+
+          <callData>   S2KERC20.S2KtotalSupply()         </callData>
+          <k>          #execute => #halt ...             </k>
+          <output>     .Bytes   => #buf(32, TOTALSUPPLY) </output>
+          <statusCode> _        => EVMC_SUCCESS          </statusCode>
+
+          <account>
+            <acctID> ACCTID </acctID>
+            <storage> ACCT_STORAGE </storage>
+            ...
+          </account>
+
+       requires TOTALSUPPLY_KEY ==Int #loc(S2KERC20._totalSupply)
+        andBool TOTALSUPPLY     ==Int #lookup(ACCT_STORAGE,  TOTALSUPPLY_KEY)
+
+

Calling Approve works

+
    +
  • Everything from <mode> to <substate> is boilerplate.
  • +
  • We are setting <callData> to approve(SPENDER : address, AMOUNT : uint256).
  • +
  • We ask the prover to show that in all cases, we will end in EVMC_SUCCESS when SENDER or OWNER is not address(0), and that we will end in EVMC_REVERT (rollback) when either one of them is.
  • +
  • We take the OWNER from the <caller> cell, which is the msg.sender.
  • +
  • The <output> should be #buf(32, bool2Word(True)) if the function does not revert.
  • +
  • The storage locations for Allowance should be updated accordingly.
  • +
+
    claim [approve.success]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                      </callStack>
+          <program>   #binRuntime(S2KERC20)                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime(S2KERC20)) </jumpDests>
+          <static>    false                                      </static>
+
+          <id>         ACCTID      => ?_ </id>
+          <caller>     OWNER       => ?_ </caller>
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+          <substate> _             => ?_ </substate>
+
+          <callData>   S2KERC20.S2Kapprove(SPENDER : address, AMOUNT : uint256) </callData>
+          <k>          #execute => #halt ...        </k>
+          <output>     .Bytes   => #buf(32, 1)      </output>
+          <statusCode> _        => EVMC_SUCCESS     </statusCode>
+
+          <account>
+            <acctID> ACCTID </acctID>
+            <storage> ACCT_STORAGE => ACCT_STORAGE [ ALLOWANCE_KEY <- AMOUNT ] </storage>
+            ...
+          </account>
+
+       requires ALLOWANCE_KEY ==Int #loc(S2KERC20._allowances[OWNER][SPENDER])
+        andBool #rangeAddress(OWNER)
+        andBool #rangeAddress(SPENDER)
+        andBool #rangeUInt(256, AMOUNT)
+        andBool OWNER =/=Int 0
+        andBool SPENDER =/=Int 0
+
+
    claim [approve.revert]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                      </callStack>
+          <program>   #binRuntime(S2KERC20)                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime(S2KERC20)) </jumpDests>
+          <static>    false                                      </static>
+
+          <id>         ACCTID      => ?_ </id>
+          <caller>     OWNER       => ?_ </caller>
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+          <substate> _             => ?_ </substate>
+
+          <callData>   S2KERC20.S2Kapprove(SPENDER : address, AMOUNT : uint256) </callData>
+          <k>          #execute   => #halt ...        </k>
+          <output>     _          => ?_               </output>
+          <statusCode> _          => EVMC_REVERT      </statusCode>
+
+          <account>
+            <acctID> ACCTID </acctID>
+            <storage> _ACCT_STORAGE </storage>
+            ...
+          </account>
+
+       requires #rangeAddress(OWNER)
+        andBool #rangeAddress(SPENDER)
+        andBool #rangeUInt(256, AMOUNT)
+        andBool (OWNER ==Int 0 orBool SPENDER ==Int 0)
+
+
endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/tests/specs/examples/erc721-bin-runtime.k b/tests/specs/examples/erc721-bin-runtime.k deleted file mode 100644 index 65c6c8b837..0000000000 --- a/tests/specs/examples/erc721-bin-runtime.k +++ /dev/null @@ -1,186 +0,0 @@ -requires "edsl.md" - -module ERC721-CONTRACT - imports public EDSL - - syntax Contract ::= S2KERC721Contract - - syntax S2KERC721Contract ::= "S2KERC721" [symbol(), klabel(contract_ERC721)] - - rule ( #binRuntime ( S2KERC721 ) => #parseByteStack ( "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb46514610224578063b88d4fde14610240578063c87b56dd1461025c578063e985e9c51461028c576100cf565b80636352211e146101a657806370a08231146101d657806395d89b4114610206576100cf565b806301ffc9a7146100d457806306fdde0314610104578063081812fc14610122578063095ea7b31461015257806323b872dd1461016e57806342842e0e1461018a575b600080fd5b6100ee60048036038101906100e99190611433565b6102bc565b6040516100fb919061147b565b60405180910390f35b61010c61039e565b604051610119919061152f565b60405180910390f35b61013c60048036038101906101379190611587565b610430565b60405161014991906115f5565b60405180910390f35b61016c6004803603810190610167919061163c565b6104b5565b005b6101886004803603810190610183919061167c565b6105cc565b005b6101a4600480360381019061019f919061167c565b61062c565b005b6101c060048036038101906101bb9190611587565b61064c565b6040516101cd91906115f5565b60405180910390f35b6101f060048036038101906101eb91906116cf565b6106fd565b6040516101fd919061170b565b60405180910390f35b61020e6107b4565b60405161021b919061152f565b60405180910390f35b61023e60048036038101906102399190611752565b610846565b005b61025a600480360381019061025591906118c7565b61085c565b005b61027660048036038101906102719190611587565b6108be565b604051610283919061152f565b60405180910390f35b6102a660048036038101906102a1919061194a565b610965565b6040516102b3919061147b565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103975750610396826109f9565b5b9050919050565b6060600080546103ad906119b9565b80601f01602080910402602001604051908101604052809291908181526020018280546103d9906119b9565b80156104265780601f106103fb57610100808354040283529160200191610426565b820191906000526020600020905b81548152906001019060200180831161040957829003601f168201915b5050505050905090565b600061043b82610a63565b61047a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047190611a5c565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104c08261064c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052790611aee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661054f610acf565b73ffffffffffffffffffffffffffffffffffffffff16148061057e575061057d81610578610acf565b610965565b5b6105bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b490611b80565b60405180910390fd5b6105c78383610ad7565b505050565b6105dd6105d7610acf565b82610b90565b61061c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061390611c12565b60405180910390fd5b610627838383610c6e565b505050565b6106478383836040518060200160405280600081525061085c565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106eb90611ca4565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361076d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076490611d36565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107c3906119b9565b80601f01602080910402602001604051908101604052809291908181526020018280546107ef906119b9565b801561083c5780601f106108115761010080835404028352916020019161083c565b820191906000526020600020905b81548152906001019060200180831161081f57829003601f168201915b5050505050905090565b610858610851610acf565b8383610ed4565b5050565b61086d610867610acf565b83610b90565b6108ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a390611c12565b60405180910390fd5b6108b884848484611040565b50505050565b60606108c982610a63565b610908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ff90611dc8565b60405180910390fd5b600061091261109c565b90506000815111610932576040518060200160405280600081525061095d565b8061093c846110b3565b60405160200161094d929190611e24565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610b4a8361064c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610b9b82610a63565b610bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd190611eba565b60405180910390fd5b6000610be58361064c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c5457508373ffffffffffffffffffffffffffffffffffffffff16610c3c84610430565b73ffffffffffffffffffffffffffffffffffffffff16145b80610c655750610c648185610965565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610c8e8261064c565b73ffffffffffffffffffffffffffffffffffffffff1614610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb90611f4c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a90611fde565b60405180910390fd5b610d5e838383611213565b610d69600082610ad7565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610db9919061202d565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e109190612061565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610ecf838383611218565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3990612103565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611033919061147b565b60405180910390a3505050565b61104b848484610c6e565b6110578484848461121d565b611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90612195565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060600082036110fa576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061120e565b600082905060005b6000821461112c578080611115906121b5565b915050600a82611125919061222c565b9150611102565b60008167ffffffffffffffff8111156111485761114761179c565b5b6040519080825280601f01601f19166020018201604052801561117a5781602001600182028036833780820191505090505b5090505b6000851461120757600182611193919061202d565b9150600a856111a2919061225d565b60306111ae9190612061565b60f81b8183815181106111c4576111c361228e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611200919061222c565b945061117e565b8093505050505b919050565b505050565b505050565b600061123e8473ffffffffffffffffffffffffffffffffffffffff166113a4565b15611397578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611267610acf565b8786866040518563ffffffff1660e01b81526004016112899493929190612312565b6020604051808303816000875af19250505080156112c557506040513d601f19601f820116820180604052508101906112c29190612373565b60015b611347573d80600081146112f5576040519150601f19603f3d011682016040523d82523d6000602084013e6112fa565b606091505b50600081510361133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690612195565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061139c565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611410816113db565b811461141b57600080fd5b50565b60008135905061142d81611407565b92915050565b600060208284031215611449576114486113d1565b5b60006114578482850161141e565b91505092915050565b60008115159050919050565b61147581611460565b82525050565b6000602082019050611490600083018461146c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114d05780820151818401526020810190506114b5565b838111156114df576000848401525b50505050565b6000601f19601f8301169050919050565b600061150182611496565b61150b81856114a1565b935061151b8185602086016114b2565b611524816114e5565b840191505092915050565b6000602082019050818103600083015261154981846114f6565b905092915050565b6000819050919050565b61156481611551565b811461156f57600080fd5b50565b6000813590506115818161155b565b92915050565b60006020828403121561159d5761159c6113d1565b5b60006115ab84828501611572565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115df826115b4565b9050919050565b6115ef816115d4565b82525050565b600060208201905061160a60008301846115e6565b92915050565b611619816115d4565b811461162457600080fd5b50565b60008135905061163681611610565b92915050565b60008060408385031215611653576116526113d1565b5b600061166185828601611627565b925050602061167285828601611572565b9150509250929050565b600080600060608486031215611695576116946113d1565b5b60006116a386828701611627565b93505060206116b486828701611627565b92505060406116c586828701611572565b9150509250925092565b6000602082840312156116e5576116e46113d1565b5b60006116f384828501611627565b91505092915050565b61170581611551565b82525050565b600060208201905061172060008301846116fc565b92915050565b61172f81611460565b811461173a57600080fd5b50565b60008135905061174c81611726565b92915050565b60008060408385031215611769576117686113d1565b5b600061177785828601611627565b92505060206117888582860161173d565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6117d4826114e5565b810181811067ffffffffffffffff821117156117f3576117f261179c565b5b80604052505050565b60006118066113c7565b905061181282826117cb565b919050565b600067ffffffffffffffff8211156118325761183161179c565b5b61183b826114e5565b9050602081019050919050565b82818337600083830152505050565b600061186a61186584611817565b6117fc565b90508281526020810184848401111561188657611885611797565b5b611891848285611848565b509392505050565b600082601f8301126118ae576118ad611792565b5b81356118be848260208601611857565b91505092915050565b600080600080608085870312156118e1576118e06113d1565b5b60006118ef87828801611627565b945050602061190087828801611627565b935050604061191187828801611572565b925050606085013567ffffffffffffffff811115611932576119316113d6565b5b61193e87828801611899565b91505092959194509250565b60008060408385031215611961576119606113d1565b5b600061196f85828601611627565b925050602061198085828601611627565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119d157607f821691505b6020821081036119e4576119e361198a565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000611a46602c836114a1565b9150611a51826119ea565b604082019050919050565b60006020820190508181036000830152611a7581611a39565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ad86021836114a1565b9150611ae382611a7c565b604082019050919050565b60006020820190508181036000830152611b0781611acb565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000611b6a6038836114a1565b9150611b7582611b0e565b604082019050919050565b60006020820190508181036000830152611b9981611b5d565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000611bfc6031836114a1565b9150611c0782611ba0565b604082019050919050565b60006020820190508181036000830152611c2b81611bef565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000611c8e6029836114a1565b9150611c9982611c32565b604082019050919050565b60006020820190508181036000830152611cbd81611c81565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000611d20602a836114a1565b9150611d2b82611cc4565b604082019050919050565b60006020820190508181036000830152611d4f81611d13565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000611db2602f836114a1565b9150611dbd82611d56565b604082019050919050565b60006020820190508181036000830152611de181611da5565b9050919050565b600081905092915050565b6000611dfe82611496565b611e088185611de8565b9350611e188185602086016114b2565b80840191505092915050565b6000611e308285611df3565b9150611e3c8284611df3565b91508190509392505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000611ea4602c836114a1565b9150611eaf82611e48565b604082019050919050565b60006020820190508181036000830152611ed381611e97565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000611f366025836114a1565b9150611f4182611eda565b604082019050919050565b60006020820190508181036000830152611f6581611f29565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611fc86024836114a1565b9150611fd382611f6c565b604082019050919050565b60006020820190508181036000830152611ff781611fbb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061203882611551565b915061204383611551565b92508282101561205657612055611ffe565b5b828203905092915050565b600061206c82611551565b915061207783611551565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156120ac576120ab611ffe565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006120ed6019836114a1565b91506120f8826120b7565b602082019050919050565b6000602082019050818103600083015261211c816120e0565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061217f6032836114a1565b915061218a82612123565b604082019050919050565b600060208201905081810360008301526121ae81612172565b9050919050565b60006121c082611551565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121f2576121f1611ffe565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061223782611551565b915061224283611551565b925082612252576122516121fd565b5b828204905092915050565b600061226882611551565b915061227383611551565b925082612283576122826121fd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b60006122e4826122bd565b6122ee81856122c8565b93506122fe8185602086016114b2565b612307816114e5565b840191505092915050565b600060808201905061232760008301876115e6565b61233460208301866115e6565b61234160408301856116fc565b818103606083015261235381846122d9565b905095945050505050565b60008151905061236d81611407565b92915050565b600060208284031215612389576123886113d1565b5b60006123978482850161235e565b9150509291505056fea2646970667358221220376610b0c4cb4eebd2681c826bc639cd81500f4f2fbdb98cfefb31572fe03af964736f6c634300080d0033" ) ) - - - syntax Field ::= ERC721Field - - syntax ERC721Field ::= "_name" [symbol(), klabel(field_ERC721__name)] - - syntax ERC721Field ::= "_symbol" [symbol(), klabel(field_ERC721__symbol)] - - syntax ERC721Field ::= "_owners" [symbol(), klabel(field_ERC721__owners)] - - syntax ERC721Field ::= "_balances" [symbol(), klabel(field_ERC721__balances)] - - syntax ERC721Field ::= "_tokenApprovals" [symbol(), klabel(field_ERC721__tokenApprovals)] - - syntax ERC721Field ::= "_operatorApprovals" [symbol(), klabel(field_ERC721__operatorApprovals)] - - rule ( #loc ( S2KERC721 . _name ) => 0 ) - - - rule ( #loc ( S2KERC721 . _symbol ) => 1 ) - - - rule ( #loc ( S2KERC721 . _owners ) => 2 ) - - - rule ( #loc ( S2KERC721 . _balances ) => 3 ) - - - rule ( #loc ( S2KERC721 . _tokenApprovals ) => 4 ) - - - rule ( #loc ( S2KERC721 . _operatorApprovals ) => 5 ) - - - syntax Bytes ::= S2KERC721Contract "." S2KERC721Method [function(), symbol(), klabel(method_ERC721)] - - syntax S2KERC721Method ::= "S2Kapprove" "(" Int ":" "address" "," Int ":" "uint256" ")" [symbol(), klabel(method_ERC721_S2Kapprove_address_uint256)] - - syntax S2KERC721Method ::= "S2KbalanceOf" "(" Int ":" "address" ")" [symbol(), klabel(method_ERC721_S2KbalanceOf_address)] - - syntax S2KERC721Method ::= "S2KgetApproved" "(" Int ":" "uint256" ")" [symbol(), klabel(method_ERC721_S2KgetApproved_uint256)] - - syntax S2KERC721Method ::= "S2KisApprovedForAll" "(" Int ":" "address" "," Int ":" "address" ")" [symbol(), klabel(method_ERC721_S2KisApprovedForAll_address_address)] - - syntax S2KERC721Method ::= "S2Kname" "(" ")" [symbol(), klabel(method_ERC721_S2Kname_)] - - syntax S2KERC721Method ::= "S2KownerOf" "(" Int ":" "uint256" ")" [symbol(), klabel(method_ERC721_S2KownerOf_uint256)] - - syntax S2KERC721Method ::= "S2KsafeTransferFrom" "(" Int ":" "address" "," Int ":" "address" "," Int ":" "uint256" ")" [symbol(), klabel(method_ERC721_S2KsafeTransferFrom_address_address_uint256)] - - syntax S2KERC721Method ::= "S2KsafeTransferFrom" "(" Int ":" "address" "," Int ":" "address" "," Int ":" "uint256" "," Bytes ":" "bytes" ")" [symbol(), klabel(method_ERC721_S2KsafeTransferFrom_address_address_uint256_bytes)] - - syntax S2KERC721Method ::= "S2KsetApprovalForAll" "(" Int ":" "address" "," Int ":" "bool" ")" [symbol(), klabel(method_ERC721_S2KsetApprovalForAll_address_bool)] - - syntax S2KERC721Method ::= "S2KsupportsInterface" "(" Int ":" "bytes4" ")" [symbol(), klabel(method_ERC721_S2KsupportsInterface_bytes4)] - - syntax S2KERC721Method ::= "S2Ksymbol" "(" ")" [symbol(), klabel(method_ERC721_S2Ksymbol_)] - - syntax S2KERC721Method ::= "S2KtokenURI" "(" Int ":" "uint256" ")" [symbol(), klabel(method_ERC721_S2KtokenURI_uint256)] - - syntax S2KERC721Method ::= "S2KtransferFrom" "(" Int ":" "address" "," Int ":" "address" "," Int ":" "uint256" ")" [symbol(), klabel(method_ERC721_S2KtransferFrom_address_address_uint256)] - - rule ( S2KERC721 . S2Kapprove ( V0_to : address , V1_tokenId : uint256 ) => #abiCallData ( "approve" , #address ( V0_to ) , #uint256 ( V1_tokenId ) , .TypedArgs ) ) - ensures ( #rangeAddress ( V0_to ) - andBool ( #rangeUInt ( 256 , V1_tokenId ) - )) - - - rule ( S2KERC721 . S2KbalanceOf ( V0_owner : address ) => #abiCallData ( "balanceOf" , #address ( V0_owner ) , .TypedArgs ) ) - ensures #rangeAddress ( V0_owner ) - - - rule ( S2KERC721 . S2KgetApproved ( V0_tokenId : uint256 ) => #abiCallData ( "getApproved" , #uint256 ( V0_tokenId ) , .TypedArgs ) ) - ensures #rangeUInt ( 256 , V0_tokenId ) - - - rule ( S2KERC721 . S2KisApprovedForAll ( V0_owner : address , V1_operator : address ) => #abiCallData ( "isApprovedForAll" , #address ( V0_owner ) , #address ( V1_operator ) , .TypedArgs ) ) - ensures ( #rangeAddress ( V0_owner ) - andBool ( #rangeAddress ( V1_operator ) - )) - - - rule ( S2KERC721 . S2Kname ( ) => #abiCallData ( "name" , .TypedArgs ) ) - - - rule ( S2KERC721 . S2KownerOf ( V0_tokenId : uint256 ) => #abiCallData ( "ownerOf" , #uint256 ( V0_tokenId ) , .TypedArgs ) ) - ensures #rangeUInt ( 256 , V0_tokenId ) - - - rule ( S2KERC721 . S2KsafeTransferFrom ( V0_from : address , V1_to : address , V2_tokenId : uint256 ) => #abiCallData ( "safeTransferFrom" , #address ( V0_from ) , #address ( V1_to ) , #uint256 ( V2_tokenId ) , .TypedArgs ) ) - ensures ( #rangeAddress ( V0_from ) - andBool ( #rangeAddress ( V1_to ) - andBool ( #rangeUInt ( 256 , V2_tokenId ) - ))) - - - rule ( S2KERC721 . S2KsafeTransferFrom ( V0_from : address , V1_to : address , V2_tokenId : uint256 , V3__data : bytes ) => #abiCallData ( "safeTransferFrom" , #address ( V0_from ) , #address ( V1_to ) , #uint256 ( V2_tokenId ) , #bytes ( V3__data ) , .TypedArgs ) ) - ensures ( #rangeAddress ( V0_from ) - andBool ( #rangeAddress ( V1_to ) - andBool ( #rangeUInt ( 256 , V2_tokenId ) - andBool ( #rangeUInt ( 128 , lengthBytes ( V3__data ) ) - )))) - - - rule ( S2KERC721 . S2KsetApprovalForAll ( V0_operator : address , V1_approved : bool ) => #abiCallData ( "setApprovalForAll" , #address ( V0_operator ) , #bool ( V1_approved ) , .TypedArgs ) ) - ensures ( #rangeAddress ( V0_operator ) - andBool ( #rangeBool ( V1_approved ) - )) - - - rule ( S2KERC721 . S2KsupportsInterface ( V0_interfaceId : bytes4 ) => #abiCallData ( "supportsInterface" , #bytes4 ( V0_interfaceId ) , .TypedArgs ) ) - ensures #rangeBytes ( 4 , V0_interfaceId ) - - - rule ( S2KERC721 . S2Ksymbol ( ) => #abiCallData ( "symbol" , .TypedArgs ) ) - - - rule ( S2KERC721 . S2KtokenURI ( V0_tokenId : uint256 ) => #abiCallData ( "tokenURI" , #uint256 ( V0_tokenId ) , .TypedArgs ) ) - ensures #rangeUInt ( 256 , V0_tokenId ) - - - rule ( S2KERC721 . S2KtransferFrom ( V0_from : address , V1_to : address , V2_tokenId : uint256 ) => #abiCallData ( "transferFrom" , #address ( V0_from ) , #address ( V1_to ) , #uint256 ( V2_tokenId ) , .TypedArgs ) ) - ensures ( #rangeAddress ( V0_from ) - andBool ( #rangeAddress ( V1_to ) - andBool ( #rangeUInt ( 256 , V2_tokenId ) - ))) - - - rule ( selector ( "approve(address,uint256)" ) => 157198259 ) - - - rule ( selector ( "balanceOf(address)" ) => 1889567281 ) - - - rule ( selector ( "getApproved(uint256)" ) => 135795452 ) - - - rule ( selector ( "isApprovedForAll(address,address)" ) => 3917867461 ) - - - rule ( selector ( "name()" ) => 117300739 ) - - - rule ( selector ( "ownerOf(uint256)" ) => 1666326814 ) - - - rule ( selector ( "safeTransferFrom(address,address,uint256)" ) => 1115958798 ) - - - rule ( selector ( "safeTransferFrom(address,address,uint256,bytes)" ) => 3096268766 ) - - - rule ( selector ( "setApprovalForAll(address,bool)" ) => 2720838757 ) - - - rule ( selector ( "supportsInterface(bytes4)" ) => 33540519 ) - - - rule ( selector ( "symbol()" ) => 2514000705 ) - - - rule ( selector ( "tokenURI(uint256)" ) => 3363526365 ) - - - rule ( selector ( "transferFrom(address,address,uint256)" ) => 599290589 ) - - -endmodule - -module ERC721-VERIFICATION - imports public ERC721-CONTRACT - - - -endmodule - diff --git a/tests/specs/examples/erc721-spec.md b/tests/specs/examples/erc721-spec.md deleted file mode 100644 index 9743254d1b..0000000000 --- a/tests/specs/examples/erc721-spec.md +++ /dev/null @@ -1,150 +0,0 @@ -ERC721-ish Verification -======================= - -```k -requires "edsl.md" -requires "optimizations.md" -requires "lemmas/lemmas.k" -``` - -Solidity Code -------------- - -File [`ERC721.sol`](ERC721.sol) contains some code snippets we want to verify the functional correctness of. -Call `kevm solc-to-k ERC721.sol ERC721 > erc721-bin-runtime.k`, to generate the helper K files. - -Verification Module -------------------- - -Helper module for verification tasks. - -- Add any lemmas needed for our proofs. -- Import a large body of existing lemmas from KEVM. - -```k -requires "erc721-bin-runtime.k" - -module VERIFICATION - imports EDSL - imports LEMMAS - imports EVM-OPTIMIZATIONS - imports ERC721-VERIFICATION - - syntax Step ::= Bytes | Int | Bool - syntax KItem ::= runLemma ( Step ) [symbol(runLemma)] | doneLemma ( Step ) - // ------------------------------------------------------- - rule runLemma(S) => doneLemma(S) ... - - // Lemmas - // --------------- - - rule X &Int 127 true requires 0 <=Int X [simplification, smt-lemma] - rule 0 <=Int X &Int 127 => true requires 0 <=Int X [simplification, smt-lemma] - // rule X &Int 127 <=Int X => true requires 0 <=Int X [simplification, smt-lemma] - rule X &Int 127 true requires 0 <=Int X andBool X runLemma(chop(chop(chop(chop(chop(chop((#lookup(ACCT_STORAGE, 0) /Int 2 &Int 127) +Int 31) /Int 32 *Int 32) +Int 32) +Int 128) +Int 32) +Int 32)) - => doneLemma(((#lookup(ACCT_STORAGE, 0) /Int 2 &Int 127) +Int 31) /Int 32 *Int 32 +Int 224) ...
-``` - -```k -claim runLemma(#lookup(ACCT_STORAGE, 0) /Int 2 doneLemma(false) ... - requires 32 <=Int #lookup(ACCT_STORAGE, 0) /Int 2 &Int 127 -``` - -### Calling name() works - -- Everything from `` to `` is boilerplate. -- We are setting `` to `name()`. -- We claim that if NAME is a short string, we will end in `EVMC_SUCCESS` if it is well-formed, and in `EVMC_REVERT` otherwise. -- TODO: Add claims for long strings. -- TODO: The `` cell specifies that we correctly lookup the `NAME` value from the account storage. - -```k - claim [name.short.success]: - NORMAL - ISTANBUL - true - - .List - #binRuntime(S2KERC721) - #computeValidJumpDests(#binRuntime(S2KERC721)) - - ACCTID => ?_ - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - - S2KERC721.name() - #execute => #halt ... - .Bytes => ?_ - _ => EVMC_SUCCESS - - - ACCTID - ACCT_STORAGE - ... - - - requires NAME_KEY ==Int #loc(S2KERC721._name) - andBool NAME ==Int #lookup(ACCT_STORAGE, NAME_KEY) - andBool NAME &Int 1 ==Int 0 - andBool NAME /Int 2 &Int 127 NORMAL - ISTANBUL - true - - .List - #binRuntime(S2KERC721) - #computeValidJumpDests(#binRuntime(S2KERC721)) - - ACCTID => ?_ - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - - S2KERC721.name() - #execute => #halt ... - .Bytes => ?_ - _ => EVMC_REVERT - - - ACCTID - ACCT_STORAGE - ... - - - requires NAME_KEY ==Int #loc(S2KERC721._name) - andBool NAME ==Int #lookup(ACCT_STORAGE, NAME_KEY) - andBool NAME &Int 1 ==Int 0 - andBool 32 <=Int NAME /Int 2 &Int 127 -``` - -```k -endmodule -``` diff --git a/tests/specs/examples/erc721-spec/index.html b/tests/specs/examples/erc721-spec/index.html new file mode 100644 index 0000000000..40fc0b6d98 --- /dev/null +++ b/tests/specs/examples/erc721-spec/index.html @@ -0,0 +1,345 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

ERC721-ish Verification

+
requires "edsl.md"
+requires "optimizations.md"
+requires "lemmas/lemmas.k"
+
+

Solidity Code

+

File ERC721.sol contains some code snippets we want to verify the functional correctness of. +Call kevm solc-to-k ERC721.sol ERC721 > erc721-bin-runtime.k, to generate the helper K files.

+

Verification Module

+

Helper module for verification tasks.

+
    +
  • Add any lemmas needed for our proofs.
  • +
  • Import a large body of existing lemmas from KEVM.
  • +
+
requires "erc721-bin-runtime.k"
+
+module VERIFICATION
+    imports EDSL
+    imports LEMMAS
+    imports EVM-OPTIMIZATIONS
+    imports ERC721-VERIFICATION
+
+    syntax Step ::= Bytes | Int | Bool
+    syntax KItem ::= runLemma ( Step ) [symbol(runLemma)] | doneLemma ( Step )
+ // -------------------------------------------------------
+    rule <k> runLemma(S) => doneLemma(S) ... </k>
+
+ // Lemmas
+ // ---------------
+
+    rule         X &Int 127 <Int 128 => true requires 0 <=Int X                   [simplification, smt-lemma]
+    rule 0 <=Int X &Int 127          => true requires 0 <=Int X                   [simplification, smt-lemma]
+ // rule         X &Int 127 <=Int X  => true requires 0 <=Int X                   [simplification, smt-lemma]
+    rule         X &Int 127  <Int 32 => true requires 0 <=Int X andBool X <Int 32 [simplification, smt-lemma]
+
+endmodule
+
+

K Specifications

+

Formal specifications (using KEVM) of the correctness properties for our Solidity code.

+
module ERC721-SPEC
+    imports VERIFICATION
+
+
claim <k> runLemma(chop(chop(chop(chop(chop(chop((#lookup(ACCT_STORAGE, 0) /Int 2 &Int 127) +Int 31) /Int 32 *Int 32) +Int 32) +Int 128) +Int 32) +Int 32))
+       => doneLemma(((#lookup(ACCT_STORAGE, 0) /Int 2 &Int 127) +Int 31) /Int 32 *Int 32 +Int 224) ... </k>
+
+
claim <k> runLemma(#lookup(ACCT_STORAGE, 0) /Int 2 <Int 32)
+       => doneLemma(false) ... </k>
+ requires 32 <=Int #lookup(ACCT_STORAGE, 0) /Int 2 &Int 127
+
+

Calling name() works

+
    +
  • Everything from <mode> to <callValue> is boilerplate.
  • +
  • We are setting <callData> to name().
  • +
  • We claim that if NAME is a short string, we will end in EVMC_SUCCESS if it is well-formed, and in EVMC_REVERT otherwise.
  • +
  • TODO: Add claims for long strings.
  • +
  • TODO: The <output> cell specifies that we correctly lookup the NAME value from the account storage.
  • +
+
    claim [name.short.success]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                       </callStack>
+          <program>   #binRuntime(S2KERC721)                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime(S2KERC721)) </jumpDests>
+
+          <id>         ACCTID      => ?_ </id>
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+
+          <callData>   S2KERC721.name()            </callData>
+          <k>          #execute => #halt ...    </k>
+          <output>     .Bytes   => ?_           </output>
+          <statusCode> _        => EVMC_SUCCESS </statusCode>
+
+          <account>
+            <acctID>  ACCTID       </acctID>
+            <storage> ACCT_STORAGE </storage>
+            ...
+          </account>
+
+       requires NAME_KEY             ==Int #loc(S2KERC721._name)
+        andBool NAME                 ==Int #lookup(ACCT_STORAGE, NAME_KEY)
+        andBool NAME &Int 1          ==Int 0
+        andBool NAME /Int 2 &Int 127  <Int 32
+
+
    claim [name.short.revert]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                       </callStack>
+          <program>   #binRuntime(S2KERC721)                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime(S2KERC721)) </jumpDests>
+
+          <id>         ACCTID      => ?_ </id>
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+
+          <callData>   S2KERC721.name()           </callData>
+          <k>          #execute => #halt ...   </k>
+          <output>     .Bytes   => ?_          </output>
+          <statusCode> _        => EVMC_REVERT </statusCode>
+
+          <account>
+            <acctID>  ACCTID       </acctID>
+            <storage> ACCT_STORAGE </storage>
+            ...
+          </account>
+
+       requires NAME_KEY    ==Int #loc(S2KERC721._name)
+        andBool NAME        ==Int #lookup(ACCT_STORAGE, NAME_KEY)
+        andBool NAME &Int 1 ==Int 0
+        andBool 32          <=Int NAME /Int 2 &Int 127
+
+
endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/tests/specs/examples/index.html b/tests/specs/examples/index.html new file mode 100644 index 0000000000..7021d6fbab --- /dev/null +++ b/tests/specs/examples/index.html @@ -0,0 +1,255 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Verification Instructions for KEVM

+

If you're trying to analyze Solidity smart contracts with symbolic execution, check out our guide for Kontrol at docs.runtimeverification.com/kontrol.

+

This folder contains instructions for kompiling and running claims using KEVM to help you start proving.

+

Example: Sum to N

+

Have a look at the sum-to-n-spec.k file. +It has two modules:

+
    +
  • VERIFICATION - containing the EVM program and a few simplification rules.
  • +
  • SUM-TO-N-SPEC - containing the claims which will be executed.
  • +
+

The first step is kompiling the .k file with the below command.

+
kevm kompile-spec sum-to-n-spec.k --target haskell --syntax-module VERIFICATION --main-module VERIFICATION --output-definition sum-to-n-spec/haskell
+
+

In this example, the arguments used are:

+
    +
  • --target haskell: specify which symbolic backend to use for reasoning.
  • +
  • --syntax-module VERIFICATION: explicitly state the syntax module.
  • +
  • --main-module VERIFICATION: explicitly state the main module.
  • +
  • --output-definition sum-to-n-spec/haskell: the path where the kompiled definition is stored.
  • +
+

Next, run the prover with:

+
kevm prove-legacy sum-to-n-spec.k --definition sum-to-n-spec/haskell
+
+

The expected output is #Top which represents that all the claims have been proven.

+

Debugging a proof

+

For kevm prove-legacy, you can use the --debugger flag to debug a proof. +With it, you can use step/stepf to navigate through the rewrite steps and konfig to display the K configuration. +You can see all the available commands using help.

+

For kevm prove, you can use kevm show-kcfg ... or kevm view-kcfg ... to get a visualization. +Note: this is not compatible with kevm prove-legacy.

+

kevm view-kcfg [spec_file] [--save-directory save_directory] [--claim claim_label] ... command takes the same basic arguments as kevm prove ... does, including:

+
    +
  • spec_file is the file to look in for specifications. +This is the same file that is used for kevm prove ….
  • +
  • --save-directory must be passed as where the KCFGs have been saved (by a previous call to kevm prove --save-directory save_directory ...)
  • +
  • --claim claim_label lets you select an individual claim out of the spec_file. +If the flag is ommited, it’s assumed that only one claim is present. +If the flag is ommited and more than one claim is present in the spec_file then an error will be raised.
  • +
  • --spec-module spec_module is also an inherited option.
  • +
+

The interactive KCFG (view-kcfg) puts your terminal in application mode. +To select text in this mode, hold the modifier key provided by your terminal emulator (typically SHIFT or OPTION) while clicking and dragging. +Refer to the Textualize documentation for more information.

+

kevm show-kcfg [spec_file] [--save-directory save_directory] [--claim claim_label] ... command is pretty similar, but prints out the K Control Flow Graph to stdout instead.

+

A running example (starting from the root of the repository):

+
mkdir kcfgs
+kevm kompile-spec tests/specs/benchmarks/verification.k --output-definition tests/specs/benchmarks/verification/haskell --main-module VERIFICATION --syntax-module VERIFICATION
+kevm prove tests/specs/benchmarks/address00-spec.k --definition tests/specs/benchmarks/verification/haskell --verbose --save-directory kcfgs
+kevm view-kcfg tests/specs/benchmarks/address00-spec.k --save-directory kcfgs --definition tests/specs/benchmarks/verification/haskell
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/tests/specs/examples/solidity-code-spec.md b/tests/specs/examples/solidity-code-spec.md deleted file mode 100644 index e86efc82c6..0000000000 --- a/tests/specs/examples/solidity-code-spec.md +++ /dev/null @@ -1,256 +0,0 @@ -Solidity Verification Example -============================= - -```k -requires "edsl.md" -requires "optimizations.md" -requires "lemmas/lemmas.k" -``` - -Solidity Code -------------- - -File `test.sol` contains some code snippets we want to verify the functional correctness of: - -```sol -pragma solidity =0.6.7; - -contract Test { - function add(uint256 a, uint256 b) external pure returns (uint256) { - uint256 c = a + b; - require(c >= a); - return c; - } - - function badAdd(uint256 a, uint256 b) external pure returns (uint256) { - uint256 c = a + b; - return c; - } - - function max(uint256 a, uint256 b) external pure returns (uint256) { - if (a < b) { - return b; - } - return a; - } -} -``` - -Run `solc test.sol --bin-runtime`: - -```evm -======= tests/specs/examples/test.sol:Test ======= -Binary of the runtime part: -608060405234801561001057600080fd5b50600436106100415760003560e01c80636d5433e614610046578063771602f7146100925780638b9732a9146100de575b600080fd5b61007c6004803603604081101561005c57600080fd5b81019080803590602001909291908035906020019092919050505061012a565b6040518082815260200191505060405180910390f35b6100c8600480360360408110156100a857600080fd5b810190808035906020019092919080359060200190929190505050610146565b6040518082815260200191505060405180910390f35b610114600480360360408110156100f457600080fd5b810190808035906020019092919080359060200190929190505050610165565b6040518082815260200191505060405180910390f35b60008183101561013c57819050610140565b8290505b92915050565b60008082840190508381101561015b57600080fd5b8091505092915050565b6000808284019050809150509291505056fea26469706673582212209559057d4829a2bd8b086d1af32f7f49152dfbebda288916bb69b51644a37bbe64736f6c63430006070033 -``` - -Verification Module -------------------- - -Helper module for verification tasks. - -- Define `#binRuntime()` as the compiled bytecode. -- Add any lemmas needed for our proofs. -- Import a large body of existing lemmas from KEVM. - -```k -module VERIFICATION - imports EDSL - imports LEMMAS - imports EVM-OPTIMIZATIONS - - rule #getValue(#uint256(X)) => X requires #rangeUInt(256, X) [simplification] - - rule X <=Int chop(X +Int Y) => false - requires #rangeUInt(256, X) - andBool #rangeUInt(256, Y) - andBool notBool #rangeUInt(256, X +Int Y) - [simplification] - - syntax Bytes ::= #binRuntime() [macro] - // -------------------------------------- - rule #binRuntime() => #parseByteStack("0x608060405234801561001057600080fd5b50600436106100415760003560e01c80636d5433e614610046578063771602f7146100925780638b9732a9146100de575b600080fd5b61007c6004803603604081101561005c57600080fd5b81019080803590602001909291908035906020019092919050505061012a565b6040518082815260200191505060405180910390f35b6100c8600480360360408110156100a857600080fd5b810190808035906020019092919080359060200190929190505050610146565b6040518082815260200191505060405180910390f35b610114600480360360408110156100f457600080fd5b810190808035906020019092919080359060200190929190505050610165565b6040518082815260200191505060405180910390f35b60008183101561013c57819050610140565b8290505b92915050565b60008082840190508381101561015b57600080fd5b8091505092915050565b6000808284019050809150509291505056fea26469706673582212209559057d4829a2bd8b086d1af32f7f49152dfbebda288916bb69b51644a37bbe64736f6c63430006070033") - -endmodule -``` - -K Specifications ----------------- - -Formal specifications (using KEVM) of the correctness properties for our Solidity code. - -```k -module SOLIDITY-CODE-SPEC - imports VERIFICATION -``` - -### Call with wrong call-data - -- Everything from `` to `` is boilerplate. -- We are setting `` to `add()`, which is not a signature that exists in the Solidity code. -- We ask the prover to show that in all cases, we will end in `EVMC_REVERT` (rollback) when this happens. -- This type of proof can be used to prevent some fallback function exploits. - -```k - claim [bad-call-data]: - NORMAL - ISTANBUL - true - - .List - #binRuntime() - #computeValidJumpDests(#binRuntime()) - - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - _CALL_VALUE => ?_ - - #abiCallData("add", .TypedArgs) - #execute => #halt ... - .Bytes => ?_ - _ => EVMC_REVERT -``` - -### Add Positive Case - -- `` says we are calling `add(X, Y)`. -- `` says we expect the function to return `X +Int Y` (addition did not overflow). -- `` says we expect the function to exit normally. -- `requires` says that we only expect this to happen if `0 <=Int X +Int Y NORMAL - ISTANBUL - true - - .List - #binRuntime() - #computeValidJumpDests(#binRuntime()) - - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - - #abiCallData("add", #uint256(X), #uint256(Y)) - #execute => #halt ... - .Bytes => #buf(32, X +Int Y) - _ => EVMC_SUCCESS - - requires #rangeUInt(256, X) - andBool #rangeUInt(256, Y) - andBool #rangeUInt(256, X +Int Y) -``` - -### Add Negative Case - -- `` says we are calling `add(X, Y)`. -- `` says we don't care what the function outputs. -- `` says we expect the function to exit in `REVERT` (state rollback). -- `requires` says that we only expect this to happen if `notBool (0 <=Int X +Int Y NORMAL - ISTANBUL - true - - .List - #binRuntime() - #computeValidJumpDests(#binRuntime()) - - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - - #abiCallData("add", #uint256(X), #uint256(Y)) - #execute => #halt ... - .Bytes => ?_ - _ => EVMC_REVERT - - requires #rangeUInt(256, X) - andBool #rangeUInt(256, Y) - andBool notBool #rangeUInt(256, X +Int Y) -``` - -### Bad Add Failing Negative Case - -- `` says we are calling `badAdd(X, Y)`. -- `` says we don't care what the function returns. -- `` says we expect the function to exit in `REVERT` (state rollback). -- `requires` says that we only expect this to happen if `notBool (0 <=Int X +Int Y NORMAL - ISTANBUL - true - - .List - #binRuntime() - #computeValidJumpDests(#binRuntime()) - - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - - #abiCallData("badAdd", #uint256(X), #uint256(Y)) - #execute => #halt ... - .Bytes => ?_ - _ => EVMC_REVERT - - requires #rangeUInt(256, X) - andBool #rangeUInt(256, Y) - andBool notBool #rangeUInt(256, X +Int Y) -``` - -### Max Positive Case - -- `` says we are calling `max(X, Y)`. -- `` says we want the function to return the maximum of `X` and `Y`. -- `` says we expect the function to exit normally (no `REVERT`). -- Note that here the prover must consider two branches (for the `if ...` statement in the Solidity code). - -```k - claim [max-positive]: - NORMAL - ISTANBUL - true - - .List - #binRuntime() - #computeValidJumpDests(#binRuntime()) - - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - - #abiCallData("max", #uint256(X), #uint256(Y)) - #execute => #halt ... - .Bytes => #buf(32, maxInt(X, Y)) - _ => EVMC_SUCCESS - - requires #rangeUInt(256, X) - andBool #rangeUInt(256, Y) -``` - -```k -endmodule -``` diff --git a/tests/specs/examples/solidity-code-spec/index.html b/tests/specs/examples/solidity-code-spec/index.html new file mode 100644 index 0000000000..db45eb0ada --- /dev/null +++ b/tests/specs/examples/solidity-code-spec/index.html @@ -0,0 +1,472 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Solidity Verification Example

+
requires "edsl.md"
+requires "optimizations.md"
+requires "lemmas/lemmas.k"
+
+

Solidity Code

+

File test.sol contains some code snippets we want to verify the functional correctness of:

+
pragma solidity =0.6.7;
+
+contract Test {
+    function add(uint256 a, uint256 b) external pure returns (uint256) {
+        uint256 c = a + b;
+        require(c >= a);
+        return c;
+    }
+
+    function badAdd(uint256 a, uint256 b) external pure returns (uint256) {
+        uint256 c = a + b;
+        return c;
+    }
+
+    function max(uint256 a, uint256 b) external pure returns (uint256) {
+        if (a < b) {
+            return b;
+        }
+        return a;
+    }
+}
+
+

Run solc test.sol --bin-runtime:

+
======= tests/specs/examples/test.sol:Test =======
+Binary of the runtime part:
+608060405234801561001057600080fd5b50600436106100415760003560e01c80636d5433e614610046578063771602f7146100925780638b9732a9146100de575b600080fd5b61007c6004803603604081101561005c57600080fd5b81019080803590602001909291908035906020019092919050505061012a565b6040518082815260200191505060405180910390f35b6100c8600480360360408110156100a857600080fd5b810190808035906020019092919080359060200190929190505050610146565b6040518082815260200191505060405180910390f35b610114600480360360408110156100f457600080fd5b810190808035906020019092919080359060200190929190505050610165565b6040518082815260200191505060405180910390f35b60008183101561013c57819050610140565b8290505b92915050565b60008082840190508381101561015b57600080fd5b8091505092915050565b6000808284019050809150509291505056fea26469706673582212209559057d4829a2bd8b086d1af32f7f49152dfbebda288916bb69b51644a37bbe64736f6c63430006070033
+
+

Verification Module

+

Helper module for verification tasks.

+
    +
  • Define #binRuntime() as the compiled bytecode.
  • +
  • Add any lemmas needed for our proofs.
  • +
  • Import a large body of existing lemmas from KEVM.
  • +
+
module VERIFICATION
+    imports EDSL
+    imports LEMMAS
+    imports EVM-OPTIMIZATIONS
+
+    rule #getValue(#uint256(X)) => X requires #rangeUInt(256, X) [simplification]
+
+    rule X <=Int chop(X +Int Y) => false
+      requires #rangeUInt(256, X)
+       andBool #rangeUInt(256, Y)
+       andBool notBool #rangeUInt(256, X +Int Y)
+      [simplification]
+
+    syntax Bytes ::= #binRuntime() [macro]
+ // --------------------------------------
+    rule #binRuntime() => #parseByteStack("0x608060405234801561001057600080fd5b50600436106100415760003560e01c80636d5433e614610046578063771602f7146100925780638b9732a9146100de575b600080fd5b61007c6004803603604081101561005c57600080fd5b81019080803590602001909291908035906020019092919050505061012a565b6040518082815260200191505060405180910390f35b6100c8600480360360408110156100a857600080fd5b810190808035906020019092919080359060200190929190505050610146565b6040518082815260200191505060405180910390f35b610114600480360360408110156100f457600080fd5b810190808035906020019092919080359060200190929190505050610165565b6040518082815260200191505060405180910390f35b60008183101561013c57819050610140565b8290505b92915050565b60008082840190508381101561015b57600080fd5b8091505092915050565b6000808284019050809150509291505056fea26469706673582212209559057d4829a2bd8b086d1af32f7f49152dfbebda288916bb69b51644a37bbe64736f6c63430006070033")
+
+endmodule
+
+

K Specifications

+

Formal specifications (using KEVM) of the correctness properties for our Solidity code.

+
module SOLIDITY-CODE-SPEC
+    imports VERIFICATION
+
+

Call with wrong call-data

+
    +
  • Everything from <mode> to <callValue> is boilerplate.
  • +
  • We are setting <callData> to add(), which is not a signature that exists in the Solidity code.
  • +
  • We ask the prover to show that in all cases, we will end in EVMC_REVERT (rollback) when this happens.
  • +
  • This type of proof can be used to prevent some fallback function exploits.
  • +
+
    claim [bad-call-data]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+        <useGas>    true     </useGas>
+
+          <callStack> .List                                 </callStack>
+          <program>   #binRuntime()                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime()) </jumpDests>
+
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  _CALL_VALUE => ?_ </callValue>
+
+          <callData> #abiCallData("add", .TypedArgs) </callData>
+          <k>          #execute => #halt ...   </k>
+          <output>     .Bytes   => ?_          </output>
+          <statusCode> _        => EVMC_REVERT </statusCode>
+
+

Add Positive Case

+
    +
  • <callData> says we are calling add(X, Y).
  • +
  • <output> says we expect the function to return X +Int Y (addition did not overflow).
  • +
  • <statusCode> says we expect the function to exit normally.
  • +
  • requires says that we only expect this to happen if 0 <=Int X +Int Y <Int 2 ^Int 256 (no overflow).
  • +
+
    claim [add-positive]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                 </callStack>
+          <program>   #binRuntime()                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime()) </jumpDests>
+
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+
+          <callData> #abiCallData("add", #uint256(X), #uint256(Y)) </callData>
+          <k>          #execute => #halt ...          </k>
+          <output>     .Bytes   => #buf(32, X +Int Y) </output>
+          <statusCode> _        => EVMC_SUCCESS       </statusCode>
+
+     requires #rangeUInt(256, X)
+      andBool #rangeUInt(256, Y)
+      andBool #rangeUInt(256, X +Int Y)
+
+

Add Negative Case

+
    +
  • <callData> says we are calling add(X, Y).
  • +
  • <output> says we don't care what the function outputs.
  • +
  • <statusCode> says we expect the function to exit in REVERT (state rollback).
  • +
  • requires says that we only expect this to happen if notBool (0 <=Int X +Int Y <Int 2 ^Int 256) (overflow occurs).
  • +
  • Note that add-positive and add-negative should cover all cases for add(X, Y).
  • +
+
    claim [add-negative]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                 </callStack>
+          <program>   #binRuntime()                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime()) </jumpDests>
+
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+
+          <callData> #abiCallData("add", #uint256(X), #uint256(Y)) </callData>
+          <k>          #execute => #halt ...   </k>
+          <output>     .Bytes   => ?_          </output>
+          <statusCode> _        => EVMC_REVERT </statusCode>
+
+     requires #rangeUInt(256, X)
+      andBool #rangeUInt(256, Y)
+      andBool notBool #rangeUInt(256, X +Int Y)
+
+

Bad Add Failing Negative Case

+
    +
  • <callData> says we are calling badAdd(X, Y).
  • +
  • <output> says we don't care what the function returns.
  • +
  • <statusCode> says we expect the function to exit in REVERT (state rollback).
  • +
  • requires says that we only expect this to happen if notBool (0 <=Int X +Int Y <Int 2 ^Int 256) (overflow occurs).
  • +
  • This proof fails, because the function badAdd fails to call REVERT on overflow.
  • +
+
    claim [badAdd-negative]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                 </callStack>
+          <program>   #binRuntime()                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime()) </jumpDests>
+
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+
+          <callData> #abiCallData("badAdd", #uint256(X), #uint256(Y)) </callData>
+          <k>          #execute => #halt ...          </k>
+          <output>     .Bytes   => ?_                 </output>
+          <statusCode> _        => EVMC_REVERT        </statusCode>
+
+     requires #rangeUInt(256, X)
+      andBool #rangeUInt(256, Y)
+      andBool notBool #rangeUInt(256, X +Int Y)
+
+

Max Positive Case

+
    +
  • <callData> says we are calling max(X, Y).
  • +
  • <output> says we want the function to return the maximum of X and Y.
  • +
  • <statusCode> says we expect the function to exit normally (no REVERT).
  • +
  • Note that here the prover must consider two branches (for the if ... statement in the Solidity code).
  • +
+
    claim [max-positive]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                 </callStack>
+          <program>   #binRuntime()                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime()) </jumpDests>
+
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+
+          <callData> #abiCallData("max", #uint256(X), #uint256(Y)) </callData>
+          <k>          #execute => #halt ...              </k>
+          <output>     .Bytes   => #buf(32, maxInt(X, Y)) </output>
+          <statusCode> _        => EVMC_SUCCESS           </statusCode>
+
+     requires #rangeUInt(256, X)
+      andBool #rangeUInt(256, Y)
+
+
endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/tests/specs/examples/storage-bin-runtime.k b/tests/specs/examples/storage-bin-runtime.k deleted file mode 100644 index 355472831c..0000000000 --- a/tests/specs/examples/storage-bin-runtime.k +++ /dev/null @@ -1,925 +0,0 @@ -requires "edsl.md" - -module Storage-CONTRACT - imports public EDSL - - syntax Contract ::= S2KStorageContract - - syntax S2KStorageContract ::= "S2KStorage" [symbol(), klabel(contract_Storage)] - - rule ( #binRuntime ( S2KStorage ) => #parseByteStack ( "0x608060405234801561001057600080fd5b50600436106103fc5760003560e01c80637288e87c11610215578063a03b52fd11610125578063d88ed1d7116100b8578063eb1b30d911610087578063eb1b30d914610b63578063f08d610314610b7f578063f616964a14610b9d578063f8be065114610bbb578063fc94ae0914610bd9576103fc565b8063d88ed1d714610aeb578063e0b1524f14610b09578063e2a4b2af14610b27578063e898852414610b45576103fc565b8063b4aadf23116100f4578063b4aadf2314610a73578063b6e3197e14610a91578063b8bf41b214610aaf578063c3ff504014610acd576103fc565b8063a03b52fd146109fb578063a7dbce1c14610a19578063a84631ba14610a37578063abac82bd14610a55576103fc565b806387d6ef18116101a857806391f9a0ef1161017757806391f9a0ef146109655780639375ab821461098357806398c2d5ee146109a157806399282470146109bf5780639b6a236f146109dd576103fc565b806387d6ef18146108ed57806389d70f951461090b5780638e2dc2cb146109295780638f56f49114610947576103fc565b80637ecc9e89116101e45780637ecc9e89146108755780637f2482961461089357806382266dbc146108b1578063848aefe7146108cf576103fc565b80637288e87c146107fd578063734b1e531461081b578063775a974214610839578063794d1dda14610857576103fc565b80633ed5a1b91161031057806350fa9586116102a35780636652754f116102725780636652754f146107675780636cd7c55d146107855780636deecdbe146107a35780636e92c39e146107c1578063712f4602146107df576103fc565b806350fa9586146106ef578063512c8e2f1461070d578063527400331461072b5780635507c8fa14610749576103fc565b806345d12877116102df57806345d128771461067757806345e6eb4314610695578063492bfa18146106b35780634d70c615146106d1576103fc565b80633ed5a1b9146105ff5780633ef9ce951461061d5780633f066ec31461063b57806343f9f4d014610659576103fc565b8063120d999f1161039357806326e05a9b1161036257806326e05a9b14610569578063377172b91461058757806337aa1527146105a557806338719ee5146105c35780633c2cfbae146105e1576103fc565b8063120d999f146104f157806313a8ebd51461050f578063157813861461052d578063184256ed1461054b576103fc565b80630abf5438116103cf5780630abf5438146104795780630b9031f7146104975780630db0d3a6146104b5578063118b7864146104d3576103fc565b806303d5c6a014610401578063060b4f311461041f578063062811381461043d57806309a407f61461045b575b600080fd5b610409610bf7565b60405161041691906113d1565b60405180910390f35b610427610c0a565b6040516104349190611412565b60405180910390f35b610445610c27565b6040516104529190611449565b60405180910390f35b610463610c3a565b6040516104709190611498565b60405180910390f35b610481610c65565b60405161048e91906114cf565b60405180910390f35b61049f610c78565b6040516104ac9190611506565b60405180910390f35b6104bd610c8b565b6040516104ca9190611554565b60405180910390f35b6104db610cb5565b6040516104e8919061158b565b60405180910390f35b6104f9610cc8565b60405161050691906115c5565b60405180910390f35b610517610cde565b6040516105249190611604565b60405180910390f35b610535610cf9565b604051610542919061164d565b60405180910390f35b610553610d1e565b604051610560919061169a565b60405180910390f35b610571610d47565b60405161057e91906116d1565b60405180910390f35b61058f610d5a565b60405161059c9190611705565b60405180910390f35b6105ad610d60565b6040516105ba919061173c565b60405180910390f35b6105cb610d73565b6040516105d89190611775565b60405180910390f35b6105e9610d88565b6040516105f691906117c0565b60405180910390f35b610607610daf565b60405161061491906117f7565b60405180910390f35b610625610dc2565b6040516106329190611835565b60405180910390f35b610643610ddc565b604051610650919061188a565b60405180910390f35b610661610e0d565b60405161066e91906118c1565b60405180910390f35b61067f610e20565b60405161068c91906118f8565b60405180910390f35b61069d610e33565b6040516106aa919061192f565b60405180910390f35b6106bb610e46565b6040516106c891906119e3565b60405180910390f35b6106d9610ed4565b6040516106e69190611a21565b60405180910390f35b6106f7610ee7565b6040516107049190611a58565b60405180910390f35b610715610efa565b6040516107229190611a8f565b60405180910390f35b610733610f0d565b6040516107409190611ad9565b60405180910390f35b610751610f33565b60405161075e9190611b10565b60405180910390f35b61076f610f44565b60405161077c9190611b47565b60405180910390f35b61078d610f57565b60405161079a9190611b7e565b60405180910390f35b6107ab610f6a565b6040516107b89190611bb4565b60405180910390f35b6107c9610f7b565b6040516107d69190611beb565b60405180910390f35b6107e7610f8e565b6040516107f49190611c5b565b60405180910390f35b61080561101c565b6040516108129190611c99565b60405180910390f35b61082361102f565b6040516108309190611ceb565b60405180910390f35b61084161105d565b60405161084e9190611d22565b60405180910390f35b61085f611070565b60405161086c9190611d5e565b60405180910390f35b61087d611088565b60405161088a9190611da4565b60405180910390f35b61089b6110aa565b6040516108a89190611ddf565b60405180910390f35b6108b96110c1565b6040516108c69190611e16565b60405180910390f35b6108d76110d4565b6040516108e49190611e6a565b60405180910390f35b6108f5611104565b6040516109029190611eaa565b60405180910390f35b610913611120565b6040516109209190611eee565b60405180910390f35b610931611140565b60405161093e9190611f26565b60405180910390f35b61094f611154565b60405161095c9190611f72565b60405180910390f35b61096d61117c565b60405161097a9190611fa9565b60405180910390f35b61098b61118f565b6040516109989190611fe0565b60405180910390f35b6109a96111a2565b6040516109b69190612023565b60405180910390f35b6109c76111c1565b6040516109d49190612076565b60405180910390f35b6109e56111f0565b6040516109f291906120ad565b60405180910390f35b610a03611203565b604051610a1091906120e4565b60405180910390f35b610a21611216565b604051610a2e9190612118565b60405180910390f35b610a3f61121c565b604051610a4c919061215a565b60405180910390f35b610a5d61123a565b604051610a6a9190612191565b60405180910390f35b610a7b61124d565b604051610a8891906121c8565b60405180910390f35b610a99611260565b604051610aa6919061220d565b60405180910390f35b610ab7611281565b604051610ac4919061224a565b60405180910390f35b610ad561129a565b604051610ae2919061229b565b60405180910390f35b610af36112c7565b604051610b0091906122eb565b60405180910390f35b610b116112f3565b604051610b1e9190612322565b60405180910390f35b610b2f611306565b604051610b3c9190612359565b60405180910390f35b610b4d611319565b604051610b5a9190612390565b60405180910390f35b610b7d6004803603810190610b7891906123dc565b61132c565b005b610b87611348565b604051610b949190612436565b60405180910390f35b610ba561136c565b604051610bb2919061246d565b60405180910390f35b610bc361137f565b604051610bd091906124b4565b60405180910390f35b610be16113a2565b604051610bee91906124eb565b60405180910390f35b601e60009054906101000a900460140b81565b600260009054906101000a90046affffffffffffffffffffff1681565b602360009054906101000a900460190b81565b600d60009054906101000a900478ffffffffffffffffffffffffffffffffffffffffffffffffff1681565b601560039054906101000a900460020b81565b602760009054906101000a9004601d0b81565b600c60009054906101000a900477ffffffffffffffffffffffffffffffffffffffffffffffff1681565b6015600f9054906101000a900460050b81565b600060079054906101000a900463ffffffff1681565b600160089054906101000a900468ffffffffffffffffff1681565b600760009054906101000a900472ffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900476ffffffffffffffffffffffffffffffffffffffffffffff1681565b601560069054906101000a900460030b81565b60295481565b602060009054906101000a900460160b81565b600060049054906101000a900462ffffff1681565b600960009054906101000a900474ffffffffffffffffffffffffffffffffffffffffff1681565b602560009054906101000a9004601b0b81565b600160009054906101000a900467ffffffffffffffff1681565b601360009054906101000a90047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6017600b9054906101000a9004600b0b81565b6019600f9054906101000a9004600f0b81565b602860009054906101000a9004601e0b81565b602a8054610e5390612535565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7f90612535565b8015610ecc5780601f10610ea157610100808354040283529160200191610ecc565b820191906000526020600020905b815481529060010190602001808311610eaf57829003601f168201915b505050505081565b602660009054906101000a9004601c0b81565b601660089054906101000a900460080b81565b6018600d9054906101000a9004600d0b81565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158054906101000a900460060b81565b601560019054906101000a900460010b81565b601660009054906101000a900460070b81565b60008054906101000a900460ff1681565b601560009054906101000a900460000b81565b602b8054610f9b90612535565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc790612535565b80156110145780601f10610fe957610100808354040283529160200191611014565b820191906000526020600020905b815481529060010190602001808311610ff757829003601f168201915b505050505081565b601a60009054906101000a900460100b81565b601060009054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b602260009054906101000a900460180b81565b600060109054906101000a900465ffffffffffff1681565b6004600f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b6000600b9054906101000a900464ffffffffff1681565b601c60009054906101000a900460120b81565b601260009054906101000a90047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b600160119054906101000a900469ffffffffffffffffffff1681565b6003600d9054906101000a90046dffffffffffffffffffffffffffff1681565b600060029054906101000a900461ffff1681565b600a60009054906101000a900475ffffffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a9004600e0b81565b601f60009054906101000a900460150b81565b600360009054906101000a90046cffffffffffffffffffffffffff1681565b601160009054906101000a90047cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b601660119054906101000a900460090b81565b6015600a9054906101000a900460040b81565b60145481565b6002600b9054906101000a90046bffffffffffffffffffffffff1681565b601d60009054906101000a900460130b81565b601b60009054906101000a900460110b81565b600460009054906101000a90046effffffffffffffffffffffffffffff1681565b600060169054906101000a900466ffffffffffffff1681565b600f60009054906101000a90047affffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a9004600c0b81565b600060019054906101000a900460ff1681565b602160009054906101000a900460170b81565b806000806101000a81548160ff02191690831515021790555050565b600660009054906101000a900471ffffffffffffffffffffffffffffffffffff1681565b602460009054906101000a9004601a0b81565b600560009054906101000a900470ffffffffffffffffffffffffffffffffff1681565b601760009054906101000a9004600a0b81565b60008160140b9050919050565b6113cb816113b5565b82525050565b60006020820190506113e660008301846113c2565b92915050565b60006affffffffffffffffffffff82169050919050565b61140c816113ec565b82525050565b60006020820190506114276000830184611403565b92915050565b60008160190b9050919050565b6114438161142d565b82525050565b600060208201905061145e600083018461143a565b92915050565b600078ffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b61149281611464565b82525050565b60006020820190506114ad6000830184611489565b92915050565b60008160020b9050919050565b6114c9816114b3565b82525050565b60006020820190506114e460008301846114c0565b92915050565b600081601d0b9050919050565b611500816114ea565b82525050565b600060208201905061151b60008301846114f7565b92915050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b61154e81611521565b82525050565b60006020820190506115696000830184611545565b92915050565b60008160050b9050919050565b6115858161156f565b82525050565b60006020820190506115a0600083018461157c565b92915050565b600063ffffffff82169050919050565b6115bf816115a6565b82525050565b60006020820190506115da60008301846115b6565b92915050565b600068ffffffffffffffffff82169050919050565b6115fe816115e0565b82525050565b600060208201905061161960008301846115f5565b92915050565b600072ffffffffffffffffffffffffffffffffffffff82169050919050565b6116478161161f565b82525050565b6000602082019050611662600083018461163e565b92915050565b600076ffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b61169481611668565b82525050565b60006020820190506116af600083018461168b565b92915050565b60008160030b9050919050565b6116cb816116b5565b82525050565b60006020820190506116e660008301846116c2565b92915050565b6000819050919050565b6116ff816116ec565b82525050565b600060208201905061171a60008301846116f6565b92915050565b60008160160b9050919050565b61173681611720565b82525050565b6000602082019050611751600083018461172d565b92915050565b600062ffffff82169050919050565b61176f81611757565b82525050565b600060208201905061178a6000830184611766565b92915050565b600074ffffffffffffffffffffffffffffffffffffffffff82169050919050565b6117ba81611790565b82525050565b60006020820190506117d560008301846117b1565b92915050565b600081601b0b9050919050565b6117f1816117db565b82525050565b600060208201905061180c60008301846117e8565b92915050565b600067ffffffffffffffff82169050919050565b61182f81611812565b82525050565b600060208201905061184a6000830184611826565b92915050565b60007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b61188481611850565b82525050565b600060208201905061189f600083018461187b565b92915050565b600081600b0b9050919050565b6118bb816118a5565b82525050565b60006020820190506118d660008301846118b2565b92915050565b600081600f0b9050919050565b6118f2816118dc565b82525050565b600060208201905061190d60008301846118e9565b92915050565b600081601e0b9050919050565b61192981611913565b82525050565b60006020820190506119446000830184611920565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611984578082015181840152602081019050611969565b83811115611993576000848401525b50505050565b6000601f19601f8301169050919050565b60006119b58261194a565b6119bf8185611955565b93506119cf818560208601611966565b6119d881611999565b840191505092915050565b600060208201905081810360008301526119fd81846119aa565b905092915050565b600081601c0b9050919050565b611a1b81611a05565b82525050565b6000602082019050611a366000830184611a12565b92915050565b60008160080b9050919050565b611a5281611a3c565b82525050565b6000602082019050611a6d6000830184611a49565b92915050565b600081600d0b9050919050565b611a8981611a73565b82525050565b6000602082019050611aa46000830184611a80565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b611ad381611aaa565b82525050565b6000602082019050611aee6000830184611aca565b92915050565b60008160060b9050919050565b611b0a81611af4565b82525050565b6000602082019050611b256000830184611b01565b92915050565b60008160010b9050919050565b611b4181611b2b565b82525050565b6000602082019050611b5c6000830184611b38565b92915050565b60008160070b9050919050565b611b7881611b62565b82525050565b6000602082019050611b936000830184611b6f565b92915050565b60008115159050919050565b611bae81611b99565b82525050565b6000602082019050611bc96000830184611ba5565b92915050565b60008160000b9050919050565b611be581611bcf565b82525050565b6000602082019050611c006000830184611bdc565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611c2d82611c06565b611c378185611c11565b9350611c47818560208601611966565b611c5081611999565b840191505092915050565b60006020820190508181036000830152611c758184611c22565b905092915050565b60008160100b9050919050565b611c9381611c7d565b82525050565b6000602082019050611cae6000830184611c8a565b92915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b611ce581611cb4565b82525050565b6000602082019050611d006000830184611cdc565b92915050565b60008160180b9050919050565b611d1c81611d06565b82525050565b6000602082019050611d376000830184611d13565b92915050565b600065ffffffffffff82169050919050565b611d5881611d3d565b82525050565b6000602082019050611d736000830184611d4f565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b611d9e81611d79565b82525050565b6000602082019050611db96000830184611d95565b92915050565b600064ffffffffff82169050919050565b611dd981611dbf565b82525050565b6000602082019050611df46000830184611dd0565b92915050565b60008160120b9050919050565b611e1081611dfa565b82525050565b6000602082019050611e2b6000830184611e07565b92915050565b60007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b611e6481611e31565b82525050565b6000602082019050611e7f6000830184611e5b565b92915050565b600069ffffffffffffffffffff82169050919050565b611ea481611e85565b82525050565b6000602082019050611ebf6000830184611e9b565b92915050565b60006dffffffffffffffffffffffffffff82169050919050565b611ee881611ec5565b82525050565b6000602082019050611f036000830184611edf565b92915050565b600061ffff82169050919050565b611f2081611f09565b82525050565b6000602082019050611f3b6000830184611f17565b92915050565b600075ffffffffffffffffffffffffffffffffffffffffffff82169050919050565b611f6c81611f41565b82525050565b6000602082019050611f876000830184611f63565b92915050565b600081600e0b9050919050565b611fa381611f8d565b82525050565b6000602082019050611fbe6000830184611f9a565b92915050565b60008160150b9050919050565b611fda81611fc4565b82525050565b6000602082019050611ff56000830184611fd1565b92915050565b60006cffffffffffffffffffffffffff82169050919050565b61201d81611ffb565b82525050565b60006020820190506120386000830184612014565b92915050565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6120708161203e565b82525050565b600060208201905061208b6000830184612067565b92915050565b60008160090b9050919050565b6120a781612091565b82525050565b60006020820190506120c2600083018461209e565b92915050565b60008160040b9050919050565b6120de816120c8565b82525050565b60006020820190506120f960008301846120d5565b92915050565b6000819050919050565b612112816120ff565b82525050565b600060208201905061212d6000830184612109565b92915050565b60006bffffffffffffffffffffffff82169050919050565b61215481612133565b82525050565b600060208201905061216f600083018461214b565b92915050565b60008160130b9050919050565b61218b81612175565b82525050565b60006020820190506121a66000830184612182565b92915050565b60008160110b9050919050565b6121c2816121ac565b82525050565b60006020820190506121dd60008301846121b9565b92915050565b60006effffffffffffffffffffffffffffff82169050919050565b612207816121e3565b82525050565b600060208201905061222260008301846121fe565b92915050565b600066ffffffffffffff82169050919050565b61224481612228565b82525050565b600060208201905061225f600083018461223b565b92915050565b60007affffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b61229581612265565b82525050565b60006020820190506122b0600083018461228c565b92915050565b600079ffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6122e5816122b6565b82525050565b600060208201905061230060008301846122dc565b92915050565b600081600c0b9050919050565b61231c81612306565b82525050565b60006020820190506123376000830184612313565b92915050565b600060ff82169050919050565b6123538161233d565b82525050565b600060208201905061236e600083018461234a565b92915050565b60008160170b9050919050565b61238a81612374565b82525050565b60006020820190506123a56000830184612381565b92915050565b600080fd5b6123b981611b99565b81146123c457600080fd5b50565b6000813590506123d6816123b0565b92915050565b6000602082840312156123f2576123f16123ab565b5b6000612400848285016123c7565b91505092915050565b600071ffffffffffffffffffffffffffffffffffff82169050919050565b61243081612409565b82525050565b600060208201905061244b6000830184612427565b92915050565b600081601a0b9050919050565b61246781612451565b82525050565b6000602082019050612482600083018461245e565b92915050565b600070ffffffffffffffffffffffffffffffffff82169050919050565b6124ae81612488565b82525050565b60006020820190506124c960008301846124a5565b92915050565b600081600a0b9050919050565b6124e5816124cf565b82525050565b600060208201905061250060008301846124dc565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061254d57607f821691505b6020821081036125605761255f612506565b5b5091905056fea26469706673582212209d89f7186a163d8a4087cae2caff77f1894ba5c5c5c78eacabc4b169156d4fa064736f6c634300080d0033" ) ) - - - syntax Field ::= StorageField - - syntax StorageField ::= "myBool" [symbol(), klabel(field_Storage_myBool)] - - syntax StorageField ::= "myUint8" [symbol(), klabel(field_Storage_myUint8)] - - syntax StorageField ::= "myUint16" [symbol(), klabel(field_Storage_myUint16)] - - syntax StorageField ::= "myUint24" [symbol(), klabel(field_Storage_myUint24)] - - syntax StorageField ::= "myUint32" [symbol(), klabel(field_Storage_myUint32)] - - syntax StorageField ::= "myUint40" [symbol(), klabel(field_Storage_myUint40)] - - syntax StorageField ::= "myUint48" [symbol(), klabel(field_Storage_myUint48)] - - syntax StorageField ::= "myUint56" [symbol(), klabel(field_Storage_myUint56)] - - syntax StorageField ::= "myUint64" [symbol(), klabel(field_Storage_myUint64)] - - syntax StorageField ::= "myUint72" [symbol(), klabel(field_Storage_myUint72)] - - syntax StorageField ::= "myUint80" [symbol(), klabel(field_Storage_myUint80)] - - syntax StorageField ::= "myUint88" [symbol(), klabel(field_Storage_myUint88)] - - syntax StorageField ::= "myUint96" [symbol(), klabel(field_Storage_myUint96)] - - syntax StorageField ::= "myUint104" [symbol(), klabel(field_Storage_myUint104)] - - syntax StorageField ::= "myUint112" [symbol(), klabel(field_Storage_myUint112)] - - syntax StorageField ::= "myUint120" [symbol(), klabel(field_Storage_myUint120)] - - syntax StorageField ::= "myUint128" [symbol(), klabel(field_Storage_myUint128)] - - syntax StorageField ::= "myUint136" [symbol(), klabel(field_Storage_myUint136)] - - syntax StorageField ::= "myUint144" [symbol(), klabel(field_Storage_myUint144)] - - syntax StorageField ::= "myUint152" [symbol(), klabel(field_Storage_myUint152)] - - syntax StorageField ::= "myUint160" [symbol(), klabel(field_Storage_myUint160)] - - syntax StorageField ::= "myUint168" [symbol(), klabel(field_Storage_myUint168)] - - syntax StorageField ::= "myUint176" [symbol(), klabel(field_Storage_myUint176)] - - syntax StorageField ::= "myUint184" [symbol(), klabel(field_Storage_myUint184)] - - syntax StorageField ::= "myUint192" [symbol(), klabel(field_Storage_myUint192)] - - syntax StorageField ::= "myUint200" [symbol(), klabel(field_Storage_myUint200)] - - syntax StorageField ::= "myUint208" [symbol(), klabel(field_Storage_myUint208)] - - syntax StorageField ::= "myUint216" [symbol(), klabel(field_Storage_myUint216)] - - syntax StorageField ::= "myUint224" [symbol(), klabel(field_Storage_myUint224)] - - syntax StorageField ::= "myUint232" [symbol(), klabel(field_Storage_myUint232)] - - syntax StorageField ::= "myUint240" [symbol(), klabel(field_Storage_myUint240)] - - syntax StorageField ::= "myUint248" [symbol(), klabel(field_Storage_myUint248)] - - syntax StorageField ::= "myUint256" [symbol(), klabel(field_Storage_myUint256)] - - syntax StorageField ::= "myInt8" [symbol(), klabel(field_Storage_myInt8)] - - syntax StorageField ::= "myInt16" [symbol(), klabel(field_Storage_myInt16)] - - syntax StorageField ::= "myInt24" [symbol(), klabel(field_Storage_myInt24)] - - syntax StorageField ::= "myInt32" [symbol(), klabel(field_Storage_myInt32)] - - syntax StorageField ::= "myInt40" [symbol(), klabel(field_Storage_myInt40)] - - syntax StorageField ::= "myInt48" [symbol(), klabel(field_Storage_myInt48)] - - syntax StorageField ::= "myInt56" [symbol(), klabel(field_Storage_myInt56)] - - syntax StorageField ::= "myInt64" [symbol(), klabel(field_Storage_myInt64)] - - syntax StorageField ::= "myInt72" [symbol(), klabel(field_Storage_myInt72)] - - syntax StorageField ::= "myInt80" [symbol(), klabel(field_Storage_myInt80)] - - syntax StorageField ::= "myInt88" [symbol(), klabel(field_Storage_myInt88)] - - syntax StorageField ::= "myInt96" [symbol(), klabel(field_Storage_myInt96)] - - syntax StorageField ::= "myInt104" [symbol(), klabel(field_Storage_myInt104)] - - syntax StorageField ::= "myInt112" [symbol(), klabel(field_Storage_myInt112)] - - syntax StorageField ::= "myInt120" [symbol(), klabel(field_Storage_myInt120)] - - syntax StorageField ::= "myInt128" [symbol(), klabel(field_Storage_myInt128)] - - syntax StorageField ::= "myInt136" [symbol(), klabel(field_Storage_myInt136)] - - syntax StorageField ::= "myInt144" [symbol(), klabel(field_Storage_myInt144)] - - syntax StorageField ::= "myInt152" [symbol(), klabel(field_Storage_myInt152)] - - syntax StorageField ::= "myInt160" [symbol(), klabel(field_Storage_myInt160)] - - syntax StorageField ::= "myInt168" [symbol(), klabel(field_Storage_myInt168)] - - syntax StorageField ::= "myInt176" [symbol(), klabel(field_Storage_myInt176)] - - syntax StorageField ::= "myInt184" [symbol(), klabel(field_Storage_myInt184)] - - syntax StorageField ::= "myInt192" [symbol(), klabel(field_Storage_myInt192)] - - syntax StorageField ::= "myInt200" [symbol(), klabel(field_Storage_myInt200)] - - syntax StorageField ::= "myInt208" [symbol(), klabel(field_Storage_myInt208)] - - syntax StorageField ::= "myInt216" [symbol(), klabel(field_Storage_myInt216)] - - syntax StorageField ::= "myInt224" [symbol(), klabel(field_Storage_myInt224)] - - syntax StorageField ::= "myInt232" [symbol(), klabel(field_Storage_myInt232)] - - syntax StorageField ::= "myInt240" [symbol(), klabel(field_Storage_myInt240)] - - syntax StorageField ::= "myInt248" [symbol(), klabel(field_Storage_myInt248)] - - syntax StorageField ::= "myInt256" [symbol(), klabel(field_Storage_myInt256)] - - syntax StorageField ::= "myString" [symbol(), klabel(field_Storage_myString)] - - syntax StorageField ::= "myBytes" [symbol(), klabel(field_Storage_myBytes)] - - syntax StorageField ::= "myUint128s" [symbol(), klabel(field_Storage_myUint128s)] - - syntax StorageField ::= "myUint64s" [symbol(), klabel(field_Storage_myUint64s)] - - syntax StorageField ::= "myFoo" [symbol(), klabel(field_Storage_myFoo)] - - syntax StorageField ::= "myFoos" [symbol(), klabel(field_Storage_myFoos)] - - rule ( #loc ( S2KStorage . myBool ) => 0 ) - - - rule ( #loc ( S2KStorage . myUint8 ) => 0 ) - - - rule ( #loc ( S2KStorage . myUint16 ) => 0 ) - - - rule ( #loc ( S2KStorage . myUint24 ) => 0 ) - - - rule ( #loc ( S2KStorage . myUint32 ) => 0 ) - - - rule ( #loc ( S2KStorage . myUint40 ) => 0 ) - - - rule ( #loc ( S2KStorage . myUint48 ) => 0 ) - - - rule ( #loc ( S2KStorage . myUint56 ) => 0 ) - - - rule ( #loc ( S2KStorage . myUint64 ) => 1 ) - - - rule ( #loc ( S2KStorage . myUint72 ) => 1 ) - - - rule ( #loc ( S2KStorage . myUint80 ) => 1 ) - - - rule ( #loc ( S2KStorage . myUint88 ) => 2 ) - - - rule ( #loc ( S2KStorage . myUint96 ) => 2 ) - - - rule ( #loc ( S2KStorage . myUint104 ) => 3 ) - - - rule ( #loc ( S2KStorage . myUint112 ) => 3 ) - - - rule ( #loc ( S2KStorage . myUint120 ) => 4 ) - - - rule ( #loc ( S2KStorage . myUint128 ) => 4 ) - - - rule ( #loc ( S2KStorage . myUint136 ) => 5 ) - - - rule ( #loc ( S2KStorage . myUint144 ) => 6 ) - - - rule ( #loc ( S2KStorage . myUint152 ) => 7 ) - - - rule ( #loc ( S2KStorage . myUint160 ) => 8 ) - - - rule ( #loc ( S2KStorage . myUint168 ) => 9 ) - - - rule ( #loc ( S2KStorage . myUint176 ) => 10 ) - - - rule ( #loc ( S2KStorage . myUint184 ) => 11 ) - - - rule ( #loc ( S2KStorage . myUint192 ) => 12 ) - - - rule ( #loc ( S2KStorage . myUint200 ) => 13 ) - - - rule ( #loc ( S2KStorage . myUint208 ) => 14 ) - - - rule ( #loc ( S2KStorage . myUint216 ) => 15 ) - - - rule ( #loc ( S2KStorage . myUint224 ) => 16 ) - - - rule ( #loc ( S2KStorage . myUint232 ) => 17 ) - - - rule ( #loc ( S2KStorage . myUint240 ) => 18 ) - - - rule ( #loc ( S2KStorage . myUint248 ) => 19 ) - - - rule ( #loc ( S2KStorage . myUint256 ) => 20 ) - - - rule ( #loc ( S2KStorage . myInt8 ) => 21 ) - - - rule ( #loc ( S2KStorage . myInt16 ) => 21 ) - - - rule ( #loc ( S2KStorage . myInt24 ) => 21 ) - - - rule ( #loc ( S2KStorage . myInt32 ) => 21 ) - - - rule ( #loc ( S2KStorage . myInt40 ) => 21 ) - - - rule ( #loc ( S2KStorage . myInt48 ) => 21 ) - - - rule ( #loc ( S2KStorage . myInt56 ) => 21 ) - - - rule ( #loc ( S2KStorage . myInt64 ) => 22 ) - - - rule ( #loc ( S2KStorage . myInt72 ) => 22 ) - - - rule ( #loc ( S2KStorage . myInt80 ) => 22 ) - - - rule ( #loc ( S2KStorage . myInt88 ) => 23 ) - - - rule ( #loc ( S2KStorage . myInt96 ) => 23 ) - - - rule ( #loc ( S2KStorage . myInt104 ) => 24 ) - - - rule ( #loc ( S2KStorage . myInt112 ) => 24 ) - - - rule ( #loc ( S2KStorage . myInt120 ) => 25 ) - - - rule ( #loc ( S2KStorage . myInt128 ) => 25 ) - - - rule ( #loc ( S2KStorage . myInt136 ) => 26 ) - - - rule ( #loc ( S2KStorage . myInt144 ) => 27 ) - - - rule ( #loc ( S2KStorage . myInt152 ) => 28 ) - - - rule ( #loc ( S2KStorage . myInt160 ) => 29 ) - - - rule ( #loc ( S2KStorage . myInt168 ) => 30 ) - - - rule ( #loc ( S2KStorage . myInt176 ) => 31 ) - - - rule ( #loc ( S2KStorage . myInt184 ) => 32 ) - - - rule ( #loc ( S2KStorage . myInt192 ) => 33 ) - - - rule ( #loc ( S2KStorage . myInt200 ) => 34 ) - - - rule ( #loc ( S2KStorage . myInt208 ) => 35 ) - - - rule ( #loc ( S2KStorage . myInt216 ) => 36 ) - - - rule ( #loc ( S2KStorage . myInt224 ) => 37 ) - - - rule ( #loc ( S2KStorage . myInt232 ) => 38 ) - - - rule ( #loc ( S2KStorage . myInt240 ) => 39 ) - - - rule ( #loc ( S2KStorage . myInt248 ) => 40 ) - - - rule ( #loc ( S2KStorage . myInt256 ) => 41 ) - - - rule ( #loc ( S2KStorage . myString ) => 42 ) - - - rule ( #loc ( S2KStorage . myBytes ) => 43 ) - - - rule ( #loc ( S2KStorage . myUint128s ) => 44 ) - - - rule ( #loc ( S2KStorage . myUint64s ) => 45 ) - - - rule ( #loc ( S2KStorage . myFoo ) => 47 ) - - - rule ( #loc ( S2KStorage . myFoos ) => 49 ) - - - syntax Bytes ::= S2KStorageContract "." S2KStorageMethod [function(), symbol(), klabel(method_Storage)] - - syntax S2KStorageMethod ::= "S2KmyBool" "(" ")" [symbol(), klabel(method_Storage_S2KmyBool_)] - - syntax S2KStorageMethod ::= "S2KmyBytes" "(" ")" [symbol(), klabel(method_Storage_S2KmyBytes_)] - - syntax S2KStorageMethod ::= "S2KmyInt104" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt104_)] - - syntax S2KStorageMethod ::= "S2KmyInt112" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt112_)] - - syntax S2KStorageMethod ::= "S2KmyInt120" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt120_)] - - syntax S2KStorageMethod ::= "S2KmyInt128" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt128_)] - - syntax S2KStorageMethod ::= "S2KmyInt136" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt136_)] - - syntax S2KStorageMethod ::= "S2KmyInt144" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt144_)] - - syntax S2KStorageMethod ::= "S2KmyInt152" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt152_)] - - syntax S2KStorageMethod ::= "S2KmyInt16" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt16_)] - - syntax S2KStorageMethod ::= "S2KmyInt160" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt160_)] - - syntax S2KStorageMethod ::= "S2KmyInt168" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt168_)] - - syntax S2KStorageMethod ::= "S2KmyInt176" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt176_)] - - syntax S2KStorageMethod ::= "S2KmyInt184" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt184_)] - - syntax S2KStorageMethod ::= "S2KmyInt192" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt192_)] - - syntax S2KStorageMethod ::= "S2KmyInt200" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt200_)] - - syntax S2KStorageMethod ::= "S2KmyInt208" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt208_)] - - syntax S2KStorageMethod ::= "S2KmyInt216" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt216_)] - - syntax S2KStorageMethod ::= "S2KmyInt224" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt224_)] - - syntax S2KStorageMethod ::= "S2KmyInt232" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt232_)] - - syntax S2KStorageMethod ::= "S2KmyInt24" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt24_)] - - syntax S2KStorageMethod ::= "S2KmyInt240" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt240_)] - - syntax S2KStorageMethod ::= "S2KmyInt248" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt248_)] - - syntax S2KStorageMethod ::= "S2KmyInt256" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt256_)] - - syntax S2KStorageMethod ::= "S2KmyInt32" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt32_)] - - syntax S2KStorageMethod ::= "S2KmyInt40" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt40_)] - - syntax S2KStorageMethod ::= "S2KmyInt48" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt48_)] - - syntax S2KStorageMethod ::= "S2KmyInt56" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt56_)] - - syntax S2KStorageMethod ::= "S2KmyInt64" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt64_)] - - syntax S2KStorageMethod ::= "S2KmyInt72" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt72_)] - - syntax S2KStorageMethod ::= "S2KmyInt8" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt8_)] - - syntax S2KStorageMethod ::= "S2KmyInt80" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt80_)] - - syntax S2KStorageMethod ::= "S2KmyInt88" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt88_)] - - syntax S2KStorageMethod ::= "S2KmyInt96" "(" ")" [symbol(), klabel(method_Storage_S2KmyInt96_)] - - syntax S2KStorageMethod ::= "S2KmyString" "(" ")" [symbol(), klabel(method_Storage_S2KmyString_)] - - syntax S2KStorageMethod ::= "S2KmyUint104" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint104_)] - - syntax S2KStorageMethod ::= "S2KmyUint112" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint112_)] - - syntax S2KStorageMethod ::= "S2KmyUint120" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint120_)] - - syntax S2KStorageMethod ::= "S2KmyUint128" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint128_)] - - syntax S2KStorageMethod ::= "S2KmyUint136" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint136_)] - - syntax S2KStorageMethod ::= "S2KmyUint144" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint144_)] - - syntax S2KStorageMethod ::= "S2KmyUint152" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint152_)] - - syntax S2KStorageMethod ::= "S2KmyUint16" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint16_)] - - syntax S2KStorageMethod ::= "S2KmyUint160" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint160_)] - - syntax S2KStorageMethod ::= "S2KmyUint168" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint168_)] - - syntax S2KStorageMethod ::= "S2KmyUint176" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint176_)] - - syntax S2KStorageMethod ::= "S2KmyUint184" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint184_)] - - syntax S2KStorageMethod ::= "S2KmyUint192" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint192_)] - - syntax S2KStorageMethod ::= "S2KmyUint200" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint200_)] - - syntax S2KStorageMethod ::= "S2KmyUint208" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint208_)] - - syntax S2KStorageMethod ::= "S2KmyUint216" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint216_)] - - syntax S2KStorageMethod ::= "S2KmyUint224" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint224_)] - - syntax S2KStorageMethod ::= "S2KmyUint232" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint232_)] - - syntax S2KStorageMethod ::= "S2KmyUint24" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint24_)] - - syntax S2KStorageMethod ::= "S2KmyUint240" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint240_)] - - syntax S2KStorageMethod ::= "S2KmyUint248" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint248_)] - - syntax S2KStorageMethod ::= "S2KmyUint256" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint256_)] - - syntax S2KStorageMethod ::= "S2KmyUint32" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint32_)] - - syntax S2KStorageMethod ::= "S2KmyUint40" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint40_)] - - syntax S2KStorageMethod ::= "S2KmyUint48" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint48_)] - - syntax S2KStorageMethod ::= "S2KmyUint56" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint56_)] - - syntax S2KStorageMethod ::= "S2KmyUint64" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint64_)] - - syntax S2KStorageMethod ::= "S2KmyUint72" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint72_)] - - syntax S2KStorageMethod ::= "S2KmyUint8" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint8_)] - - syntax S2KStorageMethod ::= "S2KmyUint80" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint80_)] - - syntax S2KStorageMethod ::= "S2KmyUint88" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint88_)] - - syntax S2KStorageMethod ::= "S2KmyUint96" "(" ")" [symbol(), klabel(method_Storage_S2KmyUint96_)] - - syntax S2KStorageMethod ::= "S2KsetMyBool" "(" Int ":" "bool" ")" [symbol(), klabel(method_Storage_S2KsetMyBool_bool)] - - rule ( S2KStorage . S2KmyBool ( ) => #abiCallData ( "myBool" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyBytes ( ) => #abiCallData ( "myBytes" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt104 ( ) => #abiCallData ( "myInt104" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt112 ( ) => #abiCallData ( "myInt112" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt120 ( ) => #abiCallData ( "myInt120" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt128 ( ) => #abiCallData ( "myInt128" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt136 ( ) => #abiCallData ( "myInt136" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt144 ( ) => #abiCallData ( "myInt144" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt152 ( ) => #abiCallData ( "myInt152" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt16 ( ) => #abiCallData ( "myInt16" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt160 ( ) => #abiCallData ( "myInt160" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt168 ( ) => #abiCallData ( "myInt168" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt176 ( ) => #abiCallData ( "myInt176" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt184 ( ) => #abiCallData ( "myInt184" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt192 ( ) => #abiCallData ( "myInt192" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt200 ( ) => #abiCallData ( "myInt200" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt208 ( ) => #abiCallData ( "myInt208" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt216 ( ) => #abiCallData ( "myInt216" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt224 ( ) => #abiCallData ( "myInt224" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt232 ( ) => #abiCallData ( "myInt232" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt24 ( ) => #abiCallData ( "myInt24" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt240 ( ) => #abiCallData ( "myInt240" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt248 ( ) => #abiCallData ( "myInt248" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt256 ( ) => #abiCallData ( "myInt256" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt32 ( ) => #abiCallData ( "myInt32" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt40 ( ) => #abiCallData ( "myInt40" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt48 ( ) => #abiCallData ( "myInt48" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt56 ( ) => #abiCallData ( "myInt56" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt64 ( ) => #abiCallData ( "myInt64" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt72 ( ) => #abiCallData ( "myInt72" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt8 ( ) => #abiCallData ( "myInt8" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt80 ( ) => #abiCallData ( "myInt80" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt88 ( ) => #abiCallData ( "myInt88" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyInt96 ( ) => #abiCallData ( "myInt96" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyString ( ) => #abiCallData ( "myString" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint104 ( ) => #abiCallData ( "myUint104" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint112 ( ) => #abiCallData ( "myUint112" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint120 ( ) => #abiCallData ( "myUint120" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint128 ( ) => #abiCallData ( "myUint128" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint136 ( ) => #abiCallData ( "myUint136" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint144 ( ) => #abiCallData ( "myUint144" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint152 ( ) => #abiCallData ( "myUint152" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint16 ( ) => #abiCallData ( "myUint16" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint160 ( ) => #abiCallData ( "myUint160" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint168 ( ) => #abiCallData ( "myUint168" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint176 ( ) => #abiCallData ( "myUint176" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint184 ( ) => #abiCallData ( "myUint184" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint192 ( ) => #abiCallData ( "myUint192" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint200 ( ) => #abiCallData ( "myUint200" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint208 ( ) => #abiCallData ( "myUint208" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint216 ( ) => #abiCallData ( "myUint216" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint224 ( ) => #abiCallData ( "myUint224" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint232 ( ) => #abiCallData ( "myUint232" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint24 ( ) => #abiCallData ( "myUint24" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint240 ( ) => #abiCallData ( "myUint240" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint248 ( ) => #abiCallData ( "myUint248" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint256 ( ) => #abiCallData ( "myUint256" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint32 ( ) => #abiCallData ( "myUint32" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint40 ( ) => #abiCallData ( "myUint40" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint48 ( ) => #abiCallData ( "myUint48" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint56 ( ) => #abiCallData ( "myUint56" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint64 ( ) => #abiCallData ( "myUint64" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint72 ( ) => #abiCallData ( "myUint72" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint8 ( ) => #abiCallData ( "myUint8" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint80 ( ) => #abiCallData ( "myUint80" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint88 ( ) => #abiCallData ( "myUint88" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KmyUint96 ( ) => #abiCallData ( "myUint96" , .TypedArgs ) ) - - - rule ( S2KStorage . S2KsetMyBool ( V0_newBool : bool ) => #abiCallData ( "setMyBool" , #bool ( V0_newBool ) , .TypedArgs ) ) - ensures #rangeBool ( V0_newBool ) - - - rule ( selector ( "myBool()" ) => 1844366782 ) - - - rule ( selector ( "myBytes()" ) => 1898923522 ) - - - rule ( selector ( "myInt104()" ) => 3769717327 ) - - - rule ( selector ( "myInt112()" ) => 1361874479 ) - - - rule ( selector ( "myInt120()" ) => 2449055983 ) - - - rule ( selector ( "myInt128()" ) => 1171335287 ) - - - rule ( selector ( "myInt136()" ) => 1921575036 ) - - - rule ( selector ( "myInt144()" ) => 3031097123 ) - - - rule ( selector ( "myInt152()" ) => 2183556540 ) - - - rule ( selector ( "myInt16()" ) => 1716680015 ) - - - rule ( selector ( "myInt160()" ) => 2880209597 ) - - - rule ( selector ( "myInt168()" ) => 64341664 ) - - - rule ( selector ( "myInt176()" ) => 2473962370 ) - - - rule ( selector ( "myInt184()" ) => 933893415 ) - - - rule ( selector ( "myInt192()" ) => 3902309668 ) - - - rule ( selector ( "myInt200()" ) => 2002425666 ) - - - rule ( selector ( "myInt208()" ) => 103289144 ) - - - rule ( selector ( "myInt216()" ) => 4128675402 ) - - - rule ( selector ( "myInt224()" ) => 1054187961 ) - - - rule ( selector ( "myInt232()" ) => 1299236373 ) - - - rule ( selector ( "myInt24()" ) => 180311096 ) - - - rule ( selector ( "myInt240()" ) => 193999351 ) - - - rule ( selector ( "myInt248()" ) => 1172761411 ) - - - rule ( selector ( "myInt256()" ) => 930181817 ) - - - rule ( selector ( "myInt32()" ) => 652237467 ) - - - rule ( selector ( "myInt40()" ) => 2688242429 ) - - - rule ( selector ( "myInt48()" ) => 294352996 ) - - - rule ( selector ( "myInt56()" ) => 1426573562 ) - - - rule ( selector ( "myInt64()" ) => 1826080093 ) - - - rule ( selector ( "myInt72()" ) => 1358599558 ) - - - rule ( selector ( "myInt8()" ) => 1855112094 ) - - - rule ( selector ( "myInt80()" ) => 2607424367 ) - - - rule ( selector ( "myInt88()" ) => 4237602313 ) - - - rule ( selector ( "myInt96()" ) => 1140454608 ) - - - rule ( selector ( "myString()" ) => 1227618840 ) - - - rule ( selector ( "myUint104()" ) => 2562905582 ) - - - rule ( selector ( "myUint112()" ) => 2312572821 ) - - - rule ( selector ( "myUint120()" ) => 3068336510 ) - - - rule ( selector ( "myUint128()" ) => 2127339145 ) - - - rule ( selector ( "myUint136()" ) => 4173203025 ) - - - rule ( selector ( "myUint144()" ) => 4035797251 ) - - - rule ( selector ( "myUint152()" ) => 360190854 ) - - - rule ( selector ( "myUint16()" ) => 2385363659 ) - - - rule ( selector ( "myUint160()" ) => 1383333939 ) - - - rule ( selector ( "myUint168()" ) => 1009580974 ) - - - rule ( selector ( "myUint176()" ) => 2404840593 ) - - - rule ( selector ( "myUint184()" ) => 407000813 ) - - - rule ( selector ( "myUint192()" ) => 229692326 ) - - - rule ( selector ( "myUint200()" ) => 161744886 ) - - - rule ( selector ( "myUint208()" ) => 3633238487 ) - - - rule ( selector ( "myUint216()" ) => 3288289344 ) - - - rule ( selector ( "myUint224()" ) => 1934302803 ) - - - rule ( selector ( "myUint232()" ) => 2569544816 ) - - - rule ( selector ( "myUint24()" ) => 946970341 ) - - - rule ( selector ( "myUint240()" ) => 2223697895 ) - - - rule ( selector ( "myUint248()" ) => 1057386179 ) - - - rule ( selector ( "myUint256()" ) => 2816200220 ) - - - rule ( selector ( "myUint32()" ) => 302881183 ) - - - rule ( selector ( "myUint40()" ) => 2133099158 ) - - - rule ( selector ( "myUint48()" ) => 2035097050 ) - - - rule ( selector ( "myUint56()" ) => 3099541938 ) - - - rule ( selector ( "myUint64()" ) => 1056558741 ) - - - rule ( selector ( "myUint72()" ) => 329837525 ) - - - rule ( selector ( "myUint8()" ) => 3802444463 ) - - - rule ( selector ( "myUint80()" ) => 2279010072 ) - - - rule ( selector ( "myUint88()" ) => 101404465 ) - - - rule ( selector ( "myUint96()" ) => 2823172538 ) - - - rule ( selector ( "setMyBool(bool)" ) => 3944427737 ) - - -endmodule - -module STORAGE-VERIFICATION - imports public Storage-CONTRACT - - - -endmodule - diff --git a/tests/specs/examples/storage-spec.md b/tests/specs/examples/storage-spec.md deleted file mode 100644 index d27e067870..0000000000 --- a/tests/specs/examples/storage-spec.md +++ /dev/null @@ -1,147 +0,0 @@ -Storage Verification -==================== - -```k -requires "edsl.md" -requires "optimizations.md" -requires "lemmas/lemmas.k" -``` - -Solidity Code -------------- - -File [`Storage.sol`](Storage.sol) contains some code snippets we want to verify the functional correctness of. -Call `kevm solc-to-k Storage.sol Storage > storage-bin-runtime.k`, to generate the helper K files. - -Verification Module -------------------- - -Helper module for verification tasks. - -- Add any lemmas needed for our proofs. -- Import a large body of existing lemmas from KEVM. - -```k -requires "storage-bin-runtime.k" - -module VERIFICATION - imports EDSL - imports LEMMAS - imports EVM-OPTIMIZATIONS - imports STORAGE-VERIFICATION - - syntax Step ::= Bytes | Int - syntax KItem ::= runLemma ( Step ) [symbol(runLemma)] | doneLemma ( Step ) - // ------------------------------------------------------- - rule runLemma(S) => doneLemma(S) ... - - // decimals lemmas - // --------------- - - rule 255 &Int X true requires 0 <=Int X [simplification, smt-lemma] - rule 0 <=Int 255 &Int X => true requires 0 <=Int X [simplification, smt-lemma] - - rule bool2Word ( notBool WORD ==Int 0 ) => WORD [simplification] - -endmodule -``` - -K Specifications ----------------- - -Formal specifications (using KEVM) of the correctness properties for our Solidity code. - -```k -module STORAGE-SPEC - imports VERIFICATION -``` - -### Functional Claims - -```k - claim runLemma(#bufStrict(32, #loc(S2KStorage . myBool))) => doneLemma(#buf(32,0)) ... -``` - -### Calling myBool() works - -- Everything from `` to `` is boilerplate. -- We are setting `` to `myBool()`. -- We ask the prover to show that in all cases, we will end in `EVMC_SUCCESS` (rollback) when this happens. -- The `` cell specifies that we correctly lookup the `myBool` value from the account storage. - -```k - claim [myBool]: - NORMAL - ISTANBUL - true - - .List - #binRuntime(S2KStorage) - #computeValidJumpDests(#binRuntime(S2KStorage)) - - ACCTID => ?_ - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - - S2KStorage.S2KmyBool() - #execute => #halt ... - .Bytes => #buf(32, MYBOOL) - _ => EVMC_SUCCESS - - - ACCTID - ACCT_STORAGE - ... - - - requires MYBOOL_KEY ==Int #loc(S2KStorage . myBool) - andBool MYBOOL ==Int 255 &Int #lookup(ACCT_STORAGE, MYBOOL_KEY) -``` - - -```k - claim [setMyBool]: - NORMAL - ISTANBUL - true - - .List - #binRuntime(S2KStorage) - #computeValidJumpDests(#binRuntime(S2KStorage)) - false - - ACCTID => ?_ - .Bytes => ?_ - 0 => ?_ - .WordStack => ?_ - 0 => ?_ - #gas(_VGAS) => ?_ - 0 => ?_ - - S2KStorage.S2KsetMyBool(NEW_VAL : bool) - #execute => #halt ... - .Bytes - _ => EVMC_SUCCESS - - - ACCTID - ACCT_STORAGE => ACCT_STORAGE [ MYBOOL_KEY <- NEW_STORAGE_CONTENT ] - ... - - - _ => ?_ - - requires #rangeBool(NEW_VAL) - andBool MYBOOL_KEY ==Int #loc(S2KStorage . myBool) - andBool OLD_STORAGE_CONTENT ==Int #lookup ( ACCT_STORAGE , MYBOOL_KEY ) - andBool NEW_STORAGE_CONTENT ==Int NEW_VAL |Int ((~Word 255) &Int OLD_STORAGE_CONTENT) - -``` - -```k -endmodule -``` diff --git a/tests/specs/examples/storage-spec/index.html b/tests/specs/examples/storage-spec/index.html new file mode 100644 index 0000000000..fd247faa34 --- /dev/null +++ b/tests/specs/examples/storage-spec/index.html @@ -0,0 +1,349 @@ + + + + + + + + + + + + + +KEVM: Semantics of EVM in K | Runtime Verification, Inc. + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Storage Verification

+
requires "edsl.md"
+requires "optimizations.md"
+requires "lemmas/lemmas.k"
+
+

Solidity Code

+

File Storage.sol contains some code snippets we want to verify the functional correctness of. +Call kevm solc-to-k Storage.sol Storage > storage-bin-runtime.k, to generate the helper K files.

+

Verification Module

+

Helper module for verification tasks.

+
    +
  • Add any lemmas needed for our proofs.
  • +
  • Import a large body of existing lemmas from KEVM.
  • +
+
requires "storage-bin-runtime.k"
+
+module VERIFICATION
+    imports EDSL
+    imports LEMMAS
+    imports EVM-OPTIMIZATIONS
+    imports STORAGE-VERIFICATION
+
+    syntax Step ::= Bytes | Int
+    syntax KItem ::= runLemma ( Step ) [symbol(runLemma)] | doneLemma ( Step )
+ // -------------------------------------------------------
+    rule <k> runLemma(S) => doneLemma(S) ... </k>
+
+ // decimals lemmas
+ // ---------------
+
+    rule         255 &Int X <Int 256 => true requires 0 <=Int X [simplification, smt-lemma]
+    rule 0 <=Int 255 &Int X          => true requires 0 <=Int X [simplification, smt-lemma]
+
+    rule bool2Word ( notBool WORD ==Int 0 ) => WORD           [simplification]
+
+endmodule
+
+

K Specifications

+

Formal specifications (using KEVM) of the correctness properties for our Solidity code.

+
module STORAGE-SPEC
+    imports VERIFICATION
+
+

Functional Claims

+
    claim <k> runLemma(#bufStrict(32, #loc(S2KStorage . myBool))) => doneLemma(#buf(32,0)) ... </k>
+
+

Calling myBool() works

+
    +
  • Everything from <mode> to <callValue> is boilerplate.
  • +
  • We are setting <callData> to myBool().
  • +
  • We ask the prover to show that in all cases, we will end in EVMC_SUCCESS (rollback) when this happens.
  • +
  • The <output> cell specifies that we correctly lookup the myBool value from the account storage.
  • +
+
    claim [myBool]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                        </callStack>
+          <program>   #binRuntime(S2KStorage)                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime(S2KStorage)) </jumpDests>
+
+          <id>         ACCTID      => ?_ </id>
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+
+          <callData>   S2KStorage.S2KmyBool()               </callData>
+          <k>          #execute => #halt ...          </k>
+          <output>     .Bytes   => #buf(32, MYBOOL)   </output>
+          <statusCode> _        => EVMC_SUCCESS       </statusCode>
+
+          <account>
+            <acctID> ACCTID </acctID>
+            <storage> ACCT_STORAGE </storage>
+            ...
+          </account>
+
+       requires MYBOOL_KEY ==Int #loc(S2KStorage . myBool)
+        andBool MYBOOL     ==Int 255 &Int #lookup(ACCT_STORAGE, MYBOOL_KEY)
+
+
    claim [setMyBool]:
+          <mode>     NORMAL   </mode>
+          <schedule> ISTANBUL </schedule>
+          <useGas>  true     </useGas>
+
+          <callStack> .List                                        </callStack>
+          <program>   #binRuntime(S2KStorage)                         </program>
+          <jumpDests> #computeValidJumpDests(#binRuntime(S2KStorage)) </jumpDests>
+          <static>    false                                        </static>
+
+          <id>         ACCTID      => ?_ </id>
+          <localMem>   .Bytes     => ?_ </localMem>
+          <memoryUsed> 0           => ?_ </memoryUsed>
+          <wordStack>  .WordStack  => ?_ </wordStack>
+          <pc>         0           => ?_ </pc>
+          <gas>        #gas(_VGAS) => ?_ </gas>
+          <callValue>  0           => ?_ </callValue>
+
+          <callData>   S2KStorage.S2KsetMyBool(NEW_VAL : bool) </callData>
+          <k>          #execute   => #halt ...           </k>
+          <output>     .Bytes                            </output>
+          <statusCode> _          => EVMC_SUCCESS        </statusCode>
+
+          <account>
+            <acctID> ACCTID </acctID>
+            <storage> ACCT_STORAGE => ACCT_STORAGE [ MYBOOL_KEY <- NEW_STORAGE_CONTENT ] </storage>
+            ...
+          </account>
+
+          <refund> _ => ?_ </refund>
+
+       requires #rangeBool(NEW_VAL)
+        andBool MYBOOL_KEY          ==Int #loc(S2KStorage . myBool)
+        andBool OLD_STORAGE_CONTENT ==Int #lookup ( ACCT_STORAGE , MYBOOL_KEY )
+        andBool NEW_STORAGE_CONTENT ==Int NEW_VAL |Int ((~Word 255) &Int OLD_STORAGE_CONTENT)
+
+
+
endmodule
+
+
+
+ + + +
+ +
+
+ + + + + + + + + + + diff --git a/tests/specs/examples/sum-to-n-foundry-spec.k b/tests/specs/examples/sum-to-n-foundry-spec.k deleted file mode 100644 index fdb82f77d0..0000000000 --- a/tests/specs/examples/sum-to-n-foundry-spec.k +++ /dev/null @@ -1,74 +0,0 @@ -requires "lemmas/lemmas.k" -requires "gas.md" - -module VERIFICATION - imports LEMMAS - imports INFINITE-GAS - imports EVM - - rule N xorInt maxUInt256 => maxUInt256 -Int N - requires #rangeUInt(256, N) - [simplification] - -endmodule - -module SUM-TO-N-FOUNDRY-SPEC - imports VERIFICATION - -claim [foundry-sum-to-n-loop-invariant]: - - - ((JUMPI 1569 bool2Word ( N:Int ==Int 0 )) => JUMP 1569) - ~> #pc [ JUMPI ] - ~> #execute - ... - - - NORMAL - - - LONDON - - - true - - - - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01,W`\x005`\xe0\x1c\x80c]\xe2/\x07\x11a\x00\xadW\x80c\xa1\x18\xe1\x02\x11a\x00qW\x80c\xa1\x18\xe1\x02\x14a\x02bW\x80c\xbaAO\xa6\x14a\x02uW\x80c\xd3\x13\x94\r\x14a\x02\x8dW\x80c\xf8\xcc\xbfG\x14a\x02\xa0W\x80c\xfav&\xd4\x14a\x02\xb3W`\x00\x80\xfd[\x80c]\xe2/\x07\x14a\x02\x03W\x80cm]9\xdf\x14a\x02\x16W\x80c~\x8e#\xd0\x14a\x02)W\x80c\x88~O\xdb\x14a\x02=`\x00\xfd[PPPP`\x00`\x02\x82`\x01a\x04\x8f\x91\x90a\x13eV[a\x04\x99\x90\x84a\x13}V[a\x04\xa3\x91\x90a\x138V[\x90P`\x00a\x04\xb0\x83a\f`V[\x90Pa\x03\x14\x82\x82a\f\x92V[`\x00a\x04\xc7\x82a\rqV[\x90P`\x01`\x00[\x83Q\x81\x10\x80\x15a\x04\xdbWP\x81[\x15a\x05\x12W\x83\x81\x81Q\x81\x10a\x04\xf2Wa\x04\xf2a\x13\x9cV[` \x02` \x01\x01Q\x83\x10\x15\x91P\x80\x80a\x05\n\x90a\x13LV[\x91PPa\x04\xceV[Pa\x03\x14\x81a\t\x9bV[`\x00a\x03&`da\x05\x89V[`\x00a\x053\x82a\r\xd0V[\x90P`\x01`\x00[\x83Q\x81\x10\x80\x15a\x05GWP\x81[\x15a\x05\x12W\x83\x81\x81Q\x81\x10a\x05^Wa\x05^a\x13\x9cV[` \x02` \x01\x01Q\x83\x10\x15\x91P\x80\x80a\x05v\x90a\x13LV[\x91PPa\x05:V[`\x00a\x02\xcb\x83a\x0e.V[`@Qc&1\xf2\xb1`\xe1\x1b\x81Rf\xb8\x17\x02\xe0\\\x0bo\x82\x11\x15`\x04\x82\x01R`\x00\x90sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf6W=`\x00\x80>=`\x00\xfd[PPPP`\x00[\x82\x15a\x06!Wa\x06\r\x83\x82a\x13eV[\x90Pa\x06\x1a`\x01\x84a\x13!V[\x92Pa\x05\xfdV[\x92\x91PPV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R`d\x82\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06wW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06\x8bW=`\x00\x80>=`\x00\xfd[PPPP`\x00`\x02\x82`\x01a\x06\xa0\x91\x90a\x13eV[a\x06\xaa\x90\x84a\x13}V[a\x06\xb4\x91\x90a\x138V[\x90P`\x00a\x04\xb0\x83a\x0eeV[`\x00a\x06\xcc\x82a\x0e\x8fV[\x90P`\x01\x80[\x82Q\x81\x10\x80\x15a\x06\xdfWP\x81[\x15a\x05\x12W\x83\x81\x81Q\x81\x10a\x06\xf6Wa\x06\xf6a\x13\x9cV[` \x02` \x01\x01Q\x84`\x01\x83a\x07\f\x91\x90a\x13!V[\x81Q\x81\x10a\x07\x1cWa\x07\x1ca\x13\x9cV[` \x02` \x01\x01Q\x11\x15\x91P\x80\x80a\x073\x90a\x13LV[\x91PPa\x06\xd2V[`\x00a\x07F\x83a\x0e\xbbV[\x90P\x82`\x00\x03a\x07[Wa\x03\x14\x81`\x00a\f\x92V[a\x07ga\x02\xdd\x82a\tJV[`\x00a\x07|a\x07w`\x01\x86a\x13!V[a\x0e\xbbV[\x90Pa\x03\x83\x81\x84\x11\x15\x80a\x07\x90WP\x82\x84\x10\x15[\x80a\x02\xddWPa\x07\x9f\x84a\tJV[\x15a\t\x9bV[`\x00\x80Ta\x01\x00\x90\x04`\xff\x16\x15a\x07\xc5WP`\x00Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08\xcbW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08S\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x13\xdeV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08m\x91a\x14\x0fV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08\xaaW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08\xafV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08\xc7\x91\x90a\x14+V[\x91PP[\x91\x90PV[`\x00a\x08\xdb\x82a\x0e\xf5V[\x90P`\x01\x80[\x82Q\x81\x10\x80\x15a\x08\xeeWP\x81[\x15a\x05\x12W\x83\x81\x81Q\x81\x10a\t\x05Wa\t\x05a\x13\x9cV[` \x02` \x01\x01Q\x84`\x01\x83a\t\x1b\x91\x90a\x13!V[\x81Q\x81\x10a\t+Wa\t+a\x13\x9cV[` \x02` \x01\x01Q\x11\x15\x91P\x80\x80a\tB\x90a\x13LV[\x91PPa\x08\xe1V[`\x00`\x02\x82\x10\x15a\t]WP`\x00\x91\x90PV[`\x02[\x82\x81\x10\x15a\t\x92Wa\tr\x81\x84a\x12\xf7V[\x15a\t\x80WP`\x00\x92\x91PPV[\x80a\t\x8a\x81a\x13LV[\x91PPa\t`V[P`\x01\x92\x91PPV[\x80a\x03\xa3W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\t\xff\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x03\xa3a\x0f\x17V[`\x00\x81`\x00\x03a\n!WP`\x00\x91\x90PV[\x81[\x80\x91P`\x02\x81a\n3\x85\x84a\x10#V[a\n=\x91\x90a\x13eV[a\nG\x91\x90a\x138V[\x90P\x81\x81\x03a\n#W[P\x91\x90PV[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\nm`\x02\x82a\x138V[a\nw\x84\x86a\x13}V[a\n\x81\x91\x90a\x13eV[a\n\x8b\x91\x90a\x138V[\x93\x92PPPV[`\x00`\x02\x82\x10\x15a\n\xa5WP`\x00\x91\x90PV[`\x02[a\n\xb3`\x02\x84a\x138V[\x81\x11a\t\x92Wa\n\xc3\x81\x84a\x12\xf7V[\x15a\n\xd1WP`\x00\x92\x91PPV[\x80a\n\xdb\x81a\x13LV[\x91PPa\n\xa8V[\x80\x15\x15\x82\x15\x15\x14a\x04\x06W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0bX\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [boo`@\x82\x01Ral]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f(\x0fDF\xb2\x8a\x13rA}\xdae\x8d0\xb9[)\x92\xb1*\xc9\xc7\xf3xS_)\xa9z\xcf5\x83\x81a\x0b\xa9W`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01dfalse`\xd8\x1b\x81RPa\x0b\xc7V[`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01ctrue`\xe0\x1b\x81RP[`@Qa\x0b\xd4\x91\x90a\x14yV[`@Q\x80\x91\x03\x90\xa1\x7f(\x0fDF\xb2\x8a\x13rA}\xdae\x8d0\xb9[)\x92\xb1*\xc9\xc7\xf3xS_)\xa9z\xcf5\x83\x82a\f%W`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01dfalse`\xd8\x1b\x81RPa\fCV[`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01ctrue`\xe0\x1b\x81RP[`@Qa\fP\x91\x90a\x14\xbdV[`@Q\x80\x91\x03\x90\xa1a\x04\x06a\x0f\x17V[`\x00\x80\x80[\x83\x81\x10\x15a\f\x8bWa\fw\x81\x83a\x13eV[\x91P\x80a\f\x83\x81a\x13LV[\x91PPa\feV[P\x92\x91PPV[\x80\x82\x14a\x04\x06W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\r\x03\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\r:\x91\x90a\x14\xe7V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\fP\x91\x90a\x15\x1fV[`\x00\x80`\x01[\x83Q\x81\x10\x15a\f\x8bW\x81\x84\x82\x81Q\x81\x10a\r\x93Wa\r\x93a\x13\x9cV[` \x02` \x01\x01Q\x11\x15a\r\xbeW\x83\x81\x81Q\x81\x10a\r\xb3Wa\r\xb3a\x13\x9cV[` \x02` \x01\x01Q\x91P[\x80a\r\xc8\x81a\x13LV[\x91PPa\rwV[`\x00\x80\x80[\x83Q\x81\x10\x15a\f\x8bW\x81\x84\x82\x81Q\x81\x10a\r\xf1Wa\r\xf1a\x13\x9cV[` \x02` \x01\x01Q\x11\x15a\x0e\x1cW\x83\x81\x81Q\x81\x10a\x0e\x11Wa\x0e\x11a\x13\x9cV[` \x02` \x01\x01Q\x91P[\x80a\x0e&\x81a\x13LV[\x91PPa\r\xd5V[`\x00`\x02[\x82\x81\x10\x15a\t\x92Wa\x0eE\x81\x84a\x12\xf7V[\x15a\x0eSWP`\x00\x92\x91PPV[\x80a\x0e]\x81a\x13LV[\x91PPa\x0e3V[`\x00\x80\x80[\x83\x81\x11a\f\x8bWa\x0e{\x81\x83a\x13eV[\x91P\x80a\x0e\x87\x81a\x13LV[\x91PPa\x0ejV[```\x01\x82Q\x11a\x0e\x9eWP\x90V[a\x0e\xb7\x82`\x00`\x01\x85Qa\x0e\xb2\x91\x90a\x13!V[a\x10CV[P\x90V[`\x00\x80[\x82\x81\x10\x15a\nQW\x81a\x0e\xd1\x81a\x13LV[\x92PPa\x0e\xdd\x82a\tJV[\x15a\x0e\xf0W\x80a\x0e\xec\x81a\x13LV[\x91PP[a\x0e\xbfV[```\x01\x82Q\x11a\x0f\x04WP\x90V[a\x0e\xb7\x82`\x01\x80\x85Qa\x0e\xb2\x91\x90a\x13!V[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x10\x12W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\xb1\x92\x91` \x01a\x13\xdeV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\xcb\x91a\x14\x0fV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x10\x08W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x10\rV[``\x91P[PPPP[`\x00\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\x00\x81a\x101`\x02\x82a\x138V[a\nwg\r\xe0\xb6\xb3\xa7d\x00\x00\x86a\x13}V[\x80\x82\x10a\x10OWPPPV[\x81\x81`\x00\x85`\x02a\x10`\x85\x85a\x13!V[a\x10j\x91\x90a\x138V[a\x10t\x90\x87a\x13eV[\x81Q\x81\x10a\x10\x84Wa\x10\x84a\x13\x9cV[` \x02` \x01\x01Q\x90P[\x81\x83\x11a\x11\xa4W[\x80\x86\x84\x81Q\x81\x10a\x10\xaaWa\x10\xaaa\x13\x9cV[` \x02` \x01\x01Q\x10\x15a\x10\xcaW\x82a\x10\xc2\x81a\x13LV[\x93PPa\x10\x97V[\x85\x82\x81Q\x81\x10a\x10\xdcWa\x10\xdca\x13\x9cV[` \x02` \x01\x01Q\x81\x10\x80\x15a\x10\xf2WP`\x00\x82\x11[\x15a\x11\tW\x81a\x11\x01\x81a\x15IV[\x92PPa\x10\xcaV[\x81\x83\x11a\x11\x9fW\x85\x82\x81Q\x81\x10a\x11\"Wa\x11\"a\x13\x9cV[` \x02` \x01\x01Q\x86\x84\x81Q\x81\x10a\x11 - - ( SetItem ( 548 ) ( SetItem ( 3844 ) ( SetItem ( 836 ) ( SetItem ( 4228 ) ( SetItem ( 4516 ) ( SetItem ( 324 ) ( SetItem ( 2725 ) ( SetItem ( 3685 ) ( SetItem ( 3653 ) ( SetItem ( 1957 ) ( SetItem ( 1989 ) ( SetItem ( 4965 ) ( SetItem ( 3109 ) ( SetItem ( 5221 ) ( SetItem ( 3173 ) ( SetItem ( 4581 ) ( SetItem ( 2309 ) ( SetItem ( 3622 ) ( SetItem ( 4614 ) ( SetItem ( 934 ) ( SetItem ( 806 ) ( SetItem ( 4870 ) ( SetItem ( 1862 ) ( SetItem ( 1030 ) ( SetItem ( 1126 ) ( SetItem ( 326 ) ( SetItem ( 3719 ) ( SetItem ( 1575 ) ( SetItem ( 2631 ) ( SetItem ( 3015 ) ( SetItem ( 1895 ) ( SetItem ( 4935 ) ( SetItem ( 5351 ) ( SetItem ( 2247 ) ( SetItem ( 1223 ) ( SetItem ( 391 ) ( SetItem ( 1351 ) ( SetItem ( 672 ) ( SetItem ( 1696 ) ( SetItem ( 704 ) ( SetItem ( 4192 ) ( SetItem ( 3168 ) ( SetItem ( 2432 ) ( SetItem ( 2400 ) ( SetItem ( 2689 ) ( SetItem ( 4833 ) ( SetItem ( 1729 ) ( SetItem ( 2593 ) ( SetItem ( 1569 ) ( SetItem ( 4897 ) ( SetItem ( 865 ) ( SetItem ( 2273 ) ( SetItem ( 5153 ) ( SetItem ( 5121 ) ( SetItem ( 4353 ) ( SetItem ( 353 ) ( SetItem ( 738 ) ( SetItem ( 4706 ) ( SetItem ( 610 ) ( SetItem ( 4290 ) ( SetItem ( 386 ) ( SetItem ( 1506 ) ( SetItem ( 4386 ) ( SetItem ( 2370 ) ( SetItem ( 2787 ) ( SetItem ( 2755 ) ( SetItem ( 4643 ) ( SetItem ( 2595 ) ( SetItem ( 515 ) ( SetItem ( 931 ) ( SetItem ( 899 ) ( SetItem ( 5283 ) ( SetItem ( 1187 ) ( SetItem ( 3203 ) ( SetItem ( 4131 ) ( SetItem ( 4163 ) ( SetItem ( 3139 ) ( SetItem ( 483 ) ( SetItem ( 3331 ) ( SetItem ( 3820 ) ( SetItem ( 1740 ) ( SetItem ( 1804 ) ( SetItem ( 4940 ) ( SetItem ( 300 ) ( SetItem ( 653 ) ( SetItem ( 4621 ) ( SetItem ( 1549 ) ( SetItem ( 2669 ) ( SetItem ( 5069 ) ( SetItem ( 781 ) ( SetItem ( 173 ) ( SetItem ( 4109 ) ( SetItem ( 2157 ) ( SetItem ( 5197 ) ( SetItem ( 461 ) ( SetItem ( 3630 ) ( SetItem ( 4686 ) ( SetItem ( 878 ) ( SetItem ( 2286 ) ( SetItem ( 1230 ) ( SetItem ( 334 ) ( SetItem ( 3727 ) ( SetItem ( 2575 ) ( SetItem ( 591 ) ( SetItem ( 2223 ) ( SetItem ( 4239 ) ( SetItem ( 1167 ) ( SetItem ( 5135 ) ( SetItem ( 4175 ) ( SetItem ( 4463 ) ( SetItem ( 367 ) ( SetItem ( 2728 ) ( SetItem ( 968 ) ( SetItem ( 4104 ) ( SetItem ( 4488 ) ( SetItem ( 488 ) ( SetItem ( 3528 ) ( SetItem ( 1320 ) ( SetItem ( 553 ) ( SetItem ( 2985 ) ( SetItem ( 905 ) ( SetItem ( 1001 ) ( SetItem ( 1417 ) ( SetItem ( 4361 ) ( SetItem ( 5449 ) ( SetItem ( 1706 ) ( SetItem ( 3690 ) ( SetItem ( 586 ) ( SetItem ( 4266 ) ( SetItem ( 2218 ) ( SetItem ( 4298 ) ( SetItem ( 1034 ) ( SetItem ( 4202 ) ( SetItem ( 2442 ) ( SetItem ( 4554 ) ( SetItem ( 1290 ) ( SetItem ( 2378 ) ( SetItem ( 2699 ) ( SetItem ( 1675 ) ( SetItem ( 715 ) ( SetItem ( 4043 ) ( SetItem ( 971 ) ( SetItem ( 811 ) ( SetItem ( 4875 ) ( SetItem ( 875 ) ( SetItem ( 3211 ) ( SetItem ( 2251 ) ( SetItem ( 5163 ) ( SetItem ( 2347 ) ( SetItem ( 1716 ) ( SetItem ( 756 ) ( SetItem ( 4724 ) ( SetItem ( 3028 ) ( SetItem ( 788 ) ( SetItem ( 244 ) ( SetItem ( 4212 ) ( SetItem ( 4596 ) ( SetItem ( 372 ) ( SetItem ( 3829 ) ( SetItem ( 4821 ) ( SetItem ( 629 ) ( SetItem ( 5045 ) ( SetItem ( 917 ) ( SetItem ( 5301 ) ( SetItem ( 437 ) ( SetItem ( 405 ) ( SetItem ( 3541 ) ( SetItem ( 469 ) ( SetItem ( 1782 ) ( SetItem ( 4662 ) ( SetItem ( 534 ) ( SetItem ( 822 ) ( SetItem ( 1046 ) ( SetItem ( 502 ) ( SetItem ( 1526 ) ( SetItem ( 1398 ) ( SetItem ( 4438 ) ( SetItem ( 4791 ) ( SetItem ( 3767 ) ( SetItem ( 4855 ) ( SetItem ( 567 ) ( SetItem ( 2679 ) ( SetItem ( 1655 ) ( SetItem ( 2647 ) ( SetItem ( 5015 ) ( SetItem ( 3863 ) ( SetItem ( 1911 ) ( SetItem ( 4247 ) ( SetItem ( 3191 ) ( SetItem ( 4535 ) ( SetItem ( 3447 ) ( SetItem ( 3824 ) ( SetItem ( 624 ) ( SetItem ( 1936 ) ( SetItem ( 1200 ) ( SetItem ( 2256 ) ( SetItem ( 16 ) ( SetItem ( 3152 ) ( SetItem ( 3536 ) ( SetItem ( 2769 ) ( SetItem ( 3793 ) ( SetItem ( 3601 ) ( SetItem ( 529 ) ( SetItem ( 2641 ) ( SetItem ( 4017 ) ( SetItem ( 945 ) ( SetItem ( 4145 ) ( SetItem ( 113 ) ( SetItem ( 3569 ) ( SetItem ( 305 ) ( SetItem ( 5393 ) ( SetItem ( 3441 ) ( SetItem ( 3762 ) ( SetItem ( 2706 ) ( SetItem ( 1746 ) ( SetItem ( 5042 ) ( SetItem ( 3218 ) ( SetItem ( 4338 ) ( SetItem ( 1266 ) ( SetItem ( 4114 ) ( SetItem ( 2450 ) ( SetItem ( 4562 ) ( SetItem ( 1298 ) ( SetItem ( 2418 ) ( SetItem ( 2739 ) ( SetItem ( 691 ) ( SetItem ( 2611 ) ( SetItem ( 3635 ) ( SetItem ( 3667 ) ( SetItem ( 1011 ) ( SetItem ( 4915 ) ( SetItem ( 1843 ) ( SetItem ( 2131 ) ( SetItem ( 3507 ) ( SetItem ( 3475 ) ( SetItem ( 1331 ) ( SetItem ( 4796 ) ( SetItem ( 572 ) ( SetItem ( 3612 ) ( SetItem ( 5020 ) ( SetItem ( 1820 ) ( SetItem ( 892 ) ( SetItem ( 1916 ) ( SetItem ( 1212 ) ( SetItem ( 4316 ) ( SetItem ( 4412 ) ( SetItem ( 1308 ) ( SetItem ( 765 ) ( SetItem ( 3805 ) ( SetItem ( 733 ) ( SetItem ( 2621 ) ( SetItem ( 637 ) ( SetItem ( 3677 ) ( SetItem ( 605 ) ( SetItem ( 989 ) ( SetItem ( 4989 ) ( SetItem ( 5309 ) ( SetItem ( 5181 ) ( SetItem ( 1533 ) ( SetItem ( 2397 ) ( SetItem ( 3742 ) ( SetItem ( 926 ) ( SetItem ( 5086 ) ( SetItem ( 4958 ) ( SetItem ( 3518 ) ( SetItem ( 1406 ) ( SetItem ( 1374 ) ( SetItem ( 3775 ) ( SetItem ( 1759 ) ( SetItem ( 959 ) ( SetItem ( 1951 ) ( SetItem ( 4511 ) ( SetItem ( 2559 ) ( SetItem ( 319 ) ( SetItem ( 5407 ) ( SetItem ( 4920 ) ( SetItem ( 4984 ) ( SetItem ( 2904 ) ( SetItem ( 5464 ) ( SetItem ( 344 ) ( SetItem ( 4761 ) ( SetItem ( 793 ) ( SetItem ( 1177 ) ( SetItem ( 5241 ) ( SetItem ( 1562 ) ( SetItem ( 858 ) ( SetItem ( 1146 ) ( SetItem ( 410 ) ( SetItem ( 3386 ) ( SetItem ( 1338 ) ( SetItem ( 3771 ) ( SetItem ( 667 ) ( SetItem ( 2779 ) ( SetItem ( 3707 ) ( SetItem ( 1019 ) ( SetItem ( 1851 ) ( SetItem ( 1883 ) ( SetItem ( 2267 ) ( SetItem ( 1243 ) ( SetItem ( 4507 ) ( SetItem ( 2459 ) ( SetItem ( 507 ) SetItem ( 2331 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - (S => (S +Int ((N *Int (N +Int 1)) /Int 2))) - : 0 - : (N => 0) - : 334 - : 2123244496 - : .WordStack - - - 1539 - - - GAS_AMT:Int => GAS_AMT -Int (N *Int 178) - - ... - - ... - - ... - - ... - - - requires 0 =Int N *Int 178 - - -endmodule diff --git a/tests/specs/examples/sum-to-n-spec.k b/tests/specs/examples/sum-to-n-spec.k deleted file mode 100644 index 21b945af6d..0000000000 --- a/tests/specs/examples/sum-to-n-spec.k +++ /dev/null @@ -1,73 +0,0 @@ -requires "asm.md" -requires "lemmas/lemmas.k" - -module VERIFICATION - imports EVM-ASSEMBLY - imports LEMMAS - - rule #sizeWordStack ( WS , N:Int ) - => N +Int #sizeWordStack ( WS , 0 ) - requires N =/=K 0 [simplification] - - rule bool2Word(A) ==K 0 => notBool(A) [simplification] - - rule chop(I) => I requires #rangeUInt(256, I) [simplification] - - rule 0 <=Int #sizeWordStack ( _ , _ ) => true [simplification, smt-lemma] - - syntax Bytes ::= "sumToN" [macro] - // ------------------------------------- - rule sumToN - => #asmOpCodes(PUSH(1, 0) ; SWAP(1) // s = 0 ; n = N - ; JUMPDEST // label:loop - ; DUP(1) ; ISZERO ; PUSH(1, 20) ; JUMPI // if n == 0, jump to end - ; DUP(1) ; SWAP(2) ; ADD // s = s + n - ; SWAP(1) ; PUSH(1, 1) ; SWAP(1) ; SUB // n = n - 1 - ; PUSH(1, 3) ; JUMP // jump to loop - ; JUMPDEST // label:end - ; .OpCodes - ) -endmodule - -module SUM-TO-N-SPEC - imports VERIFICATION - - claim #execute ... - NORMAL - ISTANBUL - true - .List - 0 - .Bytes - _ - sumToN - #computeValidJumpDests(sumToN) - 0 => 21 - N : WS => 0 : N *Int (N +Int 1) /Int 2 : WS - G => G -Int (52 *Int N +Int 27) - requires N >=Int 0 - andBool N <=Int 340282366920938463463374607431768211455 - andBool #sizeWordStack(WS) =Int 52 *Int N +Int 27 - - claim #execute ... - NORMAL - ISTANBUL - true - .List - 0 - .Bytes - _ - sumToN - #computeValidJumpDests(sumToN) - 3 => 21 - G => G -Int (52 *Int I +Int 21) - I : S : WS - => 0 : S +Int I *Int (I +Int 1) /Int 2 : WS - requires I >=Int 0 - andBool S >=Int 0 - andBool S +Int I *Int (I +Int 1) /Int 2 =Int 52 *Int I +Int 21 - -endmodule diff --git a/tests/specs/functional/abi-spec.k b/tests/specs/functional/abi-spec.k deleted file mode 100644 index 4b4d84bd5c..0000000000 --- a/tests/specs/functional/abi-spec.k +++ /dev/null @@ -1,42 +0,0 @@ -requires "abi.md" - -module VERIFICATION - imports EVM-ABI - - syntax Step ::= Bool | Bytes - // ------------------------------ - - syntax KItem ::= runLemma ( Step ) [symbol(runLemma)] - | doneLemma( Step ) - // -------------------------------------- - rule runLemma( T ) => doneLemma( T ) ... - -endmodule - -module ABI-SPEC - imports VERIFICATION - - // EVM Type helper - // --------------- - - // checking the function evaluation that went wrong in LLVM (issue booster-558) - claim [isStaticType-fix-2371]: - runLemma ( #isStaticType( #bytes(b"\xe6\xe5/\xdd") ) ) => doneLemma ( false ) ... - - claim [isStaticType-bytes-false]: - runLemma ( #isStaticType( #bytes(_) ) ) => doneLemma ( false ) ... - - // checking the resulting #encodeArgs behaviour - claim [encodeArgs-2371]: - runLemma ( #encodeArgs(#bytes(b"test")) ) - => - doneLemma ( - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 " // 32 (ASCII ' ', padded to 32 bytes) - +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04" // 4 (length "test") padded to 32 bytes - +Bytes b"test" // the actual byte payload - +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" // ...padded to 32 bytes - ) - ... - - -endmodule diff --git a/tests/specs/functional/evm-int-simplifications-spec.k b/tests/specs/functional/evm-int-simplifications-spec.k deleted file mode 100644 index 70a899f351..0000000000 --- a/tests/specs/functional/evm-int-simplifications-spec.k +++ /dev/null @@ -1,32 +0,0 @@ -requires "edsl.md" -requires "lemmas/lemmas.k" - -module VERIFICATION - imports EDSL - imports LEMMAS - - syntax StepSort ::= Map | Bytes | Int | Bool - // -------------------------------------------- - - syntax KItem ::= runLemma ( StepSort ) [symbol(runLemma)] - | doneLemma( StepSort ) - // -------------------------------------- - rule runLemma( T ) => doneLemma( T ) - -endmodule - -module EVM-INT-SIMPLIFICATIONS-SPEC - imports VERIFICATION - - // up/Int - // ------ - - claim [upInt-01]: runLemma ( ((X up/Int Y) *Int Y) doneLemma ( true ) ... - requires 0 runLemma ( ((X up/Int Y) *Int Y) doneLemma ( false ) ...
- requires 0 runLemma(S) => doneLemma(S) ...
- - syntax Step ::= Bool | Int | Gas - // -------------------------------- - -endmodule - -module INFINITE-GAS-SPEC - imports VERIFICATION - - // Gas simplifications - // ------------------- - - claim [gas.arith.0]: runLemma(#if B #then (VGas -Int Csstore(ISTANBUL, V1, V2, V3)) +Int -435 #else (VGas -Int Csstore(ISTANBUL, V1, V2, V3)) +Int -4342 #fi) - => doneLemma((VGas -Int Csstore(ISTANBUL, V1, V2, V3)) +Int #if B #then -435 #else -4342 #fi) - ... - - - claim [gas.arith.1]: runLemma((VGas +Int -3844) -Int ((VGas -Int ((VGas +Int -4544) /Int 64)) +Int -3844)) => doneLemma((VGas +Int -4544) /Int 64) ... - - claim [gas.arith.2]: runLemma((VGas -Int #allBut64th(VGas +Int -2732)) +Int #allBut64th(VGas +Int -2732)) => doneLemma(VGas) ... - - claim [gas.arith.3]: runLemma(((VGas -Int #allBut64th(VGas +Int -9487)) +Int -9487) +Int #allBut64th(VGas +Int -9487)) => doneLemma(VGas +Int -9487) ... - - claim [gas.arith.4]: runLemma(((VGas -Int (#allBut64th(VGas +Int -2655) +Int 700)) +Int #allBut64th(VGas +Int -2655)) +Int -7244) => doneLemma(VGas +Int -7944) ... - - claim [gas.arith.5]: runLemma(X +Int (0 -Int ABI_wad)) => doneLemma(X -Int ABI_wad) ... - - claim [gas.arith.6]: runLemma(#memoryUsageUpdate(#memoryUsageUpdate(MEMORYUSED_CELL, 0, 32), 32, 32)) => doneLemma(#memoryUsageUpdate(MEMORYUSED_CELL, 32, 32)) ... - requires #rangeUInt(256, MEMORYUSED_CELL) - - // Infinite Gas simplifications - // ---------------------------- - - claim [gas.inf.1]: runLemma(#gas(8) -Gas 3) => doneLemma(#gas(5)) ... - - claim [gas.inf.2]: runLemma(#gas(G) -Gas #gas(G')) => doneLemma(#gas(G -Int G')) ... - - claim [gas.inf.3]: runLemma(#gas((((((VGas +Int -1148) -Int G1) +Int -866) -Int G2) +Int -4337))) => doneLemma(#gas(((VGas -Int G1) -Int G2) +Int -6351)) ... - - claim [gas.inf.4]: runLemma(#gas((((VGas +Int -1259) -Int Csstore(ISTANBUL, 1, 1, Junk_0)) +Int -4339))) => doneLemma(#gas((VGas -Int Csstore(ISTANBUL, 1, 1, Junk_0)) +Int -5598)) ... - - claim [gas.inf.5]: runLemma(#gas(G) +Gas (#allBut64th((VGas -Int Csstore(ISTANBUL, V1, V2, V3)) +Int -3232) +Int -3232)) => doneLemma(#gas(G +Int (#allBut64th((VGas -Int Csstore(ISTANBUL, V1, V2, V3)) +Int -3232) +Int -3232))) ... - claim [gas.inf.6]: runLemma(#gas(G) +Gas ((#allBut64th(VGas -Int Csstore(ISTANBUL, V1, V2, V3)) -Int Csstore(ISTANBUL, V1', V2', V3')) +Int -3232)) => doneLemma(#gas(G +Int ((#allBut64th(VGas -Int Csstore(ISTANBUL, V1, V2, V3)) -Int Csstore(ISTANBUL, V1', V2', V3')) +Int -3232))) ... - - claim [gas.inf.7]: runLemma(#gas(G) -Gas Cmem(SCHED, #memoryUsageUpdate(MU, W0, 32))) => doneLemma(#gas(G -Int Cmem(SCHED, #memoryUsageUpdate(MU, W0, 32)))) ... - requires #rangeUInt(256, MU) andBool #rangeUInt(256, W0) - - claim [gas.inf.8]: runLemma(#gas(G) -Gas Gverylow < SCHED >) => doneLemma(#gas(G -Int Gverylow < SCHED >)) ... - - claim [gas.inf.9]: runLemma(#gas(G) -Gas 3 *Int (DATA_LEN up/Int 32)) => doneLemma(#gas(G -Int 3 *Int (DATA_LEN up/Int 32))) ... requires 0 <=Int DATA_LEN andBool DATA_LEN runLemma (#gas(-271 -Int Cmem(ISTANBUL, #memoryUsageUpdate(5, 160, DATA_LEN))) -Gas ((3 *Int (DATA_LEN up/Int 32) +Int 3))) - => doneLemma(#gas(-271 -Int Cmem(ISTANBUL, #memoryUsageUpdate(5, 160, DATA_LEN)) -Int (3 *Int (DATA_LEN up/Int 32) +Int 3))) ...
- requires 0 <=Int DATA_LEN andBool DATA_LEN runLemma( #gas( -271 -Int CMEM -Int 3 *Int ( DATA_LEN up/Int 32 ) -Int CMEM' +Int CMEM -Int Cmem ( ISTANBUL , #memoryUsageUpdate ( 5 , ( DATA_LEN +Int 31 ) /Int 32 *Int 32 +Int 160 , 32 ) ) +Int CMEM' +Int -122)) - => doneLemma( #gas( -271 -Int 3 *Int ( DATA_LEN up/Int 32 ) -Int Cmem ( ISTANBUL , #memoryUsageUpdate ( 5 , ( DATA_LEN +Int 31 ) /Int 32 *Int 32 +Int 160 , 32 ) ) +Int -122)) ...
- - claim [gas.inf.12]: runLemma( #gas(VGAS +Int -6113) +Gas Cgascap(ISTANBUL, VGAS +Int -5413, VGAS +Int -5413, 700)) - => doneLemma(#gas((VGAS +Int Cgascap(ISTANBUL, VGAS +Int -5413, VGAS +Int -5413, 700)) +Int -6113)) ... - - claim [gas.inf.13]: runLemma( #gas(VGAS +Int -6113) +Gas Cgascap(ISTANBUL, #gas(VGAS +Int -5413), #gas(VGAS +Int -5413), 700)) - => doneLemma(#gas((VGAS +Int Cgascap(ISTANBUL, VGAS +Int -5413, VGAS +Int -5413, 700)) +Int -6113)) ... - - claim [gas.inf.14]: runLemma( Cgascap(ISTANBUL, #gas(VGas +Int -2924), #gas(VGas +Int -2924), Cextra(ISTANBUL, ISEMPTY, VALUE, ISWARM)) ) - => doneLemma( #gas(Cgascap(ISTANBUL, (VGas +Int -2924), (VGas +Int -2924), Cextra(ISTANBUL, ISEMPTY, VALUE, ISWARM))) ) ... - - // Infinite Gas comparisons - // ------------------------ - - claim [gas.comp.1]: runLemma(#gas(_) doneLemma(false) ... - claim [gas.comp.2]: runLemma(#gas(_) <=Gas 11 ) => doneLemma(false) ... - claim [gas.comp.3]: runLemma(11 doneLemma(true) ... - claim [gas.comp.4]: runLemma(11 <=Gas #gas(_)) => doneLemma(true) ... - - claim [gas.comp.5]: runLemma(#gas(_) doneLemma(false) ... - - claim [gas.comp.6]: runLemma(#gas(_) doneLemma(false) ... requires I1 <=Int pow256 andBool I2 <=Int pow256 andBool I3 =/=Int 0 andBool I3 <=Int pow256 andBool I4 <=Int pow256 - - claim [gas.comp.7]: runLemma(4822 doneLemma(true) ... - - claim [gas.comp.8]: runLemma(3 doneLemma(true) ... - claim [gas.comp.9]: runLemma(2 doneLemma(true ) ... - - claim [gas.comp.10]: runLemma(#gas(_G) -Gas Csstore(_, _, _, _) doneLemma(false) ... - claim [gas.comp.11]: runLemma(minGas(#gas(_G), #gas(_G'')) +Gas -2522 doneLemma(false) ... - - claim [gas.comp.12]: runLemma(#gas(_G) doneLemma(false) ... - claim [gas.comp.13]: runLemma(#gas(_G' +Int 700) <=Gas #gas(_G)) => doneLemma(true) ... - - claim [gas.comp.14]: runLemma(#if _:Int ==Int 0 #then #gas(VGas -Int Csstore(_, _, _,_)) #else #gas(VGas +Int -344) #fi doneLemma(false) ... - claim [gas.comp.15]: runLemma(8 <=Gas #if _:Int ==Int 0 #then #gas(VGas -Int Csstore(_, _, _,_)) #else #gas(VGas +Int -344) #fi) => doneLemma(true) ... - - claim [gas.comp.16]: runLemma(#if _:Int ==Int 0 #then #gas(VGas -Int Csstore(_, _, _,_)) #else #gas(VGas +Int -344) #fi doneLemma(false) ... - claim [gas.comp.17]: runLemma(minGas(#if _ #then #gas(_) #else #gas(_) #fi, #gas(_)) <=Gas #if _:Int ==Int 0 #then #gas(VGas -Int Csstore(_, _, _,_)) #else #gas(VGas +Int -344) #fi) => doneLemma(true) ... - - claim [Csstore-1]: runLemma(9223372036854696114 -Int Csstore(LONDON, _, _, _) doneLemma(false) ... - claim [Csstore-2]: runLemma(8 <=Int 9223372036854763220 -Int Csstore(LONDON, _, _, _)) => doneLemma(true) ... - - claim [gas.comp.18]: runLemma(#allBut64th(#gas(_G)) doneLemma(false) ... - - claim [gas.comp.19]: runLemma(Gverylow < _ > <=Gas #gas(_)) => doneLemma(true) ... - - claim [gas.comp.20]: runLemma(Gexp < SCHED > +Int Gexpbyte < SCHED > *Int ( log2Int ( W1 ) /Int 8 +Int 1 ) <=Gas #gas(_)) => doneLemma(true) ... requires 0 runLemma(#gas(_) +Int Gexpbyte < SCHED > *Int ( log2Int ( W1 ) /Int 8 +Int 1 )) => doneLemma(false) ...
requires 0 runLemma(#gas(_) doneLemma(false) ...
requires 0 <=Int DATA_LEN andBool DATA_LEN runLemma(#gas(_) doneLemma(false) ...
requires 0 <=Int DATA_LEN andBool DATA_LEN runLemma(#gas(_) doneLemma(false) ...
requires 0 <=Int DATA_LEN andBool DATA_LEN runLemma(0 <=Int 3 *Int (DATA_LEN up/Int 32)) => doneLemma(true) ...
requires 0 <=Int DATA_LEN andBool DATA_LEN runLemma(3 *Int (DATA_LEN up/Int 32) doneLemma(true) ...
requires 0 <=Int DATA_LEN andBool DATA_LEN runLemma(#gas ( _ ) doneLemma(false) ...
requires CONTRACT_ID =/=Int 1 andBool #rangeAddress(CONTRACT_ID) - claim [gas.comp.28]: runLemma(Csload(_ , _) <=Gas #gas ( _) ) => doneLemma(true) ... requires CONTRACT_ID =/=Int 1 andBool #rangeAddress(CONTRACT_ID) - - claim [gas.comp.29]: runLemma(Cgascap(ISTANBUL, #gas(_), #gas(_), 700) doneLemma(false) ... - claim [gas.comp.30]: runLemma(0 <=Gas Cgascap(ISTANBUL, #gas(VGAS +Int -5413), #gas(VGAS +Int -5413), 700)) => doneLemma(true) ... - -endmodule diff --git a/tests/specs/functional/int-simplifications-spec.k b/tests/specs/functional/int-simplifications-spec.k deleted file mode 100644 index 9920319bce..0000000000 --- a/tests/specs/functional/int-simplifications-spec.k +++ /dev/null @@ -1,39 +0,0 @@ -requires "edsl.md" -requires "lemmas/lemmas.k" - -module VERIFICATION - imports EDSL - imports LEMMAS - - syntax StepSort ::= Map | Bytes | Int | Bool - // -------------------------------------------- - - syntax KItem ::= runLemma ( StepSort ) [symbol(runLemma)] - | doneLemma( StepSort ) - // -------------------------------------- - rule runLemma( T ) => doneLemma( T ) - -endmodule - -module INT-SIMPLIFICATIONS-SPEC - imports VERIFICATION - - // minInt/maxInt - - claim [minInt-maxInt-01]: - runLemma ( minInt(A, _B) doneLemma ( true ) ... - requires A runLemma ( minInt(E +Int A, E +Int _B) doneLemma ( true ) ...
- requires A runLemma ( minInt(_A, B) <=Int maxInt(_C, D) ) => doneLemma ( true ) ...
- requires B <=Int D - - claim [minInt-maxInt-04]: - runLemma ( minInt(_A +Int E, B +Int E) <=Int maxInt(_C +Int F, D +Int F) ) => doneLemma ( true ) ... - requires B <=Int D andBool E <=Int F - -endmodule diff --git a/tests/specs/functional/lemmas-no-smt-spec.k b/tests/specs/functional/lemmas-no-smt-spec.k deleted file mode 100644 index e6ce200157..0000000000 --- a/tests/specs/functional/lemmas-no-smt-spec.k +++ /dev/null @@ -1,44 +0,0 @@ -requires "lemmas/lemmas.k" - -module VERIFICATION - imports LEMMAS - - syntax StepSort ::= Int | Bool - // ------------------------------ - - syntax KItem ::= runLemma ( StepSort ) [symbol(runLemma)] - | doneLemma( StepSort ) - // -------------------------------------- - rule runLemma( T ) => doneLemma( T ) ... - -endmodule - -module LEMMAS-NO-SMT-SPEC - imports VERIFICATION - - // Arithmetic simplification - // ------------------------- - - claim runLemma ( 5 +Int X ) => doneLemma ( X +Int 5 ) ... - claim runLemma ( X -Int 5 ) => doneLemma ( X +Int (0 -Int 5) ) ... - claim runLemma ( (X +Int 3) +Int 5 ) => doneLemma ( X +Int 8 ) ... - claim runLemma ( 3 +Int (X +Int 5) ) => doneLemma ( X +Int 8 ) ... - claim runLemma ( 5 -Int (X +Int 3) ) => doneLemma ( 2 -Int X ) ... - claim runLemma ( 5 +Int (3 +Int X) ) => doneLemma ( 8 +Int X ) ... - claim runLemma ( 5 +Int (3 -Int X) ) => doneLemma ( 8 -Int X ) ... - claim runLemma ( (5 -Int X) +Int 3 ) => doneLemma ( 8 -Int X ) ... - claim runLemma ( 5 -Int (3 +Int X) ) => doneLemma ( 2 -Int X ) ... - claim runLemma ( 5 -Int (3 -Int X) ) => doneLemma ( 2 +Int X ) ... - claim runLemma ( (X -Int 5) -Int 3 ) => doneLemma ( X -Int 8 ) ... - claim runLemma ( 5 &Int (3 &Int X) ) => doneLemma ( 1 &Int X ) ... - - // Boolean simplification - // ---------------------- - - claim runLemma ( (B ==Bool false) ==Bool false ) => doneLemma ( B ) ... - - // Awaiting Haskell backend updates - // claim runLemma ( bool2Word( B:Bool ) ==Int 1 ) => doneLemma ( B ==K true ) ... - // claim runLemma ( 1 ==Int bool2Word( B:Bool ) ) => doneLemma ( B ==K true ) ... - -endmodule diff --git a/tests/specs/functional/lemmas-spec.k b/tests/specs/functional/lemmas-spec.k deleted file mode 100644 index 6c13d1515e..0000000000 --- a/tests/specs/functional/lemmas-spec.k +++ /dev/null @@ -1,704 +0,0 @@ -requires "edsl.md" -requires "lemmas/lemmas.k" - -module VERIFICATION - imports EDSL - imports LEMMAS - - syntax StepSort ::= Map | Bytes | Int | Bool - // -------------------------------------------- - - syntax KItem ::= runLemma ( StepSort ) [symbol(runLemma)] - | doneLemma( StepSort ) - // -------------------------------------- - rule runLemma( T ) => doneLemma( T ) - -endmodule - -module LEMMAS-SPEC - imports VERIFICATION - - // bool2Word - // --------- - - claim runLemma ( bool2Word((UINT8 ==K 0) ==K false) ) => doneLemma ( UINT8 ) ... requires #rangeBool(UINT8) - - // sizeBytes - // ------------- - - claim runLemma(lengthBytes(#padToWidth(32, #asByteStack(#hashedLocation("Solidity", 2, OWNER .IntList))))) => doneLemma(32) ... requires #rangeUInt(256, OWNER) - - claim runLemma(lengthBytes(#buf(X, 0) +Bytes #padRightToWidth(Y:Int, B:Bytes))) => doneLemma( X +Int Y ) ... - requires lengthBytes(B) runLemma(#isPrecompiledAccount(#newAddr(TESTER_ACCT, 1), ISTANBUL)) => doneLemma(false) ...
requires #rangeAddress(TESTER_ACCT) - - // Arithmetic - // ---------- - - claim runLemma(#rangeUInt(256, #lookup(M, KX) -Int #lookup(M, KY))) => doneLemma(true) ... - requires #rangeUInt(256, X) andBool X ==Int #lookup(M, KX) - andBool #rangeUInt(256, Y) andBool Y ==Int #lookup(M, KY) - andBool #rangeUInt(256, Z) andBool Z ==Int #lookup(M, _KZ) - andBool #rangeUInt(256, (X -Int Y) -Int Z) - - claim [address-reprojection]: runLemma(((maxUInt160 &Int ((368263281805664599098893944405654396525700029268 |Int (notMaxUInt160 &Int X:Int)) modInt pow256)) modInt pow160)) - => doneLemma(368263281805664599098893944405654396525700029268) ... - requires #rangeUInt(256, X) - - claim [address-reprojection-1]: runLemma(0 <=Int (368263281805664599098893944405654396525700029268 |Int (notMaxUInt160 &Int X:Int))) - => doneLemma(true) ... - requires #rangeUInt(256, X) - - claim [address-reprojection-2]: runLemma(0 <=Int (notMaxUInt160 &Int X:Int)) - => doneLemma(true) ... - requires #rangeUInt(256, X) - - claim [address-reprojection-4]: runLemma((368263281805664599098893944405654396525700029268 |Int (notMaxUInt160 &Int X:Int)) doneLemma(true) ... - requires #rangeUInt(256, X) - - claim [address-reprojection-5]: runLemma((notMaxUInt160 &Int X:Int) doneLemma(true) ... - requires #rangeUInt(256, X) - - claim [address-reprojection-6]: runLemma(maxUInt160 &Int (368263281805664599098893944405654396525700029268 |Int (notMaxUInt160 &Int X:Int))) - => doneLemma(368263281805664599098893944405654396525700029268) ... - requires #rangeUInt(256, X) - - claim [address-insertion-1]: runLemma(368263281805664599098893944405654396525700029268 |Int (notMaxUInt160 &Int #lookup(ACCT_STORAGE:Map, 8))) - => doneLemma(368263281805664599098893944405654396525700029268) ... - requires #lookup(ACCT_STORAGE, 8) runLemma ( - ( ( ( ( ( X +Int X ) -Int Y ) -Int ( X -Int Y ) ) -Int Y ) -Int ( X -Int Y ) ) - ) => doneLemma ( - 0 - ) ...
- - claim [cancellation-02]: - runLemma ( - ( ( A +Int ( ( B -Int A ) +Int B ) ) -Int ( B +Int B ) ) - ) => doneLemma ( - 0 - ) ... - - claim [buf-shift]: - runLemma ( - #buf ( 20, X < doneLemma ( - #buf ( 18 , X:Int ) +Bytes b"\x00\x00" - ) ... - requires 0 <=Int X andBool X runLemma ( - ( ( 20 -Int ( 10 +Int X:Int ) ) -Int 5 ) +Int 3 <=Int 7 - ) => - doneLemma ( - 1 <=Int X - ) ... - - - claim [comp-norm-02]: - runLemma ( - ( ( 20 -Int ( 10 +Int X:Int ) ) -Int 5 ) +Int 3 - doneLemma ( - 1 - - claim [comp-norm-03]: - runLemma ( - ( ( 20 -Int ( 10 +Int X:Int ) ) -Int 5 ) +Int 3 >Int 7 - ) => - doneLemma ( - 1 >Int X - ) ... - - - claim [comp-norm-04]: - runLemma ( - ( ( 20 -Int ( 10 +Int X:Int ) ) -Int 5 ) +Int 3 >=Int 7 - ) => - doneLemma ( - 1 >=Int X - ) ... - - - - // Sets - // ---- - - claim [set-union-01]: - runLemma ( - notBool ( ( ((((S:Set |Set SetItem(X)) |Set SetItem (X)) |Set SetItem(Y)) |Set SetItem(X)) - ==K - ((S:Set |Set SetItem(X)) |Set SetItem (Y)) - ) ==Bool false - ) ==Bool true - ) => - doneLemma ( - true - ) ... - - requires X =/=K Y - - - // Buffer write simplifications - // ---------------------------- - - // claim runLemma ( M [ L := .Bytes ] [ N := WS:Bytes ] ) => doneLemma ( M [ N := WS ] ) ... requires L <=Int N - // claim runLemma ( M [ L := WS:Bytes ] [ N := .Bytes ] ) => doneLemma ( M [ L := WS ] ) ... requires N <=Int L - // claim runLemma ( M [ 32 := (0 : 1 : 2 : .Bytes) ] [ 32 := (3 : 4 : 5 : .Bytes) ] ) => doneLemma ( M [ 32 := (3 : 4 : 5 : .Bytes) ] ) ... - - claim runLemma ( M:Map [ I1 <- 1 ] [ I2 <- 2 ] ) => doneLemma ( M [ I1 <- 1 ] [ I2 <- 2 ] ) ... requires I1 runLemma ( M:Map [ I1 <- 1 ] [ I2 <- 2 ] ) => doneLemma ( M [ I2 <- 2 ] [ I1 <- 1 ] ) ... requires I1 >Int I2 - claim runLemma ( M:Map [ I1 <- 1 ] [ I2 <- 2 ] ) => doneLemma ( M [ I1 <- 2 ] ) ... requires I1 ==Int I2 - claim runLemma ( M:Map [ I1 <- 1 ] [ I2 <- 2 ] ) => doneLemma ( M [ I2 <- 2 ] ) ... requires I1 ==Int I2 - - claim runLemma( M:Bytes [ 32 := BA1 ] [ 32 := BA2 ] ) => doneLemma(M [ 32 := BA2 ] ) ... requires lengthBytes(BA1) <=Int lengthBytes(BA2) - claim runLemma( M:Bytes [ 32 := BA1 ] [ 32 := #padToWidth(32, #asByteStack(#hashedLocation("Solidity", 2, OWNER))) ] ) => doneLemma(M [ 32 := #padToWidth(32, #asByteStack(#hashedLocation("Solidity", 2, OWNER))) ] ) ... requires lengthBytes(BA1) ==Int 32 andBool #rangeUInt(256, OWNER) - - // Memory write past the end of the buffer - claim [write-past-end]: runLemma ( #buf(160, A) [ 160 := #buf(32, B) ] [ 192 := #buf(32, C) ] [ 224 := #buf(32, D) ] [ 256 := #buf(32, E) ] ) - => doneLemma ( #buf(160, A) +Bytes #buf(32, B) +Bytes #buf(32, C) +Bytes #buf(32, D) +Bytes #buf(32, E) ) ... - - // #lookup simplifications - // ----------------------- - - claim runLemma ( #lookupMemory(( KEY |-> 33) (_KEY' |-> 728) (_KEY'' |-> (pow256 +Int 5)) (_KEY''' |-> "hello"), KEY) ) => doneLemma ( 33 ) ... - claim runLemma ( #lookupMemory((_KEY |-> 33) ( KEY' |-> 728) (_KEY'' |-> (pow256 +Int 5)) (_KEY''' |-> "hello"), KEY') ) => doneLemma ( 216 ) ... - claim runLemma ( #lookupMemory((_KEY |-> 33) (_KEY' |-> 728) ( KEY'' |-> (pow256 +Int 5)) (_KEY''' |-> "hello"), KEY'') ) => doneLemma ( 5 ) ... - claim runLemma ( #lookupMemory((_KEY |-> 33) (_KEY' |-> 728) (_KEY'' |-> (pow256 +Int 5)) ( KEY''' |-> "hello"), KEY''') ) => doneLemma ( 0 ) ... - //TODO Haskell limitation? https://github.com/runtimeverification/haskell-backend/issues/1948 - //claim runLemma ( #lookupMemory((KEY |-> 33), KEY') ) => doneLemma ( 0 ) ... requires notBool KEY' in_keys(KEY |-> 33) - - claim runLemma ( #lookup(( KEY |-> 33) (_KEY' |-> 728) (_KEY'' |-> (pow256 +Int 5)) (_KEY''' |-> "hello"), KEY) ) => doneLemma ( 33 ) ... - claim runLemma ( #lookup((_KEY |-> 33) ( KEY' |-> 728) (_KEY'' |-> (pow256 +Int 5)) (_KEY''' |-> "hello"), KEY') ) => doneLemma ( 728 ) ... - claim runLemma ( #lookup((_KEY |-> 33) (_KEY' |-> 728) ( KEY'' |-> (pow256 +Int 5)) (_KEY''' |-> "hello"), KEY'') ) => doneLemma ( 5 ) ... - claim runLemma ( #lookup((_KEY |-> 33) (_KEY' |-> 728) (_KEY'' |-> (pow256 +Int 5)) ( KEY''' |-> "hello"), KEY''') ) => doneLemma ( 0 ) ... - //claim runLemma ( #lookup((KEY |-> 33), KEY') ) => doneLemma ( 0 ) ... requires notBool KEY' in_keys(KEY |-> 33) - - claim runLemma ( #lookup( _M:Map [ KEY <- 33 ] [ KEY' <- 728 ] [ KEY'' <- (pow256 +Int 5) ] [ KEY''' <- "hello" ] , KEY ) ) => doneLemma ( 33 ) ... requires KEY =/=Int KEY' andBool KEY =/=Int KEY'' andBool KEY =/=Int KEY''' andBool KEY' =/=Int KEY'' andBool KEY' =/=Int KEY''' andBool KEY'' =/=Int KEY''' - claim runLemma ( #lookup( _M:Map [ KEY <- 33 ] [ KEY' <- 728 ] [ KEY'' <- (pow256 +Int 5) ] [ KEY''' <- "hello" ] , KEY' ) ) => doneLemma ( 728 ) ... requires KEY =/=Int KEY' andBool KEY =/=Int KEY'' andBool KEY =/=Int KEY''' andBool KEY' =/=Int KEY'' andBool KEY' =/=Int KEY''' andBool KEY'' =/=Int KEY''' - claim runLemma ( #lookup( _M:Map [ KEY <- 33 ] [ KEY' <- 728 ] [ KEY'' <- (pow256 +Int 5) ] [ KEY''' <- "hello" ] , KEY'' ) ) => doneLemma ( 5 ) ... requires KEY =/=Int KEY' andBool KEY =/=Int KEY'' andBool KEY =/=Int KEY''' andBool KEY' =/=Int KEY'' andBool KEY' =/=Int KEY''' andBool KEY'' =/=Int KEY''' - claim runLemma ( #lookup( _M:Map [ KEY <- 33 ] [ KEY' <- 728 ] [ KEY'' <- (pow256 +Int 5) ] [ KEY''' <- "hello" ] , KEY''' ) ) => doneLemma ( 0 ) ... requires KEY =/=Int KEY' andBool KEY =/=Int KEY'' andBool KEY =/=Int KEY''' andBool KEY' =/=Int KEY'' andBool KEY' =/=Int KEY''' andBool KEY'' =/=Int KEY''' - - claim [lookup-key-neq]: runLemma ( #lookup( ( (3 |-> 3) (5 |-> 5) (7 |-> 7) M:Map ) [ 9 <- 9 ] [ 11 <- 11 ] [ 13 <- 13 ], KEY ) ) => doneLemma ( #lookup (M, KEY) ) ... requires 15 <=Int KEY - - // #range selection operation - // -------------------------- - - // Non-positive range - claim [range-01]: runLemma ( #range(_M, _N, 0) ) => doneLemma ( .Bytes ) ... - claim [range-02]: runLemma ( #range(_M, _N, -3) ) => doneLemma ( .Bytes ) ... - - // Range outside of previous buffer write - claim [range-03]: runLemma ( #range ( M [ 32 := _ ], 20, 4) ) => doneLemma ( #range(M, 20, 4) ) ... - claim [range-04]: runLemma ( #range ( M [ 32 := BUF:Bytes ], 48, 4) ) => doneLemma ( #range(M, 48, 4) ) ... requires lengthBytes(BUF) <=Int 12 - claim [range-05]: runLemma ( #range ( M [ 32 := _ ], 31, 1) ) => doneLemma ( #range(M, 31, 1) ) ... - claim [range-06]: runLemma ( #range ( M [ 32 := #buf(1, _) ], 33, 1) ) => doneLemma ( #range(M, 33, 1) ) ... - - // Range starting before buffer write - claim [range-07]: runLemma ( #range(M [ 32 := BUF:Bytes ] , 30 , 8) ) => doneLemma ( #range(M, 30, 2) +Bytes (#range(BUF, 0, 6)) ) ... requires lengthBytes(BUF) >=Int 6 - claim [range-08]: runLemma ( #range(M [ 32 := (0 : 1 : 2 : .Bytes) ] , 30 , 8) ) => doneLemma ( #range(M, 30, 2) +Bytes (0 : 1 : 2 : .Bytes) +Bytes #range(M, 35, 3) ) ... - claim [range-09]: runLemma ( #range(M [ 32 := #buf(2, BUF) ] , 31 , 2) ) => doneLemma ( #range(M, 31, 1) +Bytes (#range(#buf(2, BUF), 0, 1) ) ) ... - claim [range-10]: runLemma ( #range(M [ 32 := #buf(1, BUF) ] , 31 , 2) ) => doneLemma ( #range(M, 31, 1) +Bytes #buf(1, BUF) ) ... - claim [range-11]: runLemma ( #range(M [ 32 := #buf(1, BUF) ] , 31 , 3) ) => doneLemma ( #range(M, 31, 1) +Bytes #buf(1, BUF) +Bytes #range(M, 33, 1) ) ... - - // Range starting at same point as buffer write - claim [range-12]: runLemma ( #range(_M [ 32 := BUF:Bytes ] , 32 , 7) ) => doneLemma( #range( BUF, 0, 7 ) ) ... requires lengthBytes(BUF) >=Int 7 - claim [range-13]: runLemma ( #range( M [ 32 := (0 : 1 : 2 : .Bytes) ] , 32 , 7) ) => doneLemma( (0 : 1 : 2 : .Bytes) +Bytes #range(M, 35, 4) ) ... - claim [range-14]: runLemma ( #range(_M [ 32 := #buf(2, BUF) ] , 32 , 1) ) => doneLemma( #range(#buf(2, BUF), 0, 1 ) ) ... - claim [range-15]: runLemma ( #range(_M [ 32 := #buf(1, BUF) ] , 32 , 1) ) => doneLemma( #buf(1, BUF) ) ... - claim [range-16]: runLemma ( #range (M [ 32 := #buf(1, BUF) ] , 32 , 2) ) => doneLemma( #buf(1, BUF) +Bytes #range(M, 33, 1) ) ... - - // Range starting in the middle of the buffer write - claim [range-17]: runLemma ( #range(_M [ 32 := (0 : 1 : 2 : 3 : 4 : .Bytes) ] , 35 , 2) ) => doneLemma( (3 : 4 : .Bytes) ) ... - claim [range-18]: runLemma ( #range( M [ 32 := (0 : 1 : 2 : 3 : 4 : .Bytes) ] , 35 , 8) ) => doneLemma( (3 : 4 : .Bytes) +Bytes #range(M, 37, 6) ) ... - claim [range-19]: runLemma ( #range(_M [ 32 := (0 : 1 : 2 : .Bytes) ] , 33 , 1) ) => doneLemma( (1 : .Bytes) ) ... - claim [range-20]: runLemma ( #range(_M [ 32 := (0 : 1 : 2 : .Bytes) ] , 33 , 2) ) => doneLemma( (1 : 2 : .Bytes) ) ... - claim [range-21]: runLemma ( #range( M [ 32 := (0 : 1 : 2 : .Bytes) ] , 33 , 3) ) => doneLemma( (1 : 2 : .Bytes) +Bytes #range(M, 35, 1) ) ... - - claim [range-22]: runLemma ( #range ( #range ( BA:Bytes , 4 , 64 ) , 32 , 32 ) ) => doneLemma ( #range ( BA , 36 , 32 ) ) ... - - claim [range-23]: - runLemma ( #range((#buf(DATA_LEN, DATA) +Bytes _BUF), 0, DATA_LEN) ) => - doneLemma ( #range( #buf(DATA_LEN, DATA) , 0, DATA_LEN) ) ... - requires #range(0 <= DATA < (2 ^Int (DATA_LEN *Int 8))) - andBool 0 <=Int DATA_LEN - - claim [range-24]: - runLemma( #range ( #range ( b"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" , lengthBytes ( VV6__data_3c5818c8:Bytes ) +Int 1 , 31 -Int lengthBytes ( VV6__data_3c5818c8:Bytes ) ) , 32 , lengthBytes ( #range ( b"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" , lengthBytes ( VV6__data_3c5818c8:Bytes ) +Int 1 , 31 -Int lengthBytes ( VV6__data_3c5818c8:Bytes ) ) ) +Int -32 ) ) => - doneLemma( .Bytes ) ... - - claim [range-25]: - runLemma( #range ( #range ( ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00E\xb5`x" +Bytes #buf ( 32 , VV5__txOrigin_3c5818c8:Int ) ) +Bytes #buf ( 32 , VV5__txOrigin_3c5818c8:Int ) , 100 , 64 ) , 0 , 32 ) ) => - doneLemma( #buf ( 32 , VV5__txOrigin_3c5818c8:Int ) ) ... - - claim [range-26]: - runLemma ( #range ( ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00E\xb5`x" +Bytes #buf ( 32 , VV5__txOrigin_3c5818c8 ) ) +Bytes #buf ( 32 , VV5__txOrigin_3c5818c8 ) , 100 , 64 ) ) => - doneLemma( #buf ( 32 , VV5__txOrigin_3c5818c8 ) +Bytes #buf ( 32 , VV5__txOrigin_3c5818c8 ) ) ... - - - claim [range-27]: - runLemma( #range(b"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", lengthBytes ( VV6__data_3c5818c8:Bytes ) +Int 1, 31 -Int lengthBytes ( VV6__data_3c5818c8:Bytes ) ) ) => - doneLemma( .Bytes ) ... - - requires 119 runLemma( #range ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 151 -Int lengthBytes ( VV6__data_3c5818c8:Bytes ), lengthBytes ( VV6__data_3c5818c8:Bytes ) +Int lengthBytes ( #range ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 119 -Int lengthBytes ( VV6__data_3c5818c8:Bytes ), lengthBytes ( VV6__data_3c5818c8:Bytes ) +Int lengthBytes ( #range ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 87 -Int lengthBytes ( VV6__data_3c5818c8:Bytes ), lengthBytes ( VV6__data_3c5818c8:Bytes ) +Int -55 ) ) +Int -87 ) ) +Int -119 ) ) => - doneLemma( #range ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 151 -Int lengthBytes ( VV6__data_3c5818c8 ), lengthBytes ( VV6__data_3c5818c8 ) +Int -119 ) ) ... - requires 0 <=Int VV1__value_3c5818c8 - andBool VV1__value_3c5818c8:Int runLemma( #range ( #range ( ( ( b"\xc8\x8a^m\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01H" +Bytes #buf ( 32 , VV0_value_3c5818c8 ) ) ) , 4 , 64 ) , 32 , 32 ) ) => - doneLemma( #buf ( 32 , VV0_value_3c5818c8 ) ) ... - - claim [range-30]: - runLemma( - #range ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00E\xb5`x\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - [ 132 := #buf ( 32 , _VV5__txOrigin_3c5818c8:Int ) ] - [ 128 := b"I\x1c\xc7\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ] - [ 128 := b"" ] - [ 132 := b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" ] - [ 128 := b"\xe9\xe0\\B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ] - [ 164 := b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" ] - [ 160 := b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ] - [ 132 := b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ] - [ 164 := #buf ( 32 , _VV1__value_3c5818c8:Int ) ] - [ 196 := #buf ( 32 , _VV2__gasLimit_3c5818c8:Int ) ] - [ 228 := b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" ] - [ 260 := b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0" ] - [ 292 := #buf ( 32 , lengthBytes ( VV6__data_3c5818c8:Bytes ) ) ] - [ 324 := VV6__data_3c5818c8:Bytes ] , 324 , minInt ( ( notMaxUInt5 &Int lengthBytes ( VV6__data_3c5818c8:Bytes ) +Int 31 ) +Int 196 , lengthBytes ( VV6__data_3c5818c8:Bytes ) +Int 196 ) +Int -196 ) - ) - => doneLemma( VV6__data_3c5818c8 ) ... - - requires lengthBytes(VV6__data_3c5818c8:Bytes) runLemma( #range(X, S1, 32) +Bytes #range( X [ S := Y ], S:Int, Z:Int )) - => doneLemma( #range(X, S2 +Int 5, 32) +Bytes Y ) ... - - requires lengthBytes(Y) +Int 20 ==Int Z +Int 20 - andBool S1 +Int 1 ==Int S2 +Int 6 - andBool 0 runLemma( - #range ( #range ( #range ( ( ( ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xe0\\B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +Bytes _ ) +Bytes _ ) +Bytes _ ) +Bytes _ , 128 , ( notMaxUInt5 &Int lengthBytes ( X ) +Int 31 ) +Int 196 ), 0, 32 ), 0, 4 ) - ) - => doneLemma( b"\xe9\xe0\\B" ) ... - - requires 0 <=Int VV1__value_3c5818c8 - andBool VV1__value_3c5818c8:Int runLemma( - #asWord ( #range ( #range ( ( ( ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xe0\\B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +Bytes #buf ( 32 , VV1__value_3c5818c8:Int ) ) +Bytes #buf ( 32 , VV2__gasLimit_3c5818c8:Int ) +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0" ) +Bytes #buf ( 32 , lengthBytes ( VV6__data_3c5818c8:Bytes ) ) ) +Bytes VV6__data_3c5818c8:Bytes +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" , 128 , ( notMaxUInt5 &Int lengthBytes ( VV6__data_3c5818c8:Bytes ) +Int 31 ) +Int 196 ), 4, 32 ) ) - ==Int - maxUInt160 &Int #asWord ( #range ( #range ( ( ( ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xe0\\B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +Bytes #buf ( 32 , VV1__value_3c5818c8:Int ) ) +Bytes #buf ( 32 , VV2__gasLimit_3c5818c8:Int ) +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0" ) +Bytes #buf ( 32 , lengthBytes ( VV6__data_3c5818c8:Bytes ) ) ) +Bytes VV6__data_3c5818c8:Bytes +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" , 128 , ( notMaxUInt5 &Int lengthBytes ( VV6__data_3c5818c8:Bytes ) +Int 31 ) +Int 196 ), 4, 32 ) ) - ) - => doneLemma( true ) ... - - requires 0 <=Int VV1__value_3c5818c8 - andBool VV1__value_3c5818c8:Int runLemma( - #range ( ( ( ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xe0\\B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +Bytes #buf ( 32 , VV1__value_3c5818c8:Int ) ) +Bytes #buf ( 32 , VV2__gasLimit_3c5818c8:Int ) +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0" ) +Bytes #buf ( 32 , lengthBytes ( VV6__data_3c5818c8:Bytes ) ) ) +Bytes VV6__data_3c5818c8:Bytes +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" , 128 , ( notMaxUInt5 &Int lengthBytes ( VV6__data_3c5818c8:Bytes ) +Int 31 ) +Int 196 ) - ) - => doneLemma( - b"\xe9\xe0\\B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +Bytes #buf ( 32 , VV1__value_3c5818c8 ) +Bytes ( #buf ( 32 , VV2__gasLimit_3c5818c8 ) +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0" ) +Bytes #buf ( 32 , lengthBytes ( VV6__data_3c5818c8 ) ) +Bytes VV6__data_3c5818c8 +Bytes #range ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" , 0 , ( notMaxUInt5 &Int lengthBytes ( VV6__data_3c5818c8 ) +Int 31 ) -Int lengthBytes ( VV6__data_3c5818c8 ) ) - ) ... - - requires 0 <=Int VV1__value_3c5818c8 - andBool VV1__value_3c5818c8:Int runLemma( - #range ( #range ( ( ( ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +Bytes #buf ( 32 , _ ) ) +Bytes ( #range ( #buf ( 32 , _ ), 0, 8 ) ) +Bytes b"\x01" ) +Bytes ( #range ( #range ( ( ( ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xe0\\B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +Bytes #buf ( 32 , _ ) ) +Bytes #buf ( 32 , _ ) +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0" ) +Bytes #buf ( 32 , lengthBytes ( X ) ) ) +Bytes X +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" , 128 , ( notMaxUInt5 &Int lengthBytes ( X ) +Int 31 ) +Int 196 ), 196, lengthBytes ( X ) ) ) +Bytes ( #range ( b"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", lengthBytes ( X ) +Int 1, 31 -Int lengthBytes ( X ) ) ) ), 0, lengthBytes ( X ) +Int 233 ) , 64 , 32 ) - ) - => doneLemma( - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80" - ) ... - - requires lengthBytes(X:Bytes) runLemma ( #range(B:Bytes, 5 +Int S2:Int, W:Int) ) => doneLemma ( #range(#range(B, 5, lengthBytes(B) -Int 5), S2, W) ) ... - requires 0 <=Int S2 andBool (5 +Int S2 <=Int lengthBytes(B)) - andBool B ==K #buf(512, 0) - - claim [range-37]: - runLemma( _B1:Bytes [ 1 := _B2:Bytes ] [ -1 := _B3:Bytes ]) => doneLemma(.Bytes) ... - - claim [range-38]: - runLemma( #range (#buf(8, X:Int), -3, _:Int) ) => doneLemma( .Bytes ) ... - requires 0 <=Int X andBool X runLemma ( #asWord ( ( #range( #buf ( 32 , X ), 0, 28 ) ):Bytes ) ) => doneLemma ( 0 ) ... requires #rangeUInt(32, X) - - claim runLemma ( #buf( 32 , bool2Word ( B:Bool ) ) ==K #buf( 32 , 1 ) ) => doneLemma( B ==K true ) ... - claim runLemma ( #buf( 32 , I:Int ) ==K #buf( 32 , 1 ) ) => doneLemma( I ==K 1 ) ... requires #rangeUInt(256, I) - claim runLemma ( #buf( 32 , 1 ) ==K #buf( 32 , I:Int ) ) => doneLemma( I ==K 1 ) ... requires #rangeUInt(256, I) - - claim runLemma ( #bufStrict( #ceil32(LEN) -Int LEN, 0 ) ) => doneLemma( #buf( #ceil32(LEN) -Int LEN, 0 ) ) ... requires 0 <=Int LEN - - claim [bufstrict-simplify]: - runLemma ( #bufStrict(32, #getValue(#int256(X))) ) => doneLemma ( #buf(32, chop(X)) ) ... requires #rangeSInt(256, X) - - claim runLemma( #padToWidth(32, #asByteStack(#hashedLocation("Solidity", 2, OWNER .IntList))) ) => doneLemma(#buf(32, #hashedLocation("Solidity", 2, OWNER .IntList))) ... requires #rangeUInt(256, OWNER) - claim runLemma( #padToWidth(32, #asByteStack(#hashedLocation("Solidity", 2, OWNER SPENDER .IntList))) ) => doneLemma(#buf(32, #hashedLocation("Solidity", 2, OWNER SPENDER .IntList))) ... requires #rangeUInt(256, OWNER) andBool #rangeUInt(256, SPENDER) - - claim runLemma( #buf(32, X +Int Y) +Bytes #buf(lengthBytes(B), 0) +Bytes #buf(32 +Int Y -Int Y, #asWord(B))) => doneLemma ( #buf(32, Z -Int Y) +Bytes #buf(32, ((3 *Int Y) -Int (2 *Int Y)) -Int Y) +Bytes B ) ... - requires lengthBytes(B) <=Int 4 - andBool 0 <=Int X andBool 0 <=Int Y andBool Y <=Int Z - andBool X runLemma ( chop( #lookup(M, KEY) ) ) => doneLemma( #lookup(M, KEY) ) ... - claim runLemma ( chop( bool2Word(B:Bool) ) ) => doneLemma( bool2Word(B) ) ... - - claim [chop-chop]: runLemma ( chop( chop ( X ) ) ) => doneLemma( chop ( X ) ) ... - - claim [chop-range-inferred]: runLemma(X doneLemma(X - requires #rangeUInt(256, X) andBool #rangeUInt(256, Y) andBool Y <=Int maxUInt256 /Int X - - claim [chop-notMaxUInt5]: - runLemma ( - ( notBool ( notBool ( chop ( ( chop ( ( ( notMaxUInt5 &Int ( ( notMaxUInt5 &Int ( lengthBytes ( B:Bytes ) +Int maxUInt5 ) ) +Int 95 ) ) +Int 128 ) ) +Int ( notMaxUInt5 &Int ( ( notMaxUInt5 &Int ( lengthBytes ( B:Bytes ) +Int maxUInt5 ) ) +Int 63 ) ) ) ) doneLemma ( - false - ) ... - requires lengthBytes(B) runLemma ( #padToWidth( 32 , #asByteStack( bool2Word ( B:Bool ) ) ) ) => doneLemma( #buf( 32 , bool2Word ( B ) ) ) ... - claim runLemma ( #padToWidth( 32 , #asByteStack( maxUInt160 &Int #newAddr(ACCT, 1) ) ) ) - => doneLemma( #buf(32, #newAddr(ACCT, 1)) ) ... - - //Required for ERC20 + solc5 + constructor call - claim runLemma ( 160 ==Int #asWord ( #buf( 4, 160 ) +Bytes ( #range( #buf( 32 , _BUF ), 0, 28 ) ) ) >>Int 224 ) - => doneLemma( true ) ... - - // buffer range simplification - // --------------------------- - claim runLemma ( #range((#buf(DATA_LEN, DATA) +Bytes _BUF), 0, DATA_LEN) ) - => doneLemma ( #range( #buf(DATA_LEN, DATA) , 0, DATA_LEN) ) ... - requires #range(0 <= DATA < (2 ^Int (DATA_LEN *Int 8))) - andBool 0 <=Int DATA_LEN - - // concatenation simplification - // ---------------------------- - - claim [bytes-reassociation]: runLemma ( ((((A +Bytes B) +Bytes C) +Bytes D) +Bytes E) +Bytes F ) - => doneLemma ( A +Bytes (B +Bytes (C +Bytes (D +Bytes (E +Bytes F)))) ) ... - - // bitwise-and identity - // -------------------- - - claim runLemma ( N &Int maxUInt256 ) => doneLemma ( N ) ... requires #rangeUInt(256, N) - claim runLemma ( maxUInt256 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(256, N) - claim runLemma ( N &Int maxUInt248 ) => doneLemma ( N ) ... requires #rangeUInt(248, N) - claim runLemma ( maxUInt248 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(248, N) - claim runLemma ( N &Int maxUInt240 ) => doneLemma ( N ) ... requires #rangeUInt(240, N) - claim runLemma ( maxUInt240 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(240, N) - claim runLemma ( N &Int maxUInt232 ) => doneLemma ( N ) ... requires #rangeUInt(232, N) - claim runLemma ( maxUInt232 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(232, N) - claim runLemma ( N &Int maxUInt224 ) => doneLemma ( N ) ... requires #rangeUInt(224, N) - claim runLemma ( maxUInt224 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(224, N) - claim runLemma ( N &Int maxUInt216 ) => doneLemma ( N ) ... requires #rangeUInt(216, N) - claim runLemma ( maxUInt216 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(216, N) - claim runLemma ( N &Int maxUInt208 ) => doneLemma ( N ) ... requires #rangeUInt(208, N) - claim runLemma ( maxUInt208 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(208, N) - claim runLemma ( N &Int maxUInt200 ) => doneLemma ( N ) ... requires #rangeUInt(200, N) - claim runLemma ( maxUInt200 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(200, N) - claim runLemma ( N &Int maxUInt192 ) => doneLemma ( N ) ... requires #rangeUInt(192, N) - claim runLemma ( maxUInt192 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(192, N) - claim runLemma ( N &Int maxUInt184 ) => doneLemma ( N ) ... requires #rangeUInt(184, N) - claim runLemma ( maxUInt184 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(184, N) - claim runLemma ( N &Int maxUInt176 ) => doneLemma ( N ) ... requires #rangeUInt(176, N) - claim runLemma ( maxUInt176 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(176, N) - claim runLemma ( N &Int maxUInt168 ) => doneLemma ( N ) ... requires #rangeUInt(168, N) - claim runLemma ( maxUInt168 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(168, N) - claim runLemma ( N &Int maxUInt160 ) => doneLemma ( N ) ... requires #rangeUInt(160, N) - claim runLemma ( maxUInt160 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(160, N) - claim runLemma ( N &Int maxUInt152 ) => doneLemma ( N ) ... requires #rangeUInt(152, N) - claim runLemma ( maxUInt152 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(152, N) - claim runLemma ( N &Int maxUInt144 ) => doneLemma ( N ) ... requires #rangeUInt(144, N) - claim runLemma ( maxUInt144 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(144, N) - claim runLemma ( N &Int maxUInt136 ) => doneLemma ( N ) ... requires #rangeUInt(136, N) - claim runLemma ( maxUInt136 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(136, N) - claim runLemma ( N &Int maxUInt128 ) => doneLemma ( N ) ... requires #rangeUInt(128, N) - claim runLemma ( maxUInt128 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(128, N) - claim runLemma ( N &Int maxUInt120 ) => doneLemma ( N ) ... requires #rangeUInt(120, N) - claim runLemma ( maxUInt120 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(120, N) - claim runLemma ( N &Int maxUInt112 ) => doneLemma ( N ) ... requires #rangeUInt(112, N) - claim runLemma ( maxUInt112 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(112, N) - claim runLemma ( N &Int maxUInt104 ) => doneLemma ( N ) ... requires #rangeUInt(104, N) - claim runLemma ( maxUInt104 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(104, N) - claim runLemma ( N &Int maxUInt96 ) => doneLemma ( N ) ... requires #rangeUInt(96, N) - claim runLemma ( maxUInt96 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(96, N) - claim runLemma ( N &Int maxUInt88 ) => doneLemma ( N ) ... requires #rangeUInt(88, N) - claim runLemma ( maxUInt88 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(88, N) - claim runLemma ( N &Int maxUInt80 ) => doneLemma ( N ) ... requires #rangeUInt(80, N) - claim runLemma ( maxUInt80 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(80, N) - claim runLemma ( N &Int maxUInt72 ) => doneLemma ( N ) ... requires #rangeUInt(72, N) - claim runLemma ( maxUInt72 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(72, N) - claim runLemma ( N &Int maxUInt64 ) => doneLemma ( N ) ... requires #rangeUInt(64, N) - claim runLemma ( maxUInt64 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(64, N) - claim runLemma ( N &Int maxUInt56 ) => doneLemma ( N ) ... requires #rangeUInt(56, N) - claim runLemma ( maxUInt56 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(56, N) - claim runLemma ( N &Int maxUInt48 ) => doneLemma ( N ) ... requires #rangeUInt(48, N) - claim runLemma ( maxUInt48 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(48, N) - claim runLemma ( N &Int maxUInt40 ) => doneLemma ( N ) ... requires #rangeUInt(40, N) - claim runLemma ( maxUInt40 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(40, N) - claim runLemma ( N &Int maxUInt32 ) => doneLemma ( N ) ... requires #rangeUInt(32, N) - claim runLemma ( maxUInt32 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(32, N) - claim runLemma ( N &Int maxUInt24 ) => doneLemma ( N ) ... requires #rangeUInt(24, N) - claim runLemma ( maxUInt24 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(24, N) - claim runLemma ( N &Int maxUInt16 ) => doneLemma ( N ) ... requires #rangeUInt(16, N) - claim runLemma ( maxUInt16 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(16, N) - claim runLemma ( N &Int maxUInt8 ) => doneLemma ( N ) ... requires #rangeUInt(8, N) - claim runLemma ( maxUInt8 &Int N ) => doneLemma ( N ) ... requires #rangeUInt(8, N) - - // bitwise - // ------- - - claim [bit-n005-0]: runLemma ( notMaxUInt5 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 5 , X ) - claim [bit-n008-0]: runLemma ( notMaxUInt8 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 8 , X ) - claim [bit-n016-0]: runLemma ( notMaxUInt16 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 16 , X ) - claim [bit-n032-0]: runLemma ( notMaxUInt32 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 32 , X ) - claim [bit-n064-0]: runLemma ( notMaxUInt64 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 64 , X ) - claim [bit-n096-0]: runLemma ( notMaxUInt96 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 96 , X ) - claim [bit-n128-0]: runLemma ( notMaxUInt128 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 128 , X ) - claim [bit-n160-0]: runLemma ( notMaxUInt160 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 160 , X ) - claim [bit-n192-0]: runLemma ( notMaxUInt192 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 192 , X ) - claim [bit-n208-0]: runLemma ( notMaxUInt208 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 208 , X ) - claim [bit-n224-0]: runLemma ( notMaxUInt224 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 224 , X ) - claim [bit-n240-0]: runLemma ( notMaxUInt240 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 240 , X ) - claim [bit-n248-0]: runLemma ( notMaxUInt248 &Int X ) => doneLemma( 0 ) ... requires #rangeUInt ( 248 , X ) - - claim [bit-n005-shl]: runLemma ( notMaxUInt5 &Int ( X < doneLemma( X < requires 0 <=Int X andBool X runLemma ( notMaxUInt8 &Int ( X < doneLemma( X < requires #rangeUInt ( 248 , X ) - claim [bit-n016-shl]: runLemma ( notMaxUInt16 &Int ( X < doneLemma( X < requires #rangeUInt ( 240 , X ) - claim [bit-n032-shl]: runLemma ( notMaxUInt32 &Int ( X < doneLemma( X < requires #rangeUInt ( 224 , X ) - claim [bit-n064-shl]: runLemma ( notMaxUInt64 &Int ( X < doneLemma( X < requires #rangeUInt ( 192 , X ) - claim [bit-n096-shl]: runLemma ( notMaxUInt96 &Int ( X < doneLemma( X < requires #rangeUInt ( 160 , X ) - claim [bit-n128-shl]: runLemma ( notMaxUInt128 &Int ( X < doneLemma( X < requires #rangeUInt ( 128 , X ) - claim [bit-n160-shl]: runLemma ( notMaxUInt160 &Int ( X < doneLemma( X < requires #rangeUInt ( 96 , X ) - claim [bit-n192-shl]: runLemma ( notMaxUInt192 &Int ( X < doneLemma( X < requires #rangeUInt ( 64 , X ) - claim [bit-n208-shl]: runLemma ( notMaxUInt208 &Int ( X < doneLemma( X < requires #rangeUInt ( 48 , X ) - claim [bit-n224-shl]: runLemma ( notMaxUInt224 &Int ( X < doneLemma( X < requires #rangeUInt ( 32 , X ) - claim [bit-n240-shl]: runLemma ( notMaxUInt240 &Int ( X < doneLemma( X < requires #rangeUInt ( 16 , X ) - claim [bit-n248-shl]: runLemma ( notMaxUInt248 &Int ( X < doneLemma( X < requires #rangeUInt ( 8 , X ) - - claim [bit-005-m-or-nm]: runLemma ( maxUInt5 &Int ( X |Int ( notMaxUInt5 &Int T ) ) ) => doneLemma( X ) ... requires 0 <=Int X andBool X runLemma ( maxUInt8 &Int ( X |Int ( notMaxUInt8 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 8 , X ) andBool 0 <=Int T - claim [bit-016-m-or-nm]: runLemma ( maxUInt16 &Int ( X |Int ( notMaxUInt16 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 16 , X ) andBool 0 <=Int T - claim [bit-032-m-or-nm]: runLemma ( maxUInt32 &Int ( X |Int ( notMaxUInt32 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 32 , X ) andBool 0 <=Int T - claim [bit-064-m-or-nm]: runLemma ( maxUInt64 &Int ( X |Int ( notMaxUInt64 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 64 , X ) andBool 0 <=Int T - claim [bit-096-m-or-nm]: runLemma ( maxUInt96 &Int ( X |Int ( notMaxUInt96 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 96 , X ) andBool 0 <=Int T - claim [bit-128-m-or-nm]: runLemma ( maxUInt128 &Int ( X |Int ( notMaxUInt128 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 128 , X ) andBool 0 <=Int T - claim [bit-160-m-or-nm]: runLemma ( maxUInt160 &Int ( X |Int ( notMaxUInt160 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 160 , X ) andBool 0 <=Int T - claim [bit-192-m-or-nm]: runLemma ( maxUInt192 &Int ( X |Int ( notMaxUInt192 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 192 , X ) andBool 0 <=Int T - claim [bit-208-m-or-nm]: runLemma ( maxUInt208 &Int ( X |Int ( notMaxUInt208 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 208 , X ) andBool 0 <=Int T - claim [bit-224-m-or-nm]: runLemma ( maxUInt224 &Int ( X |Int ( notMaxUInt224 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 224 , X ) andBool 0 <=Int T - claim [bit-240-m-or-nm]: runLemma ( maxUInt240 &Int ( X |Int ( notMaxUInt240 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 240 , X ) andBool 0 <=Int T - claim [bit-248-m-or-nm]: runLemma ( maxUInt248 &Int ( X |Int ( notMaxUInt248 &Int T ) ) ) => doneLemma( X ) ... requires #rangeUInt ( 248 , X ) andBool 0 <=Int T - - claim [bit-005-nm-or-m]: runLemma ( notMaxUInt5 &Int ( X |Int ( maxUInt5 &Int T ) ) ) => doneLemma( 0 ) ... requires 0 <=Int X andBool X runLemma ( notMaxUInt8 &Int ( X |Int ( maxUInt8 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 248 , X ) andBool 0 <=Int T - claim [bit-016-nm-or-m]: runLemma ( notMaxUInt16 &Int ( X |Int ( maxUInt16 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 240 , X ) andBool 0 <=Int T - claim [bit-032-nm-or-m]: runLemma ( notMaxUInt32 &Int ( X |Int ( maxUInt32 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 224 , X ) andBool 0 <=Int T - claim [bit-064-nm-or-m]: runLemma ( notMaxUInt64 &Int ( X |Int ( maxUInt64 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 192 , X ) andBool 0 <=Int T - claim [bit-096-nm-or-m]: runLemma ( notMaxUInt96 &Int ( X |Int ( maxUInt96 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 160 , X ) andBool 0 <=Int T - claim [bit-128-nm-or-m]: runLemma ( notMaxUInt128 &Int ( X |Int ( maxUInt128 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 128 , X ) andBool 0 <=Int T - claim [bit-160-nm-or-m]: runLemma ( notMaxUInt160 &Int ( X |Int ( maxUInt160 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 96 , X ) andBool 0 <=Int T - claim [bit-192-nm-or-m]: runLemma ( notMaxUInt192 &Int ( X |Int ( maxUInt192 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 64 , X ) andBool 0 <=Int T - claim [bit-208-nm-or-m]: runLemma ( notMaxUInt208 &Int ( X |Int ( maxUInt208 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 48 , X ) andBool 0 <=Int T - claim [bit-224-nm-or-m]: runLemma ( notMaxUInt224 &Int ( X |Int ( maxUInt224 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 32 , X ) andBool 0 <=Int T - claim [bit-240-nm-or-m]: runLemma ( notMaxUInt240 &Int ( X |Int ( maxUInt240 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 16 , X ) andBool 0 <=Int T - claim [bit-248-nm-or-m]: runLemma ( notMaxUInt248 &Int ( X |Int ( maxUInt248 &Int T ) ) ) => doneLemma( 0 ) ... requires #rangeUInt ( 8 , X ) andBool 0 <=Int T - - claim [bit-008-m-aW]: runLemma ( maxUInt8 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 31, 1) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-016-m-aW]: runLemma ( maxUInt16 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 30, 2) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-024-m-aW]: runLemma ( maxUInt24 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 29, 3) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-032-m-aW]: runLemma ( maxUInt32 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 28, 4) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-040-m-aW]: runLemma ( maxUInt40 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 27, 5) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-048-m-aW]: runLemma ( maxUInt48 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 26, 6) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-056-m-aW]: runLemma ( maxUInt56 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 25, 7) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-064-m-aW]: runLemma ( maxUInt64 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 24, 8) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-072-m-aW]: runLemma ( maxUInt72 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 23, 9) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-080-m-aW]: runLemma ( maxUInt80 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 22, 10) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-088-m-aW]: runLemma ( maxUInt88 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 21, 11) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-096-m-aW]: runLemma ( maxUInt96 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 20, 12) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-104-m-aW]: runLemma ( maxUInt104 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 19, 13) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-112-m-aW]: runLemma ( maxUInt112 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 18, 14) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-120-m-aW]: runLemma ( maxUInt120 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 17, 15) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-128-m-aW]: runLemma ( maxUInt128 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 16, 16) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-136-m-aW]: runLemma ( maxUInt136 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 15, 17) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-144-m-aW]: runLemma ( maxUInt144 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 14, 18) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-152-m-aW]: runLemma ( maxUInt152 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 13, 19) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-160-m-aW]: runLemma ( maxUInt160 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 12, 20) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-168-m-aW]: runLemma ( maxUInt168 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 11, 21) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-176-m-aW]: runLemma ( maxUInt176 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 10, 22) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-184-m-aW]: runLemma ( maxUInt184 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 9, 23) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-192-m-aW]: runLemma ( maxUInt192 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 8, 24) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-200-m-aW]: runLemma ( maxUInt200 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 7, 25) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-208-m-aW]: runLemma ( maxUInt208 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 6, 26) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-216-m-aW]: runLemma ( maxUInt216 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 5, 27) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-224-m-aW]: runLemma ( maxUInt224 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 4, 28) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-232-m-aW]: runLemma ( maxUInt232 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 3, 29) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-240-m-aW]: runLemma ( maxUInt240 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 2, 30) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-248-m-aW]: runLemma ( maxUInt248 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 1, 31) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-256-m-aW]: runLemma ( maxUInt256 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 32) ) ) ... requires lengthBytes(BA) ==Int 32 - - claim [bit-008-nm-aW]: runLemma ( notMaxUInt8 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 31) +Bytes #buf ( 1, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-016-nm-aW]: runLemma ( notMaxUInt16 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 30) +Bytes #buf ( 2, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-032-nm-aW]: runLemma ( notMaxUInt32 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 28) +Bytes #buf ( 4, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-064-nm-aW]: runLemma ( notMaxUInt64 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 24) +Bytes #buf ( 8, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-096-nm-aW]: runLemma ( notMaxUInt96 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 20) +Bytes #buf ( 12, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-128-nm-aW]: runLemma ( notMaxUInt128 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 16) +Bytes #buf ( 16, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-160-nm-aW]: runLemma ( notMaxUInt160 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 12) +Bytes #buf ( 20, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-192-nm-aW]: runLemma ( notMaxUInt192 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 8) +Bytes #buf ( 24, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-208-nm-aW]: runLemma ( notMaxUInt208 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 6) +Bytes #buf ( 26, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-224-nm-aW]: runLemma ( notMaxUInt224 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 4) +Bytes #buf ( 28, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-240-nm-aW]: runLemma ( notMaxUInt240 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 2) +Bytes #buf ( 30, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - claim [bit-248-nm-aW]: runLemma ( notMaxUInt248 &Int #asWord ( BA ) ) => doneLemma ( #asWord ( #range(BA, 0, 1) +Bytes #buf ( 31, 0 ) ) ) ... requires lengthBytes(BA) ==Int 32 - - claim runLemma ( #buf ( 32 , #asWord ( X ) ) ) => doneLemma( X ) requires lengthBytes(X) ==Int 32 - claim runLemma ( #buf ( 32 , X < doneLemma( #buf ( 1 , X ) +Bytes #buf ( 31 , 0 ) ) ... requires #rangeUInt ( 8 , X ) - claim runLemma ( #buf ( 32 , X < doneLemma( #buf ( 2 , X ) +Bytes #buf ( 30 , 0 ) ) ... requires #rangeUInt ( 16 , X ) - - // shift - // ----- - - claim [shift-16] : runLemma ( ( X < doneLemma ( true ) ... requires #rangeUInt ( 240 , X ) - claim [shift-240]: runLemma ( ( X < doneLemma ( true ) ... requires #rangeUInt ( 16 , X ) - claim [shift-248]: runLemma ( ( X < doneLemma ( true ) ... requires #rangeUInt ( 8 , X ) - - claim [shift-range]: runLemma ( #rangeUInt ( 256 , X < doneLemma ( true ) ... requires #rangeUInt ( 16 , X ) - claim [shift-mod]: runLemma ( ( X < doneLemma ( X < requires #rangeUInt ( 16 , X ) - - // concat - // ------ - - claim runLemma ( lengthBytes ( #range ( #buf ( 32 , _X ) , 3 , 29 ) +Bytes b"\x01" +Bytes #buf ( 2 , Y ) ) ) - => doneLemma ( 32 ) ... - requires #rangeUInt ( 16 , Y ) - - claim runLemma ( #asWord ( #range ( #buf ( 32 , X ) , 0 , 29 ) +Bytes #range ( #buf ( 32 , X ) , 29 , 3 ) ) ) - => doneLemma ( X ) ... - requires #rangeUInt ( 256 , X ) - - // #padRightToWidth - // ---------------- - - claim [pRTW-01]: - runLemma ( - notBool ( #asWord ( #padRightToWidth ( 32 , #buf ( 4 , VV0_x_114b9705:Int ) ) ) ==Int - #asWord ( #buf ( 4 , VV0_x_114b9705:Int ) +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ) ) - ) => doneLemma( - false - ) ... - requires #rangeUInt(32, VV0_x_114b9705) - - // #asWord - // ---------------- - - claim [buf-asWord-invert]: - runLemma( - #asWord ( #buf ( 63 , lengthBytes ( VV0_data_114b9705:Bytes ) ) ) <=Int maxUInt64 - ) => doneLemma( - true - ) ... - requires lengthBytes ( VV0_data_114b9705:Bytes ) <=Int 1073741824 - - // ecrecover - // --------- - - claim [ecrec-length]: runLemma ( lengthBytes ( #ecrec ( _ , _ , _ , _ ) ) <=Int 32 ) - => doneLemma ( true ) ... - - claim [ecrec-split]: runLemma ( #range ( #buf(160, 0) +Bytes _BUF , lengthBytes ( #ecrec ( HASH , SIGV , SIGR , SIGS ) ) +Int 128 , 32 -Int lengthBytes ( #ecrec ( HASH , SIGV , SIGR , SIGS ) ) ) ) - => doneLemma ( #range ( #buf( 32, 0) , lengthBytes ( #ecrec ( HASH , SIGV , SIGR , SIGS ) ) , 32 -Int lengthBytes ( #ecrec ( HASH , SIGV , SIGR , SIGS ) ) ) ) ... - - claim [ecrec-range]: runLemma ( #rangeUInt ( 160 , #asWord ( #ecrec ( _ , _ , _ , _ ) ) ) ) - => doneLemma ( true ) ... - - claim [ecrec-mask]: runLemma ( #asWord ( #ecrec ( HASH , SIGV , SIGR , SIGS ) ) &Int maxUInt160 ) - => doneLemma ( #asWord ( #ecrec ( HASH , SIGV , SIGR , SIGS ) ) ) ... - - // Address computation - // ------------------- - - claim [addr-from-private-key]: runLemma ( #addrFromPrivateKey(#unparseDataBytes(b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01")) ) - => doneLemma ( 721457446580647751014191829380889690493307935711 ) ... - - // Precompiled accounts - // -------------------- - - claim [precompiledAccountsSet-correctness]: - runLemma ( - #precompiledAccountsSet(DEFAULT) ==K SetItem (1) ( SetItem (2) ( SetItem (3) SetItem (4) ) ) - andBool #precompiledAccountsSet(FRONTIER) ==K SetItem (1) ( SetItem (2) ( SetItem (3) SetItem (4) ) ) - andBool #precompiledAccountsSet(HOMESTEAD) ==K SetItem (1) ( SetItem (2) ( SetItem (3) SetItem (4) ) ) - andBool #precompiledAccountsSet(TANGERINE_WHISTLE) ==K SetItem (1) ( SetItem (2) ( SetItem (3) SetItem (4) ) ) - andBool #precompiledAccountsSet(SPURIOUS_DRAGON) ==K SetItem (1) ( SetItem (2) ( SetItem (3) SetItem (4) ) ) - andBool #precompiledAccountsSet(BYZANTIUM) ==K SetItem (1) ( SetItem (2) ( SetItem (3) ( SetItem (4) ( SetItem (5) ( SetItem (6) ( SetItem (7) SetItem (8) ) ) ) ) ) ) - andBool #precompiledAccountsSet(CONSTANTINOPLE) ==K SetItem (1) ( SetItem (2) ( SetItem (3) ( SetItem (4) ( SetItem (5) ( SetItem (6) ( SetItem (7) SetItem (8) ) ) ) ) ) ) - andBool #precompiledAccountsSet(PETERSBURG) ==K SetItem (1) ( SetItem (2) ( SetItem (3) ( SetItem (4) ( SetItem (5) ( SetItem (6) ( SetItem (7) SetItem (8) ) ) ) ) ) ) - andBool #precompiledAccountsSet(ISTANBUL) ==K SetItem (1) ( SetItem (2) ( SetItem (3) ( SetItem (4) ( SetItem (5) ( SetItem (6) ( SetItem (7) ( SetItem (8) SetItem (9) ) ) ) ) ) ) ) - andBool #precompiledAccountsSet(BERLIN) ==K SetItem (1) ( SetItem (2) ( SetItem (3) ( SetItem (4) ( SetItem (5) ( SetItem (6) ( SetItem (7) ( SetItem (8) SetItem (9) ) ) ) ) ) ) ) - andBool #precompiledAccountsSet(LONDON) ==K SetItem (1) ( SetItem (2) ( SetItem (3) ( SetItem (4) ( SetItem (5) ( SetItem (6) ( SetItem (7) ( SetItem (8) SetItem (9) ) ) ) ) ) ) ) - andBool #precompiledAccountsSet(MERGE) ==K SetItem (1) ( SetItem (2) ( SetItem (3) ( SetItem (4) ( SetItem (5) ( SetItem (6) ( SetItem (7) ( SetItem (8) SetItem (9) ) ) ) ) ) ) ) - andBool #precompiledAccountsSet(SHANGHAI) ==K SetItem (1) ( SetItem (2) ( SetItem (3) ( SetItem (4) ( SetItem (5) ( SetItem (6) ( SetItem (7) ( SetItem (8) SetItem (9) ) ) ) ) ) ) ) - ) => doneLemma ( true ) ... - - claim [precompiledAccounts-slowdown]: runLemma ( X:Bool ) => doneLemma ( X:Bool ) ... - requires #isPrecompiledAccount(_A00, SHANGHAI) andBool #isPrecompiledAccount(_A01, SHANGHAI) andBool #isPrecompiledAccount(_A02, SHANGHAI) andBool #isPrecompiledAccount(_A03, SHANGHAI) andBool #isPrecompiledAccount(_A04, SHANGHAI) - andBool #isPrecompiledAccount(_A05, SHANGHAI) andBool #isPrecompiledAccount(_A06, SHANGHAI) andBool #isPrecompiledAccount(_A07, SHANGHAI) andBool #isPrecompiledAccount(_A08, SHANGHAI) andBool #isPrecompiledAccount(_A09, SHANGHAI) - andBool #isPrecompiledAccount(_A10, SHANGHAI) andBool #isPrecompiledAccount(_A11, SHANGHAI) andBool #isPrecompiledAccount(_A12, SHANGHAI) andBool #isPrecompiledAccount(_A13, SHANGHAI) andBool #isPrecompiledAccount(_A14, SHANGHAI) - andBool #isPrecompiledAccount(_A15, SHANGHAI) andBool #isPrecompiledAccount(_A16, SHANGHAI) andBool #isPrecompiledAccount(_A17, SHANGHAI) andBool #isPrecompiledAccount(_A18, SHANGHAI) andBool #isPrecompiledAccount(_A19, SHANGHAI) - andBool #isPrecompiledAccount(_A20, SHANGHAI) andBool #isPrecompiledAccount(_A21, SHANGHAI) andBool #isPrecompiledAccount(_A22, SHANGHAI) andBool #isPrecompiledAccount(_A23, SHANGHAI) andBool #isPrecompiledAccount(_A24, SHANGHAI) - andBool #isPrecompiledAccount(_A25, SHANGHAI) andBool #isPrecompiledAccount(_A26, SHANGHAI) andBool #isPrecompiledAccount(_A27, SHANGHAI) andBool #isPrecompiledAccount(_A28, SHANGHAI) andBool #isPrecompiledAccount(_A29, SHANGHAI) - andBool #isPrecompiledAccount(_A30, SHANGHAI) andBool #isPrecompiledAccount(_A31, SHANGHAI) andBool #isPrecompiledAccount(_A32, SHANGHAI) andBool #isPrecompiledAccount(_A33, SHANGHAI) andBool #isPrecompiledAccount(_A34, SHANGHAI) - andBool #isPrecompiledAccount(_A35, SHANGHAI) andBool #isPrecompiledAccount(_A36, SHANGHAI) andBool #isPrecompiledAccount(_A37, SHANGHAI) andBool #isPrecompiledAccount(_A38, SHANGHAI) andBool #isPrecompiledAccount(_A39, SHANGHAI) - andBool #isPrecompiledAccount(_A40, SHANGHAI) andBool #isPrecompiledAccount(_A41, SHANGHAI) andBool #isPrecompiledAccount(_A42, SHANGHAI) andBool #isPrecompiledAccount(_A43, SHANGHAI) andBool #isPrecompiledAccount(_A44, SHANGHAI) - andBool #isPrecompiledAccount(_A45, SHANGHAI) andBool #isPrecompiledAccount(_A46, SHANGHAI) andBool #isPrecompiledAccount(_A47, SHANGHAI) andBool #isPrecompiledAccount(_A48, SHANGHAI) andBool #isPrecompiledAccount(_A49, SHANGHAI) - -endmodule diff --git a/tests/specs/functional/merkle-spec.k b/tests/specs/functional/merkle-spec.k deleted file mode 100644 index a6bb8eeee3..0000000000 --- a/tests/specs/functional/merkle-spec.k +++ /dev/null @@ -1,85 +0,0 @@ -requires "evm.md" - -module VERIFICATION - imports EVM - - syntax StepSort ::= MerkleTree | String | Int - syntax KItem ::= runMerkle ( StepSort ) - | doneMerkle( StepSort ) - // ------------------------------------------ - rule runMerkle( T ) => doneMerkle( T ) ... - - syntax MerkleTree ::= "#initTree" [macro] - // ----------------------------------------- - rule #initTree => MerkleUpdateMap( .MerkleTree, - .Map [ #parseByteStack( "de" ) <- "verb" ] - [ #parseByteStack( "def" ) <- "puppy" ] - [ #parseByteStack( "defe" ) <- "coin" ] - [ #parseByteStack( "becfe" ) <- "stallion" ] - ) -endmodule - -module MERKLE-SPEC - imports VERIFICATION - - //////////////////// - // Symbolic Tests // - //////////////////// - claim runMerkle ( MerkleUpdate( .MerkleTree, .Bytes, V ) ) - => doneMerkle( MerkleLeaf( .Bytes, V ) ) - requires V =/=String "" - - // Update on MerkleLeaf - claim runMerkle ( MerkleUpdate( MerkleLeaf( #parseByteStack("0x0607"), _ ), #parseByteStack("0x0607"), V ) ) - => doneMerkle( MerkleLeaf ( #parseByteStack("0x0607"), V ) ) - requires V =/=String "" - - claim runMerkle ( MerkleUpdate( MerkleLeaf( #parseByteStack("0x0607"), _ ), #parseByteStack("0x0608"), V ) ) - => doneMerkle( MerkleExtension( #parseByteStack("0x06"), ?_ ) ) - requires V =/=String "" - - claim runMerkle ( MerkleUpdate( MerkleLeaf( #parseByteStack("0x05"), _ ), #parseByteStack("0x06"), V ) ) - => doneMerkle( MerkleBranch( ?_, ?_ ) ) - requires V =/=String "" - - // Update on MerkleExtension - claim runMerkle ( MerkleUpdate( MerkleExtension( #parseByteStack("0x06"), .MerkleTree ), #parseByteStack("0x06"), V ) ) - => doneMerkle( MerkleExtension( #parseByteStack("0x06"), MerkleLeaf( .Bytes, V ) ) ) - requires V =/=String "" - - claim runMerkle ( MerkleUpdate( MerkleExtension( #parseByteStack("0x07"), _ ), #parseByteStack("0x06"), V ) ) - => doneMerkle( MerkleBranch( ?_, ?_ ) ) - requires V =/=String "" - - claim runMerkle ( MerkleUpdate( MerkleExtension( #parseByteStack("0x0708"), _ ), #parseByteStack("0x0709"), V ) ) - => doneMerkle( MerkleExtension( #parseByteStack("0x07"), MerkleBranch( ?_, ?_ ) ) ) - requires V =/=String "" - - // Update on MerkleBranch - claim runMerkle ( MerkleUpdate( MerkleBranch( M, _ ), .Bytes, V ) ) - => doneMerkle( MerkleBranch( M, V ) ) - requires V =/=String "" - - claim runMerkle ( #merkleExtensionBuilder ( #parseByteStack("0e") , #parseByteStack("") , "verb" , #parseByteStack("0f0e") , "coin" ) ) - => doneMerkle ( MerkleExtension ( #parseByteStack("0e") , MerkleBranch ( 15 |-> MerkleLeaf ( #parseByteStack("0e") , "coin" ) , "verb" ) ) ) - - //////////////////////// - // MerkleDelete Tests // - //////////////////////// - - claim runMerkle ( Keccak256( #rlpEncodeMerkleTree( MerkleUpdate( #initTree, "de", "" ) ) ) ) - => doneMerkle( "4ba393b447e1c78b2f647e10ae687de132f01f49d67e396bcdea4da2de05370f" ) - - claim runMerkle ( Keccak256( #rlpEncodeMerkleTree( MerkleUpdate( #initTree, "becfe", "" ) ) ) ) - => doneMerkle( "4ba393b447e1c78b2f647e10ae687de132f01f49d67e396bcdea4da2de05370f" ) - - claim runMerkle ( Keccak256( #rlpEncodeMerkleTree( MerkleUpdate( #initTree, "def", "" ) ) ) ) - => doneMerkle( "4ba393b447e1c78b2f647e10ae687de132f01f49d67e396bcdea4da2de05370f" ) - - claim runMerkle ( Keccak256( #rlpEncodeMerkleTree( MerkleUpdate( #initTree, "defe", "" ) ) ) ) - => doneMerkle( "4ba393b447e1c78b2f647e10ae687de132f01f49d67e396bcdea4da2de05370f" ) - - claim runMerkle ( Keccak256( #rlpEncodeMerkleTree( MerkleUpdate( MerkleUpdate( #initTree, "defe", "" ), "becfe", "" ) ) ) ) - => doneMerkle( "4ba393b447e1c78b2f647e10ae687de132f01f49d67e396bcdea4da2de05370f" ) - -endmodule diff --git a/tests/specs/functional/storageRoot-spec.k b/tests/specs/functional/storageRoot-spec.k deleted file mode 100644 index d649b58627..0000000000 --- a/tests/specs/functional/storageRoot-spec.k +++ /dev/null @@ -1,76 +0,0 @@ -requires "evm.md" -requires "edsl.md" - -module VERIFICATION - imports EVM - imports EDSL - - syntax KItem ::= runLemma ( Step ) [symbol(runLemma)] | doneLemma ( Step ) - // ------------------------------------------------------- - rule runLemma(S) => doneLemma(S) ... - - syntax Step ::= String | MerkleTree - // ----------------------------------- - -endmodule - -module STORAGEROOT-SPEC - imports VERIFICATION - - claim runLemma ( #storageRoot( .Map ) ) => doneLemma ( .MerkleTree ) - - claim runLemma ( #rlpEncodeString ( "" ) ) => doneLemma ( "\x80" ) - - claim runLemma ( #rlpEncodeString ( "\x82\x04\xd2" ) ) => doneLemma ( "\x83\x82\x04\xd2" ) - - // uint pos0; - // - // pos0 = 1234; - claim runLemma ( Keccak256( #rlpEncodeMerkleTree( #storageRoot( #hashedLocation( "Solidity", 0, .IntList ) |-> 1234 ) ) ) ) - => doneLemma ( "6ff6cfba457bc662332201b53a8bda503e307197962f2c51e5e2dcc3809e19be" ) - - - // mapping (uint => uint) pos0; - // - // pos0[0] = 100; - // pos0[1] = 200; - claim runLemma ( Keccak256( #rlpEncodeMerkleTree( #storageRoot( #hashedLocation( "Solidity", 0, 0 ) |-> 100 #hashedLocation( "Solidity", 0, 1 ) |-> 200 ) ) ) ) - => doneLemma ( "27093708a19995cf73ddd4b27049a7e33fb49e242bde6c1bffbb6596b67b8b3e" ) - - - // uint pos0; - // mapping (uint => uint) pos1; - // - // pos0 = 600; - // pos1[0] = 200; - // pos1[5] = 24; - claim runLemma ( Keccak256( #rlpEncodeMerkleTree( #storageRoot( #hashedLocation( "Solidity", 0, .IntList ) |-> 600 #hashedLocation( "Solidity", 1, 0 ) |-> 200 #hashedLocation( "Solidity", 1, 5 ) |-> 24 ) ) ) ) - => doneLemma ( "7df5d7b198240b49434b4e1dbff02fcb0649dd91650ae0fae191b2881cbb009e" ) - - - // mapping (uint => uint) pos0; - // mapping (uint => uint) pos1; - // - // pos0[0] = 123; - // pos0[1] = 456; - // pos1[6] = 56; - // pos1[9] = 333; - claim runLemma ( Keccak256( #rlpEncodeMerkleTree( #storageRoot( #hashedLocation( "Solidity", 0, 0 ) |-> 123 #hashedLocation( "Solidity", 0, 1 ) |-> 456 #hashedLocation( "Solidity", 1, 6 ) |-> 56 #hashedLocation( "Solidity", 1, 9 ) |-> 333 ) ) ) ) - => doneLemma ( "e3d130ca69a8d33ad2058d86ba26ec414f6e5639930041d6a266ee88b25ea835" ) - - - // uint pos0; - // mapping (uint => uint) pos1; - // uint pos2; - // mapping (uint => mapping (uint => uint)) pos3; - // - // pos0 = 1234; - // pos1[0] = 0; - // pos1[1] = 1; - // pos2 = 100; - // pos3[0][0] = 42; - // pos3[2][1] = 2019; - claim runLemma ( Keccak256( #rlpEncodeMerkleTree( #storageRoot( #hashedLocation( "Solidity", 0, .IntList ) |-> 1234 #hashedLocation( "Solidity", 1, 0 ) |-> 0 #hashedLocation( "Solidity", 1, 1 ) |-> 1 #hashedLocation( "Solidity", 2, .IntList ) |-> 100 #hashedLocation( "Solidity", 3, 0 0 ) |-> 42 #hashedLocation( "Solidity", 3, 2 1 ) |-> 2019 ) ) ) ) - => doneLemma ( "1a40e309e184fb6483112c37def9ed52e5ee36aa4b570a234a962b3a8f186610" ) - -endmodule diff --git a/tests/specs/kontrol/test-allowchangestest-testallow-0-spec.k b/tests/specs/kontrol/test-allowchangestest-testallow-0-spec.k deleted file mode 100644 index f30a9cdc55..0000000000 --- a/tests/specs/kontrol/test-allowchangestest-testallow-0-spec.k +++ /dev/null @@ -1,307 +0,0 @@ -requires "verification.k" - -module TEST-ALLOWCHANGESTEST-TESTALLOW-0-SPEC - imports public VERIFICATION - - claim [BASIC-BLOCK-1-TO-3]: - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - ( SetItem ( 1001 ) ( SetItem ( 102 ) ( SetItem ( 1097 ) ( SetItem ( 1117 ) ( SetItem ( 1163 ) ( SetItem ( 1189 ) ( SetItem ( 1209 ) ( SetItem ( 1217 ) ( SetItem ( 1231 ) ( SetItem ( 1259 ) ( SetItem ( 1276 ) ( SetItem ( 1304 ) ( SetItem ( 1393 ) ( SetItem ( 1413 ) ( SetItem ( 1509 ) ( SetItem ( 151 ) ( SetItem ( 1529 ) ( SetItem ( 1579 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1723 ) ( SetItem ( 1785 ) ( SetItem ( 1809 ) ( SetItem ( 1818 ) ( SetItem ( 1854 ) ( SetItem ( 1885 ) ( SetItem ( 1929 ) ( SetItem ( 1963 ) ( SetItem ( 1977 ) ( SetItem ( 2006 ) ( SetItem ( 2026 ) ( SetItem ( 2062 ) ( SetItem ( 211 ) ( SetItem ( 2170 ) ( SetItem ( 2232 ) ( SetItem ( 2256 ) ( SetItem ( 2292 ) ( SetItem ( 2323 ) ( SetItem ( 2367 ) ( SetItem ( 2401 ) ( SetItem ( 2415 ) ( SetItem ( 2444 ) ( SetItem ( 2464 ) ( SetItem ( 2498 ) ( SetItem ( 256 ) ( SetItem ( 261 ) ( SetItem ( 2640 ) ( SetItem ( 2666 ) ( SetItem ( 269 ) ( SetItem ( 2727 ) ( SetItem ( 2732 ) ( SetItem ( 2756 ) ( SetItem ( 2760 ) ( SetItem ( 2765 ) ( SetItem ( 2779 ) ( SetItem ( 2807 ) ( SetItem ( 282 ) ( SetItem ( 2824 ) ( SetItem ( 2852 ) ( SetItem ( 291 ) ( SetItem ( 2941 ) ( SetItem ( 2961 ) ( SetItem ( 299 ) ( SetItem ( 3057 ) ( SetItem ( 307 ) ( SetItem ( 3077 ) ( SetItem ( 3126 ) ( SetItem ( 315 ) ( SetItem ( 317 ) ( SetItem ( 3222 ) ( SetItem ( 3236 ) ( SetItem ( 325 ) ( SetItem ( 3264 ) ( SetItem ( 3281 ) ( SetItem ( 3309 ) ( SetItem ( 333 ) ( SetItem ( 3398 ) ( SetItem ( 3418 ) ( SetItem ( 346 ) ( SetItem ( 3514 ) ( SetItem ( 3534 ) ( SetItem ( 354 ) ( SetItem ( 3585 ) ( SetItem ( 3595 ) ( SetItem ( 3597 ) ( SetItem ( 367 ) ( SetItem ( 3697 ) ( SetItem ( 3713 ) ( SetItem ( 3716 ) ( SetItem ( 375 ) ( SetItem ( 383 ) ( SetItem ( 3870 ) ( SetItem ( 3896 ) ( SetItem ( 391 ) ( SetItem ( 3957 ) ( SetItem ( 3962 ) ( SetItem ( 3967 ) ( SetItem ( 3984 ) ( SetItem ( 3996 ) ( SetItem ( 4024 ) ( SetItem ( 4061 ) ( SetItem ( 407 ) ( SetItem ( 4073 ) ( SetItem ( 4113 ) ( SetItem ( 4174 ) ( SetItem ( 4216 ) ( SetItem ( 4237 ) ( SetItem ( 4252 ) ( SetItem ( 4255 ) ( SetItem ( 4279 ) ( SetItem ( 4294 ) ( SetItem ( 4300 ) ( SetItem ( 4339 ) ( SetItem ( 4378 ) ( SetItem ( 4409 ) ( SetItem ( 4422 ) ( SetItem ( 4442 ) ( SetItem ( 446 ) ( SetItem ( 4474 ) ( SetItem ( 4480 ) ( SetItem ( 4515 ) ( SetItem ( 4529 ) ( SetItem ( 4547 ) ( SetItem ( 4557 ) ( SetItem ( 4575 ) ( SetItem ( 4591 ) ( SetItem ( 4615 ) ( SetItem ( 4645 ) ( SetItem ( 470 ) ( SetItem ( 4700 ) ( SetItem ( 4705 ) ( SetItem ( 4716 ) ( SetItem ( 4721 ) ( SetItem ( 4723 ) ( SetItem ( 4731 ) ( SetItem ( 4749 ) ( SetItem ( 4757 ) ( SetItem ( 4768 ) ( SetItem ( 4773 ) ( SetItem ( 478 ) ( SetItem ( 4790 ) ( SetItem ( 486 ) ( SetItem ( 494 ) ( SetItem ( 502 ) ( SetItem ( 515 ) ( SetItem ( 573 ) ( SetItem ( 603 ) ( SetItem ( 613 ) ( SetItem ( 709 ) ( SetItem ( 805 ) ( SetItem ( 819 ) ( SetItem ( 847 ) ( SetItem ( 864 ) ( SetItem ( 892 ) SetItem ( 981 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xdc \xbc[" - - - 0 - - - ( 0 : ( 315 : ( 3693132891 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" - - - 2789 - - - #gas ( ( ( VGAS:Int +Int -32369 ) /Int 64 ) ) - - - 12 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32369 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 1001 => 101 ) ) ( SetItem ( ( 102 => 106 ) ) ( SetItem ( ( 1097 => 117 ) ) ( SetItem ( ( 1117 => 122 ) ) ( SetItem ( ( 1163 => 124 ) ) ( SetItem ( ( 1189 => 132 ) ) ( SetItem ( ( 1209 => 150 ) ) ( SetItem ( ( 1217 => 158 ) ) ( SetItem ( ( 1231 => 16 ) ) ( SetItem ( ( 1259 => 169 ) ) ( SetItem ( ( 1276 => 174 ) ) ( SetItem ( ( 1304 => 191 ) ) ( ( SetItem ( 1393 ) ( SetItem ( 1413 ) ( SetItem ( 1509 ) ( SetItem ( 151 ) ( SetItem ( 1529 ) ( SetItem ( 1579 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1723 ) ( SetItem ( 1785 ) ( SetItem ( 1809 ) ( SetItem ( 1818 ) ( SetItem ( 1854 ) ( SetItem ( 1885 ) ( SetItem ( 1929 ) ( SetItem ( 1963 ) ( SetItem ( 1977 ) ( SetItem ( 2006 ) ( SetItem ( 2026 ) ( SetItem ( 2062 ) ( SetItem ( 211 ) ( SetItem ( 2170 ) ( SetItem ( 2232 ) ( SetItem ( 2256 ) ( SetItem ( 2292 ) ( SetItem ( 2323 ) ( SetItem ( 2367 ) ( SetItem ( 2401 ) ( SetItem ( 2415 ) ( SetItem ( 2444 ) ( SetItem ( 2464 ) ( SetItem ( 2498 ) ( SetItem ( 256 ) ( SetItem ( 261 ) ( SetItem ( 2640 ) ( SetItem ( 2666 ) ( SetItem ( 269 ) ( SetItem ( 2727 ) ( SetItem ( 2732 ) ( SetItem ( 2756 ) ( SetItem ( 2760 ) ( SetItem ( 2765 ) ( SetItem ( 2779 ) ( SetItem ( 2807 ) ( SetItem ( 282 ) ( SetItem ( 2824 ) ( SetItem ( 2852 ) ( SetItem ( 291 ) ( SetItem ( 2941 ) ( SetItem ( 2961 ) ( SetItem ( 299 ) ( SetItem ( 3057 ) ( SetItem ( 307 ) ( SetItem ( 3077 ) ( SetItem ( 3126 ) ( SetItem ( 315 ) ( SetItem ( 317 ) ( SetItem ( 3222 ) ( SetItem ( 3236 ) ( SetItem ( 325 ) ( SetItem ( 3264 ) ( SetItem ( 3281 ) ( SetItem ( 3309 ) ( SetItem ( 333 ) ( SetItem ( 3398 ) ( SetItem ( 3418 ) ( SetItem ( 346 ) ( SetItem ( 3514 ) ( SetItem ( 3534 ) ( SetItem ( 354 ) ( SetItem ( 3585 ) ( SetItem ( 3595 ) ( SetItem ( 3597 ) ( SetItem ( 367 ) ( SetItem ( 3697 ) ( SetItem ( 3713 ) ( SetItem ( 3716 ) ( SetItem ( 375 ) ( SetItem ( 383 ) ( SetItem ( 3870 ) ( SetItem ( 3896 ) ( SetItem ( 391 ) ( SetItem ( 3957 ) ( SetItem ( 3962 ) ( SetItem ( 3967 ) ( SetItem ( 3984 ) ( SetItem ( 3996 ) ( SetItem ( 4024 ) ( SetItem ( 4061 ) ( SetItem ( 407 ) ( SetItem ( 4073 ) ( SetItem ( 4113 ) ( SetItem ( 4174 ) ( SetItem ( 4216 ) ( SetItem ( 4237 ) ( SetItem ( 4252 ) ( SetItem ( 4255 ) ( SetItem ( 4279 ) ( SetItem ( 4294 ) ( SetItem ( 4300 ) ( SetItem ( 4339 ) ( SetItem ( 4378 ) ( SetItem ( 4409 ) ( SetItem ( 4422 ) ( SetItem ( 4442 ) ( SetItem ( 446 ) ( SetItem ( 4474 ) ( SetItem ( 4480 ) ( SetItem ( 4515 ) ( SetItem ( 4529 ) ( SetItem ( 4547 ) ( SetItem ( 4557 ) ( SetItem ( 4575 ) ( SetItem ( 4591 ) ( SetItem ( 4615 ) ( SetItem ( 4645 ) ( SetItem ( 470 ) ( SetItem ( 4700 ) ( SetItem ( 4705 ) ( SetItem ( 4716 ) ( SetItem ( 4721 ) ( SetItem ( 4723 ) ( SetItem ( 4731 ) ( SetItem ( 4749 ) ( SetItem ( 4757 ) ( SetItem ( 4768 ) ( SetItem ( 4773 ) ( SetItem ( 478 ) ( SetItem ( 4790 ) ( SetItem ( 486 ) ( SetItem ( 494 ) ( SetItem ( 502 ) ( SetItem ( 515 ) ( SetItem ( 573 ) ( SetItem ( 603 ) ( SetItem ( 613 ) ( SetItem ( 709 ) ( SetItem ( 805 ) ( SetItem ( 819 ) ( SetItem ( 847 ) ( SetItem ( 864 ) ( SetItem ( 892 ) SetItem ( 981 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 46 ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\xdc \xbc[" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( 0 => 29 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32369 ) ) +Int -93 ) ) ) - - - ( 0 => 7 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - ( SetItem ( 1001 ) ( SetItem ( 102 ) ( SetItem ( 1097 ) ( SetItem ( 1117 ) ( SetItem ( 1163 ) ( SetItem ( 1189 ) ( SetItem ( 1209 ) ( SetItem ( 1217 ) ( SetItem ( 1231 ) ( SetItem ( 1259 ) ( SetItem ( 1276 ) ( SetItem ( 1304 ) ( SetItem ( 1393 ) ( SetItem ( 1413 ) ( SetItem ( 1509 ) ( SetItem ( 151 ) ( SetItem ( 1529 ) ( SetItem ( 1579 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1723 ) ( SetItem ( 1785 ) ( SetItem ( 1809 ) ( SetItem ( 1818 ) ( SetItem ( 1854 ) ( SetItem ( 1885 ) ( SetItem ( 1929 ) ( SetItem ( 1963 ) ( SetItem ( 1977 ) ( SetItem ( 2006 ) ( SetItem ( 2026 ) ( SetItem ( 2062 ) ( SetItem ( 211 ) ( SetItem ( 2170 ) ( SetItem ( 2232 ) ( SetItem ( 2256 ) ( SetItem ( 2292 ) ( SetItem ( 2323 ) ( SetItem ( 2367 ) ( SetItem ( 2401 ) ( SetItem ( 2415 ) ( SetItem ( 2444 ) ( SetItem ( 2464 ) ( SetItem ( 2498 ) ( SetItem ( 256 ) ( SetItem ( 261 ) ( SetItem ( 2640 ) ( SetItem ( 2666 ) ( SetItem ( 269 ) ( SetItem ( 2727 ) ( SetItem ( 2732 ) ( SetItem ( 2756 ) ( SetItem ( 2760 ) ( SetItem ( 2765 ) ( SetItem ( 2779 ) ( SetItem ( 2807 ) ( SetItem ( 282 ) ( SetItem ( 2824 ) ( SetItem ( 2852 ) ( SetItem ( 291 ) ( SetItem ( 2941 ) ( SetItem ( 2961 ) ( SetItem ( 299 ) ( SetItem ( 3057 ) ( SetItem ( 307 ) ( SetItem ( 3077 ) ( SetItem ( 3126 ) ( SetItem ( 315 ) ( SetItem ( 317 ) ( SetItem ( 3222 ) ( SetItem ( 3236 ) ( SetItem ( 325 ) ( SetItem ( 3264 ) ( SetItem ( 3281 ) ( SetItem ( 3309 ) ( SetItem ( 333 ) ( SetItem ( 3398 ) ( SetItem ( 3418 ) ( SetItem ( 346 ) ( SetItem ( 3514 ) ( SetItem ( 3534 ) ( SetItem ( 354 ) ( SetItem ( 3585 ) ( SetItem ( 3595 ) ( SetItem ( 3597 ) ( SetItem ( 367 ) ( SetItem ( 3697 ) ( SetItem ( 3713 ) ( SetItem ( 3716 ) ( SetItem ( 375 ) ( SetItem ( 383 ) ( SetItem ( 3870 ) ( SetItem ( 3896 ) ( SetItem ( 391 ) ( SetItem ( 3957 ) ( SetItem ( 3962 ) ( SetItem ( 3967 ) ( SetItem ( 3984 ) ( SetItem ( 3996 ) ( SetItem ( 4024 ) ( SetItem ( 4061 ) ( SetItem ( 407 ) ( SetItem ( 4073 ) ( SetItem ( 4113 ) ( SetItem ( 4174 ) ( SetItem ( 4216 ) ( SetItem ( 4237 ) ( SetItem ( 4252 ) ( SetItem ( 4255 ) ( SetItem ( 4279 ) ( SetItem ( 4294 ) ( SetItem ( 4300 ) ( SetItem ( 4339 ) ( SetItem ( 4378 ) ( SetItem ( 4409 ) ( SetItem ( 4422 ) ( SetItem ( 4442 ) ( SetItem ( 446 ) ( SetItem ( 4474 ) ( SetItem ( 4480 ) ( SetItem ( 4515 ) ( SetItem ( 4529 ) ( SetItem ( 4547 ) ( SetItem ( 4557 ) ( SetItem ( 4575 ) ( SetItem ( 4591 ) ( SetItem ( 4615 ) ( SetItem ( 4645 ) ( SetItem ( 470 ) ( SetItem ( 4700 ) ( SetItem ( 4705 ) ( SetItem ( 4716 ) ( SetItem ( 4721 ) ( SetItem ( 4723 ) ( SetItem ( 4731 ) ( SetItem ( 4749 ) ( SetItem ( 4757 ) ( SetItem ( 4768 ) ( SetItem ( 4773 ) ( SetItem ( 478 ) ( SetItem ( 4790 ) ( SetItem ( 486 ) ( SetItem ( 494 ) ( SetItem ( 502 ) ( SetItem ( 515 ) ( SetItem ( 573 ) ( SetItem ( 603 ) ( SetItem ( 613 ) ( SetItem ( 709 ) ( SetItem ( 805 ) ( SetItem ( 819 ) ( SetItem ( 847 ) ( SetItem ( 864 ) ( SetItem ( 892 ) SetItem ( 981 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xf6$=\xb1" - - - 0 - - - ( 0 : ( 315 : ( 4129570225 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" - - - 3246 - - - #gas ( ( ( VGAS:Int +Int -32324 ) /Int 64 ) ) - - - 12 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32324 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 1001 => 101 ) ) ( SetItem ( ( 102 => 106 ) ) ( SetItem ( ( 1097 => 117 ) ) ( SetItem ( ( 1117 => 122 ) ) ( SetItem ( ( 1163 => 124 ) ) ( SetItem ( ( 1189 => 132 ) ) ( SetItem ( ( 1209 => 150 ) ) ( SetItem ( ( 1217 => 158 ) ) ( SetItem ( ( 1231 => 16 ) ) ( SetItem ( ( 1259 => 169 ) ) ( SetItem ( ( 1276 => 174 ) ) ( SetItem ( ( 1304 => 191 ) ) ( ( SetItem ( 1393 ) ( SetItem ( 1413 ) ( SetItem ( 1509 ) ( SetItem ( 151 ) ( SetItem ( 1529 ) ( SetItem ( 1579 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1723 ) ( SetItem ( 1785 ) ( SetItem ( 1809 ) ( SetItem ( 1818 ) ( SetItem ( 1854 ) ( SetItem ( 1885 ) ( SetItem ( 1929 ) ( SetItem ( 1963 ) ( SetItem ( 1977 ) ( SetItem ( 2006 ) ( SetItem ( 2026 ) ( SetItem ( 2062 ) ( SetItem ( 211 ) ( SetItem ( 2170 ) ( SetItem ( 2232 ) ( SetItem ( 2256 ) ( SetItem ( 2292 ) ( SetItem ( 2323 ) ( SetItem ( 2367 ) ( SetItem ( 2401 ) ( SetItem ( 2415 ) ( SetItem ( 2444 ) ( SetItem ( 2464 ) ( SetItem ( 2498 ) ( SetItem ( 256 ) ( SetItem ( 261 ) ( SetItem ( 2640 ) ( SetItem ( 2666 ) ( SetItem ( 269 ) ( SetItem ( 2727 ) ( SetItem ( 2732 ) ( SetItem ( 2756 ) ( SetItem ( 2760 ) ( SetItem ( 2765 ) ( SetItem ( 2779 ) ( SetItem ( 2807 ) ( SetItem ( 282 ) ( SetItem ( 2824 ) ( SetItem ( 2852 ) ( SetItem ( 291 ) ( SetItem ( 2941 ) ( SetItem ( 2961 ) ( SetItem ( 299 ) ( SetItem ( 3057 ) ( SetItem ( 307 ) ( SetItem ( 3077 ) ( SetItem ( 3126 ) ( SetItem ( 315 ) ( SetItem ( 317 ) ( SetItem ( 3222 ) ( SetItem ( 3236 ) ( SetItem ( 325 ) ( SetItem ( 3264 ) ( SetItem ( 3281 ) ( SetItem ( 3309 ) ( SetItem ( 333 ) ( SetItem ( 3398 ) ( SetItem ( 3418 ) ( SetItem ( 346 ) ( SetItem ( 3514 ) ( SetItem ( 3534 ) ( SetItem ( 354 ) ( SetItem ( 3585 ) ( SetItem ( 3595 ) ( SetItem ( 3597 ) ( SetItem ( 367 ) ( SetItem ( 3697 ) ( SetItem ( 3713 ) ( SetItem ( 3716 ) ( SetItem ( 375 ) ( SetItem ( 383 ) ( SetItem ( 3870 ) ( SetItem ( 3896 ) ( SetItem ( 391 ) ( SetItem ( 3957 ) ( SetItem ( 3962 ) ( SetItem ( 3967 ) ( SetItem ( 3984 ) ( SetItem ( 3996 ) ( SetItem ( 4024 ) ( SetItem ( 4061 ) ( SetItem ( 407 ) ( SetItem ( 4073 ) ( SetItem ( 4113 ) ( SetItem ( 4174 ) ( SetItem ( 4216 ) ( SetItem ( 4237 ) ( SetItem ( 4252 ) ( SetItem ( 4255 ) ( SetItem ( 4279 ) ( SetItem ( 4294 ) ( SetItem ( 4300 ) ( SetItem ( 4339 ) ( SetItem ( 4378 ) ( SetItem ( 4409 ) ( SetItem ( 4422 ) ( SetItem ( 4442 ) ( SetItem ( 446 ) ( SetItem ( 4474 ) ( SetItem ( 4480 ) ( SetItem ( 4515 ) ( SetItem ( 4529 ) ( SetItem ( 4547 ) ( SetItem ( 4557 ) ( SetItem ( 4575 ) ( SetItem ( 4591 ) ( SetItem ( 4615 ) ( SetItem ( 4645 ) ( SetItem ( 470 ) ( SetItem ( 4700 ) ( SetItem ( 4705 ) ( SetItem ( 4716 ) ( SetItem ( 4721 ) ( SetItem ( 4723 ) ( SetItem ( 4731 ) ( SetItem ( 4749 ) ( SetItem ( 4757 ) ( SetItem ( 4768 ) ( SetItem ( 4773 ) ( SetItem ( 478 ) ( SetItem ( 4790 ) ( SetItem ( 486 ) ( SetItem ( 494 ) ( SetItem ( 502 ) ( SetItem ( 515 ) ( SetItem ( 573 ) ( SetItem ( 603 ) ( SetItem ( 613 ) ( SetItem ( 709 ) ( SetItem ( 805 ) ( SetItem ( 819 ) ( SetItem ( 847 ) ( SetItem ( 864 ) ( SetItem ( 892 ) SetItem ( 981 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 46 ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\xf6$=\xb1" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( 0 => 29 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32324 ) ) +Int -93 ) ) ) - - - ( 0 => 7 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - ( SetItem ( 1001 ) ( SetItem ( 102 ) ( SetItem ( 1097 ) ( SetItem ( 1117 ) ( SetItem ( 1163 ) ( SetItem ( 1189 ) ( SetItem ( 1209 ) ( SetItem ( 1217 ) ( SetItem ( 1231 ) ( SetItem ( 1259 ) ( SetItem ( 1276 ) ( SetItem ( 1304 ) ( SetItem ( 1393 ) ( SetItem ( 1413 ) ( SetItem ( 1509 ) ( SetItem ( 151 ) ( SetItem ( 1529 ) ( SetItem ( 1579 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1723 ) ( SetItem ( 1785 ) ( SetItem ( 1809 ) ( SetItem ( 1818 ) ( SetItem ( 1854 ) ( SetItem ( 1885 ) ( SetItem ( 1929 ) ( SetItem ( 1963 ) ( SetItem ( 1977 ) ( SetItem ( 2006 ) ( SetItem ( 2026 ) ( SetItem ( 2062 ) ( SetItem ( 211 ) ( SetItem ( 2170 ) ( SetItem ( 2232 ) ( SetItem ( 2256 ) ( SetItem ( 2292 ) ( SetItem ( 2323 ) ( SetItem ( 2367 ) ( SetItem ( 2401 ) ( SetItem ( 2415 ) ( SetItem ( 2444 ) ( SetItem ( 2464 ) ( SetItem ( 2498 ) ( SetItem ( 256 ) ( SetItem ( 261 ) ( SetItem ( 2640 ) ( SetItem ( 2666 ) ( SetItem ( 269 ) ( SetItem ( 2727 ) ( SetItem ( 2732 ) ( SetItem ( 2756 ) ( SetItem ( 2760 ) ( SetItem ( 2765 ) ( SetItem ( 2779 ) ( SetItem ( 2807 ) ( SetItem ( 282 ) ( SetItem ( 2824 ) ( SetItem ( 2852 ) ( SetItem ( 291 ) ( SetItem ( 2941 ) ( SetItem ( 2961 ) ( SetItem ( 299 ) ( SetItem ( 3057 ) ( SetItem ( 307 ) ( SetItem ( 3077 ) ( SetItem ( 3126 ) ( SetItem ( 315 ) ( SetItem ( 317 ) ( SetItem ( 3222 ) ( SetItem ( 3236 ) ( SetItem ( 325 ) ( SetItem ( 3264 ) ( SetItem ( 3281 ) ( SetItem ( 3309 ) ( SetItem ( 333 ) ( SetItem ( 3398 ) ( SetItem ( 3418 ) ( SetItem ( 346 ) ( SetItem ( 3514 ) ( SetItem ( 3534 ) ( SetItem ( 354 ) ( SetItem ( 3585 ) ( SetItem ( 3595 ) ( SetItem ( 3597 ) ( SetItem ( 367 ) ( SetItem ( 3697 ) ( SetItem ( 3713 ) ( SetItem ( 3716 ) ( SetItem ( 375 ) ( SetItem ( 383 ) ( SetItem ( 3870 ) ( SetItem ( 3896 ) ( SetItem ( 391 ) ( SetItem ( 3957 ) ( SetItem ( 3962 ) ( SetItem ( 3967 ) ( SetItem ( 3984 ) ( SetItem ( 3996 ) ( SetItem ( 4024 ) ( SetItem ( 4061 ) ( SetItem ( 407 ) ( SetItem ( 4073 ) ( SetItem ( 4113 ) ( SetItem ( 4174 ) ( SetItem ( 4216 ) ( SetItem ( 4237 ) ( SetItem ( 4252 ) ( SetItem ( 4255 ) ( SetItem ( 4279 ) ( SetItem ( 4294 ) ( SetItem ( 4300 ) ( SetItem ( 4339 ) ( SetItem ( 4378 ) ( SetItem ( 4409 ) ( SetItem ( 4422 ) ( SetItem ( 4442 ) ( SetItem ( 446 ) ( SetItem ( 4474 ) ( SetItem ( 4480 ) ( SetItem ( 4515 ) ( SetItem ( 4529 ) ( SetItem ( 4547 ) ( SetItem ( 4557 ) ( SetItem ( 4575 ) ( SetItem ( 4591 ) ( SetItem ( 4615 ) ( SetItem ( 4645 ) ( SetItem ( 470 ) ( SetItem ( 4700 ) ( SetItem ( 4705 ) ( SetItem ( 4716 ) ( SetItem ( 4721 ) ( SetItem ( 4723 ) ( SetItem ( 4731 ) ( SetItem ( 4749 ) ( SetItem ( 4757 ) ( SetItem ( 4768 ) ( SetItem ( 4773 ) ( SetItem ( 478 ) ( SetItem ( 4790 ) ( SetItem ( 486 ) ( SetItem ( 494 ) ( SetItem ( 502 ) ( SetItem ( 515 ) ( SetItem ( 573 ) ( SetItem ( 603 ) ( SetItem ( 613 ) ( SetItem ( 709 ) ( SetItem ( 805 ) ( SetItem ( 819 ) ( SetItem ( 847 ) ( SetItem ( 864 ) ( SetItem ( 892 ) SetItem ( 981 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"KE:Y" - - - 0 - - - ( 0 : ( 315 : ( 1262828121 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" - - - 829 - - - #gas ( ( ( VGAS:Int +Int -32370 ) /Int 64 ) ) - - - 12 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32370 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 1001 => 101 ) ) ( SetItem ( ( 102 => 106 ) ) ( SetItem ( ( 1097 => 117 ) ) ( SetItem ( ( 1117 => 122 ) ) ( SetItem ( ( 1163 => 124 ) ) ( SetItem ( ( 1189 => 132 ) ) ( SetItem ( ( 1209 => 150 ) ) ( SetItem ( ( 1217 => 158 ) ) ( SetItem ( ( 1231 => 16 ) ) ( SetItem ( ( 1259 => 169 ) ) ( SetItem ( ( 1276 => 174 ) ) ( SetItem ( ( 1304 => 191 ) ) ( ( SetItem ( 1393 ) ( SetItem ( 1413 ) ( SetItem ( 1509 ) ( SetItem ( 151 ) ( SetItem ( 1529 ) ( SetItem ( 1579 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1723 ) ( SetItem ( 1785 ) ( SetItem ( 1809 ) ( SetItem ( 1818 ) ( SetItem ( 1854 ) ( SetItem ( 1885 ) ( SetItem ( 1929 ) ( SetItem ( 1963 ) ( SetItem ( 1977 ) ( SetItem ( 2006 ) ( SetItem ( 2026 ) ( SetItem ( 2062 ) ( SetItem ( 211 ) ( SetItem ( 2170 ) ( SetItem ( 2232 ) ( SetItem ( 2256 ) ( SetItem ( 2292 ) ( SetItem ( 2323 ) ( SetItem ( 2367 ) ( SetItem ( 2401 ) ( SetItem ( 2415 ) ( SetItem ( 2444 ) ( SetItem ( 2464 ) ( SetItem ( 2498 ) ( SetItem ( 256 ) ( SetItem ( 261 ) ( SetItem ( 2640 ) ( SetItem ( 2666 ) ( SetItem ( 269 ) ( SetItem ( 2727 ) ( SetItem ( 2732 ) ( SetItem ( 2756 ) ( SetItem ( 2760 ) ( SetItem ( 2765 ) ( SetItem ( 2779 ) ( SetItem ( 2807 ) ( SetItem ( 282 ) ( SetItem ( 2824 ) ( SetItem ( 2852 ) ( SetItem ( 291 ) ( SetItem ( 2941 ) ( SetItem ( 2961 ) ( SetItem ( 299 ) ( SetItem ( 3057 ) ( SetItem ( 307 ) ( SetItem ( 3077 ) ( SetItem ( 3126 ) ( SetItem ( 315 ) ( SetItem ( 317 ) ( SetItem ( 3222 ) ( SetItem ( 3236 ) ( SetItem ( 325 ) ( SetItem ( 3264 ) ( SetItem ( 3281 ) ( SetItem ( 3309 ) ( SetItem ( 333 ) ( SetItem ( 3398 ) ( SetItem ( 3418 ) ( SetItem ( 346 ) ( SetItem ( 3514 ) ( SetItem ( 3534 ) ( SetItem ( 354 ) ( SetItem ( 3585 ) ( SetItem ( 3595 ) ( SetItem ( 3597 ) ( SetItem ( 367 ) ( SetItem ( 3697 ) ( SetItem ( 3713 ) ( SetItem ( 3716 ) ( SetItem ( 375 ) ( SetItem ( 383 ) ( SetItem ( 3870 ) ( SetItem ( 3896 ) ( SetItem ( 391 ) ( SetItem ( 3957 ) ( SetItem ( 3962 ) ( SetItem ( 3967 ) ( SetItem ( 3984 ) ( SetItem ( 3996 ) ( SetItem ( 4024 ) ( SetItem ( 4061 ) ( SetItem ( 407 ) ( SetItem ( 4073 ) ( SetItem ( 4113 ) ( SetItem ( 4174 ) ( SetItem ( 4216 ) ( SetItem ( 4237 ) ( SetItem ( 4252 ) ( SetItem ( 4255 ) ( SetItem ( 4279 ) ( SetItem ( 4294 ) ( SetItem ( 4300 ) ( SetItem ( 4339 ) ( SetItem ( 4378 ) ( SetItem ( 4409 ) ( SetItem ( 4422 ) ( SetItem ( 4442 ) ( SetItem ( 446 ) ( SetItem ( 4474 ) ( SetItem ( 4480 ) ( SetItem ( 4515 ) ( SetItem ( 4529 ) ( SetItem ( 4547 ) ( SetItem ( 4557 ) ( SetItem ( 4575 ) ( SetItem ( 4591 ) ( SetItem ( 4615 ) ( SetItem ( 4645 ) ( SetItem ( 470 ) ( SetItem ( 4700 ) ( SetItem ( 4705 ) ( SetItem ( 4716 ) ( SetItem ( 4721 ) ( SetItem ( 4723 ) ( SetItem ( 4731 ) ( SetItem ( 4749 ) ( SetItem ( 4757 ) ( SetItem ( 4768 ) ( SetItem ( 4773 ) ( SetItem ( 478 ) ( SetItem ( 4790 ) ( SetItem ( 486 ) ( SetItem ( 494 ) ( SetItem ( 502 ) ( SetItem ( 515 ) ( SetItem ( 573 ) ( SetItem ( 603 ) ( SetItem ( 613 ) ( SetItem ( 709 ) ( SetItem ( 805 ) ( SetItem ( 819 ) ( SetItem ( 847 ) ( SetItem ( 864 ) ( SetItem ( 892 ) SetItem ( 981 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 46 ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"KE:Y" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( 0 => 29 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32370 ) ) +Int -93 ) ) ) - - - ( 0 => 7 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - ( SetItem ( 1001 ) ( SetItem ( 102 ) ( SetItem ( 1097 ) ( SetItem ( 1117 ) ( SetItem ( 1163 ) ( SetItem ( 1189 ) ( SetItem ( 1209 ) ( SetItem ( 1217 ) ( SetItem ( 1231 ) ( SetItem ( 1259 ) ( SetItem ( 1276 ) ( SetItem ( 1304 ) ( SetItem ( 1393 ) ( SetItem ( 1413 ) ( SetItem ( 1509 ) ( SetItem ( 151 ) ( SetItem ( 1529 ) ( SetItem ( 1579 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1723 ) ( SetItem ( 1785 ) ( SetItem ( 1809 ) ( SetItem ( 1818 ) ( SetItem ( 1854 ) ( SetItem ( 1885 ) ( SetItem ( 1929 ) ( SetItem ( 1963 ) ( SetItem ( 1977 ) ( SetItem ( 2006 ) ( SetItem ( 2026 ) ( SetItem ( 2062 ) ( SetItem ( 211 ) ( SetItem ( 2170 ) ( SetItem ( 2232 ) ( SetItem ( 2256 ) ( SetItem ( 2292 ) ( SetItem ( 2323 ) ( SetItem ( 2367 ) ( SetItem ( 2401 ) ( SetItem ( 2415 ) ( SetItem ( 2444 ) ( SetItem ( 2464 ) ( SetItem ( 2498 ) ( SetItem ( 256 ) ( SetItem ( 261 ) ( SetItem ( 2640 ) ( SetItem ( 2666 ) ( SetItem ( 269 ) ( SetItem ( 2727 ) ( SetItem ( 2732 ) ( SetItem ( 2756 ) ( SetItem ( 2760 ) ( SetItem ( 2765 ) ( SetItem ( 2779 ) ( SetItem ( 2807 ) ( SetItem ( 282 ) ( SetItem ( 2824 ) ( SetItem ( 2852 ) ( SetItem ( 291 ) ( SetItem ( 2941 ) ( SetItem ( 2961 ) ( SetItem ( 299 ) ( SetItem ( 3057 ) ( SetItem ( 307 ) ( SetItem ( 3077 ) ( SetItem ( 3126 ) ( SetItem ( 315 ) ( SetItem ( 317 ) ( SetItem ( 3222 ) ( SetItem ( 3236 ) ( SetItem ( 325 ) ( SetItem ( 3264 ) ( SetItem ( 3281 ) ( SetItem ( 3309 ) ( SetItem ( 333 ) ( SetItem ( 3398 ) ( SetItem ( 3418 ) ( SetItem ( 346 ) ( SetItem ( 3514 ) ( SetItem ( 3534 ) ( SetItem ( 354 ) ( SetItem ( 3585 ) ( SetItem ( 3595 ) ( SetItem ( 3597 ) ( SetItem ( 367 ) ( SetItem ( 3697 ) ( SetItem ( 3713 ) ( SetItem ( 3716 ) ( SetItem ( 375 ) ( SetItem ( 383 ) ( SetItem ( 3870 ) ( SetItem ( 3896 ) ( SetItem ( 391 ) ( SetItem ( 3957 ) ( SetItem ( 3962 ) ( SetItem ( 3967 ) ( SetItem ( 3984 ) ( SetItem ( 3996 ) ( SetItem ( 4024 ) ( SetItem ( 4061 ) ( SetItem ( 407 ) ( SetItem ( 4073 ) ( SetItem ( 4113 ) ( SetItem ( 4174 ) ( SetItem ( 4216 ) ( SetItem ( 4237 ) ( SetItem ( 4252 ) ( SetItem ( 4255 ) ( SetItem ( 4279 ) ( SetItem ( 4294 ) ( SetItem ( 4300 ) ( SetItem ( 4339 ) ( SetItem ( 4378 ) ( SetItem ( 4409 ) ( SetItem ( 4422 ) ( SetItem ( 4442 ) ( SetItem ( 446 ) ( SetItem ( 4474 ) ( SetItem ( 4480 ) ( SetItem ( 4515 ) ( SetItem ( 4529 ) ( SetItem ( 4547 ) ( SetItem ( 4557 ) ( SetItem ( 4575 ) ( SetItem ( 4591 ) ( SetItem ( 4615 ) ( SetItem ( 4645 ) ( SetItem ( 470 ) ( SetItem ( 4700 ) ( SetItem ( 4705 ) ( SetItem ( 4716 ) ( SetItem ( 4721 ) ( SetItem ( 4723 ) ( SetItem ( 4731 ) ( SetItem ( 4749 ) ( SetItem ( 4757 ) ( SetItem ( 4768 ) ( SetItem ( 4773 ) ( SetItem ( 478 ) ( SetItem ( 4790 ) ( SetItem ( 486 ) ( SetItem ( 494 ) ( SetItem ( 502 ) ( SetItem ( 515 ) ( SetItem ( 573 ) ( SetItem ( 603 ) ( SetItem ( 613 ) ( SetItem ( 709 ) ( SetItem ( 805 ) ( SetItem ( 819 ) ( SetItem ( 847 ) ( SetItem ( 864 ) ( SetItem ( 892 ) SetItem ( 981 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"[1\xd5'" - - - 0 - - - ( 0 : ( 315 : ( 1529992487 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" - - - 1241 - - - #gas ( ( ( VGAS:Int +Int -32303 ) /Int 64 ) ) - - - 12 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32303 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 1001 => 101 ) ) ( SetItem ( ( 102 => 106 ) ) ( SetItem ( ( 1097 => 117 ) ) ( SetItem ( ( 1117 => 122 ) ) ( SetItem ( ( 1163 => 124 ) ) ( SetItem ( ( 1189 => 132 ) ) ( SetItem ( ( 1209 => 150 ) ) ( SetItem ( ( 1217 => 158 ) ) ( SetItem ( ( 1231 => 16 ) ) ( SetItem ( ( 1259 => 169 ) ) ( SetItem ( ( 1276 => 174 ) ) ( SetItem ( ( 1304 => 191 ) ) ( ( SetItem ( 1393 ) ( SetItem ( 1413 ) ( SetItem ( 1509 ) ( SetItem ( 151 ) ( SetItem ( 1529 ) ( SetItem ( 1579 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1723 ) ( SetItem ( 1785 ) ( SetItem ( 1809 ) ( SetItem ( 1818 ) ( SetItem ( 1854 ) ( SetItem ( 1885 ) ( SetItem ( 1929 ) ( SetItem ( 1963 ) ( SetItem ( 1977 ) ( SetItem ( 2006 ) ( SetItem ( 2026 ) ( SetItem ( 2062 ) ( SetItem ( 211 ) ( SetItem ( 2170 ) ( SetItem ( 2232 ) ( SetItem ( 2256 ) ( SetItem ( 2292 ) ( SetItem ( 2323 ) ( SetItem ( 2367 ) ( SetItem ( 2401 ) ( SetItem ( 2415 ) ( SetItem ( 2444 ) ( SetItem ( 2464 ) ( SetItem ( 2498 ) ( SetItem ( 256 ) ( SetItem ( 261 ) ( SetItem ( 2640 ) ( SetItem ( 2666 ) ( SetItem ( 269 ) ( SetItem ( 2727 ) ( SetItem ( 2732 ) ( SetItem ( 2756 ) ( SetItem ( 2760 ) ( SetItem ( 2765 ) ( SetItem ( 2779 ) ( SetItem ( 2807 ) ( SetItem ( 282 ) ( SetItem ( 2824 ) ( SetItem ( 2852 ) ( SetItem ( 291 ) ( SetItem ( 2941 ) ( SetItem ( 2961 ) ( SetItem ( 299 ) ( SetItem ( 3057 ) ( SetItem ( 307 ) ( SetItem ( 3077 ) ( SetItem ( 3126 ) ( SetItem ( 315 ) ( SetItem ( 317 ) ( SetItem ( 3222 ) ( SetItem ( 3236 ) ( SetItem ( 325 ) ( SetItem ( 3264 ) ( SetItem ( 3281 ) ( SetItem ( 3309 ) ( SetItem ( 333 ) ( SetItem ( 3398 ) ( SetItem ( 3418 ) ( SetItem ( 346 ) ( SetItem ( 3514 ) ( SetItem ( 3534 ) ( SetItem ( 354 ) ( SetItem ( 3585 ) ( SetItem ( 3595 ) ( SetItem ( 3597 ) ( SetItem ( 367 ) ( SetItem ( 3697 ) ( SetItem ( 3713 ) ( SetItem ( 3716 ) ( SetItem ( 375 ) ( SetItem ( 383 ) ( SetItem ( 3870 ) ( SetItem ( 3896 ) ( SetItem ( 391 ) ( SetItem ( 3957 ) ( SetItem ( 3962 ) ( SetItem ( 3967 ) ( SetItem ( 3984 ) ( SetItem ( 3996 ) ( SetItem ( 4024 ) ( SetItem ( 4061 ) ( SetItem ( 407 ) ( SetItem ( 4073 ) ( SetItem ( 4113 ) ( SetItem ( 4174 ) ( SetItem ( 4216 ) ( SetItem ( 4237 ) ( SetItem ( 4252 ) ( SetItem ( 4255 ) ( SetItem ( 4279 ) ( SetItem ( 4294 ) ( SetItem ( 4300 ) ( SetItem ( 4339 ) ( SetItem ( 4378 ) ( SetItem ( 4409 ) ( SetItem ( 4422 ) ( SetItem ( 4442 ) ( SetItem ( 446 ) ( SetItem ( 4474 ) ( SetItem ( 4480 ) ( SetItem ( 4515 ) ( SetItem ( 4529 ) ( SetItem ( 4547 ) ( SetItem ( 4557 ) ( SetItem ( 4575 ) ( SetItem ( 4591 ) ( SetItem ( 4615 ) ( SetItem ( 4645 ) ( SetItem ( 470 ) ( SetItem ( 4700 ) ( SetItem ( 4705 ) ( SetItem ( 4716 ) ( SetItem ( 4721 ) ( SetItem ( 4723 ) ( SetItem ( 4731 ) ( SetItem ( 4749 ) ( SetItem ( 4757 ) ( SetItem ( 4768 ) ( SetItem ( 4773 ) ( SetItem ( 478 ) ( SetItem ( 4790 ) ( SetItem ( 486 ) ( SetItem ( 494 ) ( SetItem ( 502 ) ( SetItem ( 515 ) ( SetItem ( 573 ) ( SetItem ( 603 ) ( SetItem ( 613 ) ( SetItem ( 709 ) ( SetItem ( 805 ) ( SetItem ( 819 ) ( SetItem ( 847 ) ( SetItem ( 864 ) ( SetItem ( 892 ) SetItem ( 981 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 46 ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"[1\xd5'" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - ( 0 => 29 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32303 ) ) +Int -93 ) ) ) - - - ( 0 => 7 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( #halt - ~> #codeDeposit 491460923342184218035706888008750043977755113263 => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 263400868551549723330807389252719309078400616203 ) - ~> #pc [ CREATE ] - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" - - - EVMC_SUCCESS - - - ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - ( SetItem ( 1001 ) ( SetItem ( 102 ) ( SetItem ( 1097 ) ( SetItem ( 1117 ) ( SetItem ( 1163 ) ( SetItem ( 1189 ) ( SetItem ( 1209 ) ( SetItem ( 1217 ) ( SetItem ( 1231 ) ( SetItem ( 1259 ) ( SetItem ( 1276 ) ( SetItem ( 1304 ) ( SetItem ( 1393 ) ( SetItem ( 1413 ) ( SetItem ( 1509 ) ( SetItem ( 151 ) ( SetItem ( 1529 ) ( SetItem ( 1579 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1723 ) ( SetItem ( 1785 ) ( SetItem ( 1809 ) ( SetItem ( 1818 ) ( SetItem ( 1854 ) ( SetItem ( 1885 ) ( SetItem ( 1929 ) ( SetItem ( 1963 ) ( SetItem ( 1977 ) ( SetItem ( 2006 ) ( SetItem ( 2026 ) ( SetItem ( 2062 ) ( SetItem ( 211 ) ( SetItem ( 2170 ) ( SetItem ( 2232 ) ( SetItem ( 2256 ) ( SetItem ( 2292 ) ( SetItem ( 2323 ) ( SetItem ( 2367 ) ( SetItem ( 2401 ) ( SetItem ( 2415 ) ( SetItem ( 2444 ) ( SetItem ( 2464 ) ( SetItem ( 2498 ) ( SetItem ( 256 ) ( SetItem ( 261 ) ( SetItem ( 2640 ) ( SetItem ( 2666 ) ( SetItem ( 269 ) ( SetItem ( 2727 ) ( SetItem ( 2732 ) ( SetItem ( 2756 ) ( SetItem ( 2760 ) ( SetItem ( 2765 ) ( SetItem ( 2779 ) ( SetItem ( 2807 ) ( SetItem ( 282 ) ( SetItem ( 2824 ) ( SetItem ( 2852 ) ( SetItem ( 291 ) ( SetItem ( 2941 ) ( SetItem ( 2961 ) ( SetItem ( 299 ) ( SetItem ( 3057 ) ( SetItem ( 307 ) ( SetItem ( 3077 ) ( SetItem ( 3126 ) ( SetItem ( 315 ) ( SetItem ( 317 ) ( SetItem ( 3222 ) ( SetItem ( 3236 ) ( SetItem ( 325 ) ( SetItem ( 3264 ) ( SetItem ( 3281 ) ( SetItem ( 3309 ) ( SetItem ( 333 ) ( SetItem ( 3398 ) ( SetItem ( 3418 ) ( SetItem ( 346 ) ( SetItem ( 3514 ) ( SetItem ( 3534 ) ( SetItem ( 354 ) ( SetItem ( 3585 ) ( SetItem ( 3595 ) ( SetItem ( 3597 ) ( SetItem ( 367 ) ( SetItem ( 3697 ) ( SetItem ( 3713 ) ( SetItem ( 3716 ) ( SetItem ( 375 ) ( SetItem ( 383 ) ( SetItem ( 3870 ) ( SetItem ( 3896 ) ( SetItem ( 391 ) ( SetItem ( 3957 ) ( SetItem ( 3962 ) ( SetItem ( 3967 ) ( SetItem ( 3984 ) ( SetItem ( 3996 ) ( SetItem ( 4024 ) ( SetItem ( 4061 ) ( SetItem ( 407 ) ( SetItem ( 4073 ) ( SetItem ( 4113 ) ( SetItem ( 4174 ) ( SetItem ( 4216 ) ( SetItem ( 4237 ) ( SetItem ( 4252 ) ( SetItem ( 4255 ) ( SetItem ( 4279 ) ( SetItem ( 4294 ) ( SetItem ( 4300 ) ( SetItem ( 4339 ) ( SetItem ( 4378 ) ( SetItem ( 4409 ) ( SetItem ( 4422 ) ( SetItem ( 4442 ) ( SetItem ( 446 ) ( SetItem ( 4474 ) ( SetItem ( 4480 ) ( SetItem ( 4515 ) ( SetItem ( 4529 ) ( SetItem ( 4547 ) ( SetItem ( 4557 ) ( SetItem ( 4575 ) ( SetItem ( 4591 ) ( SetItem ( 4615 ) ( SetItem ( 4645 ) ( SetItem ( 470 ) ( SetItem ( 4700 ) ( SetItem ( 4705 ) ( SetItem ( 4716 ) ( SetItem ( 4721 ) ( SetItem ( 4723 ) ( SetItem ( 4731 ) ( SetItem ( 4749 ) ( SetItem ( 4757 ) ( SetItem ( 4768 ) ( SetItem ( 4773 ) ( SetItem ( 478 ) ( SetItem ( 4790 ) ( SetItem ( 486 ) ( SetItem ( 494 ) ( SetItem ( 502 ) ( SetItem ( 515 ) ( SetItem ( 573 ) ( SetItem ( 603 ) ( SetItem ( 613 ) ( SetItem ( 709 ) ( SetItem ( 805 ) ( SetItem ( 819 ) ( SetItem ( 847 ) ( SetItem ( 864 ) ( SetItem ( 892 ) SetItem ( 981 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"[1\xd5'" - - - 0 - - - ( 0 : ( ( 315 => 491460923342184218035706888008750043977755113263 ) : ( ( 1529992487 => 315 ) : ( .WordStack => ( 1529992487 : .WordStack ) ) ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" - - - ( 1241 => 1286 ) - - - #gas ( ( ( ( VGAS:Int => ( ( ( VGAS:Int +Int -32303 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32303 ) ) ) ) +Int ( -32303 => -76444 ) ) /Int 64 ) ) - - - 12 - - - #gas ( #allBut64th ( ( ( VGAS:Int => ( ( ( VGAS:Int +Int -32303 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32303 ) ) ) ) +Int ( -32303 => -76444 ) ) ) ) - - - false - - - 0 - - ) - - - ListItem ( { - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 3 - - ) ) ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( SetItem ( 491460923342184218035706888008750043977755113263 ) => ( SetItem ( 263400868551549723330807389252719309078400616203 ) ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) ) - - - .Map - - } ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) ) |Set SetItem ( ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) ) |Set SetItem ( ( 491460923342184218035706888008750043977755113263 => 263400868551549723330807389252719309078400616203 ) ) - - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" - - - ( SetItem ( 101 ) ( SetItem ( 106 ) ( SetItem ( 117 ) ( SetItem ( 122 ) ( SetItem ( 124 ) ( SetItem ( 132 ) ( SetItem ( 150 ) ( SetItem ( 158 ) ( SetItem ( 16 ) ( SetItem ( 169 ) ( SetItem ( 174 ) ( SetItem ( 191 ) SetItem ( 46 ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 491460923342184218035706888008750043977755113263 => 263400868551549723330807389252719309078400616203 ) - - - 728815563385977040452943777879061427756277306518 - - - b"" - - - 0 - - - .WordStack - - - b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" - - - 29 - - - #gas ( ( #allBut64th ( ( ( VGAS:Int => ( ( ( VGAS:Int +Int -32303 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32303 ) ) ) ) +Int ( -32303 => -76444 ) ) ) +Int -93 ) ) - - - 7 - - - 0 - - - false - - - 1 - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( SetItem ( ( 491460923342184218035706888008750043977755113263 => 263400868551549723330807389252719309078400616203 ) ) ( SetItem ( 728815563385977040452943777879061427756277306518 ) => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 491460923342184218035706888008750043977755113263 => 263400868551549723330807389252719309078400616203 ) - - - 0 - - - b"" - - - .Map - - - .Map - - - 1 - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01\x00W`\x005`\xe0\x1c\x80c\xb5P\x8a\xa9\x11a\x00\x97W\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xf6$=\xb1\x14a\x01\xe6W\x80c\xf8\xa8\xfdm\x14a\x01\xeeW\x80c\xfav&\xd4\x14a\x01\xf6W`\x00\x80\xfd[\x80c\xb5P\x8a\xa9\x14a\x01wW\x80c\xbaAO\xa6\x14a\x01\x7fW\x80c\xd6\xa2\xecv\x14a\x01\x97W\x80c\xdc \xbc[\x14a\x01\xd6W`\x00\x80\xfd[\x80c[1\xd5'\x11a\x00\xd3W\x80c[1\xd5'\x14a\x01=W\x80cf\xd9\xa9\xa0\x14a\x01EW\x80c\x85\"l\x81\x14a\x01ZW\x80c\x91j\x17\xc6\x14a\x01oW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x01\x05W\x80c>^<#\x14a\x01#W\x80c?r\x86\xf4\x14a\x01+W\x80cKE:Y\x14a\x013W[`\x00\x80\xfd[a\x01\ra\x02\x03V[`@Qa\x01\x1a\x91\x90a\x0f\x9cV[`@Q\x80\x91\x03\x90\xf3[a\x01\ra\x02eV[a\x01\ra\x02\xc5V[a\x01;a\x03%V[\x00[a\x01;a\x04\xc1V[a\x01Ma\x06+V[`@Qa\x01\x1a\x91\x90a\x0f\xe9V[a\x01ba\x07\x1aV[`@Qa\x01\x1a\x91\x90a\x10\xccV[a\x01Ma\x07\xeaV[a\x01ba\x08\xd0V[a\x01\x87a\t\xa0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1aV[a\x01\xbe\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x1aV[a\x01;a\n\xcdV[a\x01\ra\f6V[a\x01;a\f\x96V[a\x01;a\x0e\x01V[`\x07Ta\x01\x87\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\x033\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03OW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x03`\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x03|W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xd5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xe9W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04IW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04]W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81Ra(\x05`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pcak\x8d\x05\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xa5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xb9W=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00`@Qa\x04\xcf\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\xebW=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x04\xfc\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x18W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05qW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x85W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\xe5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\xf9W=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Ra[\x9c`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xf9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xbbW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06OV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07]\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\x89\x90a\x11FV[\x80\x15a\x07\xd6W\x80`\x1f\x10a\x07\xabWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xd6V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xb9W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07>V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08zW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0eV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x07\x11W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\x13\x90a\x11FV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t?\x90a\x11FV[\x80\x15a\t\x8cW\x80`\x1f\x10a\taWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8cV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\toW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xf4V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xc2WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xc8W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\nP\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nj\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\xa7W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\xacV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xc4\x91\x90a\x11\xcdV[\x91PP[\x91\x90PV[`\x00`@Qa\n\xdb\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\n\xf7W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\x0b\x08\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b$W=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b}W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x91W=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\xf1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\x05W=`\x00\x80>=`\x00\xfd[PP`@Qcak\x8d\x05`\xe0\x1b\x81R`U`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pcak\x8d\x05\x91P`$\x01a\x04\x8bV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02[W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02=WPPPPP\x90P\x90V[`\x00`@Qa\f\xa4\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xc0W=`\x00\x80>=`\x00\xfd[P\x90P`\x00`@Qa\f\xd1\x90a\x0f\x90V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\f\xedW=`\x00\x80>=`\x00\xfd[P`@Qc\x1b\x949\x8d`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cnP\xe64\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\rFW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rZW=`\x00\x80>=`\x00\xfd[PP`@Qc>\xb2\x05\xc3`\xe2\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x85\x16`\x04\x82\x01R`\x00`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xfa\xc8\x17\f\x91P`D\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r\xbaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\r\xceW=`\x00\x80>=`\x00\xfd[PP`@Qc\n\xf3=S`\xe1\x1b\x81Rb\x03\x94\x19`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x85\x16\x92Pc\x15\xe6z\xa6\x91P`$\x01a\x04\x8bV[a\x0e\x0b`\x01a\x0e\rV[V[\x80a\x0e\x81W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0eq\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\x0e\x81a\x0e\x84V[PV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0f\x7fW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x1e\x92\x91` \x01a\x11\x80V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f8\x91a\x11\xb1V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fuW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fzV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xfc\x80a\x11\xf7\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xddW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xb8V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10\x8dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10xW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10NV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x10\x11V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10\xb7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x10\x9fV[\x83\x81\x11\x15a\x10\xc6W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x119W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x11\x1a\x81\x89\x89\x01\x8a\x85\x01a\x10\x9cV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\xf3V[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x11ZW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x11zWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x11\xa3\x81`\x04\x85\x01` \x87\x01a\x10\x9cV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x11\xc3\x81\x84` \x87\x01a\x10\x9cV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x11\xdfW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x11\xefW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xdd\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`FW`\x005`\xe0\x1c\x80c\x15\xe6z\xa6\x14`KW\x80c03A;\x14`]W\x80c]3\xa2\x7f\x14`wW\x80cak\x8d\x05\x14`\x7fW[`\x00\x80\xfd[`[`V6`\x04`\x8fV[`\x01UV[\x00[`e`\x00T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3[`e`\x01T\x81V[`[`\x8a6`\x04`\x8fV[`\x00UV[`\x00` \x82\x84\x03\x12\x15`\xa0W`\x00\x80\xfd[P5\x91\x90PV\xfe\xa2dipfsX\"\x12 k\xdd\x86\x85\x7f\xfc\x83n#6Y\x8de\xd5'\xc1*\x92U3\x1e\xbcVQ\x12,\xdc\x15\x7fVH\xf5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 A\xe2\xcd\x85\x9a\xcf\x91\xfaZO7\xc6q\x9e\x05V?E\xfc:\xa1\xb7[\x07\x90\x9d\x7f\xfd\x13w\xec\x9ddsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 3 - - ) ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( JUMPI 4533 bool2Word ( VV0_a_114b9705:Int <=Int 115792089237316195423570985008687907853269984665640564039457584007913129639934 ) - ~> #pc [ JUMPI ] => #end EVMC_REVERT - ~> #pc [ REVERT ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( b"" => b"NH{q\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11" ) - - - .List - - - .List - - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01MW`\x005`\xe0\x1c\x80cf\xd9\xa9\xa0\x11a\x00\xc3W\x80c\xb5P\x8a\xa9\x11a\x00|W\x80c\xb5P\x8a\xa9\x14a\x02\x85W\x80c\xbaAO\xa6\x14a\x02\x8dW\x80c\xdd\xb4\xccD\x14a\x02\xa5W\x80c\xe2\f\x9fq\x14a\x02\xb8W\x80c\xfav&\xd4\x14a\x02\xc0W\x80c\xfd\xfb\xd8Y\x14a\x02\xcdW`\x00\x80\xfd[\x80cf\xd9\xa9\xa0\x14a\x02\x1aW\x80c\x85\"l\x81\x14a\x02/W\x80c\x91j\x17\xc6\x14a\x02DW\x80c\xa3\x14\xa1K\x14a\x02LW\x80c\xa5\xfa\xb3%\x14a\x02_W\x80c\xa7o\x92|\x14a\x02rW`\x00\x80\xfd[\x80c^<#\x14a\x01\xd1W\x80c?r\x86\xf4\x14a\x01\xd9W\x80cB\xf0C\xe8\x14a\x01\xe1W\x80cT\xbc\xa0\x17\x14a\x01\xf4W\x80c`\xe74\xec\x14a\x02\x07W`\x00\x80\xfd[\x80c\x14\x90X?\x14a\x01RW\x80c\x19\xe9\xb4K\x14a\x01gW\x80c\x1d6c\xf8\x14a\x01zW\x80c\x1e\xd7\x83\x1c\x14a\x01\x8dW\x80c5\x95\xffg\x14a\x01\xabW[`\x00\x80\xfd[a\x01ea\x01`6`\x04a\x0fhV[a\x02\xe0V[\x00[a\x01ea\x01u6`\x04a\x0fhV[a\x03\x0eV[a\x01ea\x01\x886`\x04a\x0fhV[a\x039V[a\x01\x95a\x03\x87V[`@Qa\x01\xa2\x91\x90a\x0f\x8aV[`@Q\x80\x91\x03\x90\xf3[a\x01ea\x01\xb96`\x04a\x0fhV[a\x03\xe9V[a\x01ea\x01\xcc6`\x04a\x0fhV[a\x04\x17V[a\x01\x95a\x04iV[a\x01\x95a\x04\xc9V[a\x01ea\x01\xef6`\x04a\x0fhV[a\x05)V[a\x01ea\x02\x026`\x04a\x0fhV[a\x055V[a\x01ea\x02\x156`\x04a\x0fhV[a\x05\x81V[a\x02\"a\x05\xfeV[`@Qa\x01\xa2\x91\x90a\x0f\xd7V[a\x027a\x06\xedV[`@Qa\x01\xa2\x91\x90a\x10\xb6V[a\x02\"a\x07\xbdV[a\x01ea\x02Z6`\x04a\x0fhV[a\x08\xa3V[a\x01ea\x02m6`\x04a\x0fhV[a\x08\xebV[a\x01ea\x02\x806`\x04a\x0fhV[a\x08\xf7V[a\x027a\t~V[a\x02\x95a\nNV[`@Q\x90\x15\x15\x81R` \x01a\x01\xa2V[a\x01ea\x02\xb36`\x04a\x0fhV[a\x0b{V[a\x01\x95a\x0b\xa9V[`\x07Ta\x02\x95\x90`\xff\x16\x81V[a\x01ea\x02\xdb6`\x04a\x0fhV[a\f\tV[`\x00a\x02\xec\x83\x83a\f#V[\x90P`\x00a\x02\xfa\x84\x84a\f^V[\x90Pa\x03\x08\x82\x82\x11\x15a\fsV[PPPPV[`\x00a\x03\x1a\x83\x83a\f\xeaV[\x90Pa\x034\x83\x82\x10\x15\x80\x15a\x03/WP\x82\x82\x10\x15[a\fsV[PPPV[\x81`\x00\x10\x80\x15a\x03IWP\x80`\x00\x10[\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x03l\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x10\x80\x15a\x03/WP\x81\x83\x10a\fsV[PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1W[PPPPP\x90P\x90V[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x03IWP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[`\x00a\x04,a\x04&\x84\x84a\f#V[\x83a\r\x19V[\x90P`\x00a\x04Ca\x04=\x85\x85a\f^V[\x84a\r\x04V[\x90Pa\x04Q\x84\x83\x11\x15a\fsV[a\x04]\x84\x82\x11\x15a\fsV[a\x03\x08\x82\x82\x11\x15a\fsV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\x03l\x83\x83a\r\x04V[\x81`\x00\x10\x80\x15a\x05EWP\x80`\x00\x10[\x15a\x03\x83Wa\x05V\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x05h\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x11\x15\x80\x15a\x03/WP\x81\x83\x11\x15a\fsV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xceW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xe2W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x05\xf2\x83\x83a\f\xeaV[\x90Pa\x034\x81\x83a\r9V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xccW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8eW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\"V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x070\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\\\x90a\x11hV[\x80\x15a\x07\xa9W\x80`\x1f\x10a\x07~Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xa9V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x8cW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x11V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x8bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08MW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xe1V[\x81`\x00\x10\x80\x15a\x08\xb3WP\x80`\x00\x10[\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x08\xdfa\x08\xd9\x84\x84a\r\x04V[\x83a\f^V[\x90Pa\x034\x83\x82a\r9V[a\x03Z\x82`\x00\x19a\x11FV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\tDW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\tXW=`\x00\x80>=`\x00\xfd[PPPP`\x00a\th\x83\x83a\f\xeaV[\x90Pa\x034a\tx\x82`\x01a\x11\xa2V[\x84a\r9V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\xc1\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xed\x90a\x11hV[\x80\x15a\n:W\x80`\x1f\x10a\n\x0fWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n:V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x1dW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t\xa2V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\npWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0bvW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n\xfe\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0b\x18\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0bUW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0bZV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0br\x91\x90a\x12\x07V[\x91PP[\x91\x90PV[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x08\xb3WP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\f\x15\x83\x83a\r\x19V[\x90P`\x00a\x02\xfa\x84\x84a\r\x04V[`\x00\x81a\f1`\x02\x82a\x11FV[a\fCg\r\xe0\xb6\xb3\xa7d\x00\x00\x86a\x12)V[a\fM\x91\x90a\x11\xa2V[a\fW\x91\x90a\x11FV[\x93\x92PPPV[`\x00\x81a\fMg\r\xe0\xb6\xb3\xa7d\x00\x00\x85a\x12)V[\x80a\f\xe7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\f\xd7\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\f\xe7a\x0e\\V[PV[`\x00\x81\x83\x10\x15a\f\xfbWP\x80a\f\xfeV[P\x81[\x92\x91PPV[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\fM\x83\x85a\x12)V[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\r/`\x02\x82a\x11FV[a\fC\x84\x86a\x12)V[\x80\x82\x14a\x03\x83W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\r\xaa\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\x03\x83[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0fWW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0e\xf6\x92\x91` \x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x10\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fMW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fRV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\x00\x80`@\x83\x85\x03\x12\x15a\x0f{W`\x00\x80\xfd[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xcbW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xa6V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10{W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10fW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10\x00\xbc|\x80\x0e\x9b\x81\xa5<\x15\xde\x0edsolcC\x00\x08\r\x003" - - - ( SetItem ( 1001 ) ( SetItem ( 1047 ) ( SetItem ( 1062 ) ( SetItem ( 1068 ) ( SetItem ( 1085 ) ( SetItem ( 1091 ) ( SetItem ( 1105 ) ( SetItem ( 1117 ) ( SetItem ( 1129 ) ( SetItem ( 1225 ) ( SetItem ( 124 ) ( SetItem ( 1321 ) ( SetItem ( 1333 ) ( SetItem ( 1349 ) ( SetItem ( 1366 ) ( SetItem ( 1384 ) ( SetItem ( 1409 ) ( SetItem ( 1486 ) ( SetItem ( 1506 ) ( SetItem ( 1522 ) ( SetItem ( 1534 ) ( SetItem ( 1570 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1740 ) ( SetItem ( 1764 ) ( SetItem ( 1773 ) ( SetItem ( 1809 ) ( SetItem ( 1840 ) ( SetItem ( 1884 ) ( SetItem ( 1918 ) ( SetItem ( 1932 ) ( SetItem ( 195 ) ( SetItem ( 1961 ) ( SetItem ( 1981 ) ( SetItem ( 2017 ) ( SetItem ( 2125 ) ( SetItem ( 2187 ) ( SetItem ( 2211 ) ( SetItem ( 2227 ) ( SetItem ( 2244 ) ( SetItem ( 2265 ) ( SetItem ( 2271 ) ( SetItem ( 2283 ) ( SetItem ( 2295 ) ( SetItem ( 2372 ) ( SetItem ( 2392 ) ( SetItem ( 2408 ) ( SetItem ( 2424 ) ( SetItem ( 2430 ) ( SetItem ( 2466 ) ( SetItem ( 2497 ) ( SetItem ( 2541 ) ( SetItem ( 2575 ) ( SetItem ( 2589 ) ( SetItem ( 2618 ) ( SetItem ( 2638 ) ( SetItem ( 2672 ) ( SetItem ( 277 ) ( SetItem ( 2814 ) ( SetItem ( 2840 ) ( SetItem ( 2901 ) ( SetItem ( 2906 ) ( SetItem ( 2930 ) ( SetItem ( 2934 ) ( SetItem ( 2939 ) ( SetItem ( 2985 ) ( SetItem ( 3081 ) ( SetItem ( 3093 ) ( SetItem ( 3107 ) ( SetItem ( 3121 ) ( SetItem ( 3139 ) ( SetItem ( 3149 ) ( SetItem ( 3159 ) ( SetItem ( 3166 ) ( SetItem ( 3187 ) ( SetItem ( 3287 ) ( SetItem ( 3303 ) ( SetItem ( 3306 ) ( SetItem ( 3323 ) ( SetItem ( 3326 ) ( SetItem ( 333 ) ( SetItem ( 3332 ) ( SetItem ( 3353 ) ( SetItem ( 3375 ) ( SetItem ( 338 ) ( SetItem ( 3385 ) ( SetItem ( 3498 ) ( SetItem ( 352 ) ( SetItem ( 357 ) ( SetItem ( 359 ) ( SetItem ( 3676 ) ( SetItem ( 373 ) ( SetItem ( 378 ) ( SetItem ( 3830 ) ( SetItem ( 3856 ) ( SetItem ( 3917 ) ( SetItem ( 392 ) ( SetItem ( 3922 ) ( SetItem ( 3927 ) ( SetItem ( 3944 ) ( SetItem ( 3963 ) ( SetItem ( 397 ) ( SetItem ( 3978 ) ( SetItem ( 4006 ) ( SetItem ( 4043 ) ( SetItem ( 405 ) ( SetItem ( 4055 ) ( SetItem ( 4095 ) ( SetItem ( 4156 ) ( SetItem ( 418 ) ( SetItem ( 4198 ) ( SetItem ( 4219 ) ( SetItem ( 4234 ) ( SetItem ( 4237 ) ( SetItem ( 4261 ) ( SetItem ( 427 ) ( SetItem ( 4278 ) ( SetItem ( 4317 ) ( SetItem ( 4356 ) ( SetItem ( 4387 ) ( SetItem ( 4400 ) ( SetItem ( 441 ) ( SetItem ( 4422 ) ( SetItem ( 4451 ) ( SetItem ( 4456 ) ( SetItem ( 446 ) ( SetItem ( 4476 ) ( SetItem ( 4508 ) ( SetItem ( 4514 ) ( SetItem ( 4533 ) ( SetItem ( 4538 ) ( SetItem ( 4573 ) ( SetItem ( 4587 ) ( SetItem ( 460 ) ( SetItem ( 4605 ) ( SetItem ( 4615 ) ( SetItem ( 4633 ) ( SetItem ( 4649 ) ( SetItem ( 465 ) ( SetItem ( 4675 ) ( SetItem ( 473 ) ( SetItem ( 481 ) ( SetItem ( 495 ) ( SetItem ( 500 ) ( SetItem ( 514 ) ( SetItem ( 519 ) ( SetItem ( 533 ) ( SetItem ( 538 ) ( SetItem ( 546 ) ( SetItem ( 559 ) ( SetItem ( 567 ) ( SetItem ( 580 ) ( SetItem ( 588 ) ( SetItem ( 602 ) ( SetItem ( 607 ) ( SetItem ( 621 ) ( SetItem ( 626 ) ( SetItem ( 640 ) ( SetItem ( 645 ) ( SetItem ( 653 ) ( SetItem ( 661 ) ( SetItem ( 677 ) ( SetItem ( 691 ) ( SetItem ( 696 ) ( SetItem ( 704 ) ( SetItem ( 717 ) ( SetItem ( 731 ) ( SetItem ( 736 ) ( SetItem ( 748 ) ( SetItem ( 762 ) ( SetItem ( 776 ) ( SetItem ( 782 ) ( SetItem ( 794 ) ( SetItem ( 815 ) ( SetItem ( 820 ) ( SetItem ( 825 ) ( SetItem ( 841 ) ( SetItem ( 858 ) ( SetItem ( 876 ) ( SetItem ( 899 ) ( SetItem ( 903 ) ( SetItem ( 961 ) SetItem ( 991 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xa7o\x92|" +Bytes #buf ( 32 , VV0_a_114b9705:Int ) +Bytes #buf ( 32 , VV1_b_114b9705:Int ) - - - 0 - - - ( ( 0 => 4533 ) : ( ( 1 => 0 ) : ( ( VV0_a_114b9705:Int => 1 ) : ( ( 2424 => VV0_a_114b9705:Int ) : ( ( 820 => 2424 ) : ( ( VV0_a_114b9705:Int => 820 ) : ( ( VV1_b_114b9705:Int => VV0_a_114b9705:Int ) : ( ( VV0_a_114b9705:Int => VV1_b_114b9705:Int ) : ( ( 357 => VV0_a_114b9705:Int ) : ( ( 2809107068 => 357 ) : ( .WordStack => ( 2809107068 : .WordStack ) ) ) ) ) ) ) ) ) ) ) ) - - - ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Lc\xe5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" => b"NH{q\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Lc\xe5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" ) - - - ( 4525 => 4421 ) - - - #gas ( ( VGAS:Int +Int ( -3363 => -3408 ) ) ) - - - 6 - - - #gas ( Cgascap ( SHANGHAI , ( VGAS:Int +Int -3094 ) , ( VGAS:Int +Int -3094 ) , 100 ) ) - - - false - - - 0 - - - - - .List - - - SetItem ( 645326474426547203313410069153905908525362434349 ) - - - .Map - - ... - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01MW`\x005`\xe0\x1c\x80cf\xd9\xa9\xa0\x11a\x00\xc3W\x80c\xb5P\x8a\xa9\x11a\x00|W\x80c\xb5P\x8a\xa9\x14a\x02\x85W\x80c\xbaAO\xa6\x14a\x02\x8dW\x80c\xdd\xb4\xccD\x14a\x02\xa5W\x80c\xe2\f\x9fq\x14a\x02\xb8W\x80c\xfav&\xd4\x14a\x02\xc0W\x80c\xfd\xfb\xd8Y\x14a\x02\xcdW`\x00\x80\xfd[\x80cf\xd9\xa9\xa0\x14a\x02\x1aW\x80c\x85\"l\x81\x14a\x02/W\x80c\x91j\x17\xc6\x14a\x02DW\x80c\xa3\x14\xa1K\x14a\x02LW\x80c\xa5\xfa\xb3%\x14a\x02_W\x80c\xa7o\x92|\x14a\x02rW`\x00\x80\xfd[\x80c^<#\x14a\x01\xd1W\x80c?r\x86\xf4\x14a\x01\xd9W\x80cB\xf0C\xe8\x14a\x01\xe1W\x80cT\xbc\xa0\x17\x14a\x01\xf4W\x80c`\xe74\xec\x14a\x02\x07W`\x00\x80\xfd[\x80c\x14\x90X?\x14a\x01RW\x80c\x19\xe9\xb4K\x14a\x01gW\x80c\x1d6c\xf8\x14a\x01zW\x80c\x1e\xd7\x83\x1c\x14a\x01\x8dW\x80c5\x95\xffg\x14a\x01\xabW[`\x00\x80\xfd[a\x01ea\x01`6`\x04a\x0fhV[a\x02\xe0V[\x00[a\x01ea\x01u6`\x04a\x0fhV[a\x03\x0eV[a\x01ea\x01\x886`\x04a\x0fhV[a\x039V[a\x01\x95a\x03\x87V[`@Qa\x01\xa2\x91\x90a\x0f\x8aV[`@Q\x80\x91\x03\x90\xf3[a\x01ea\x01\xb96`\x04a\x0fhV[a\x03\xe9V[a\x01ea\x01\xcc6`\x04a\x0fhV[a\x04\x17V[a\x01\x95a\x04iV[a\x01\x95a\x04\xc9V[a\x01ea\x01\xef6`\x04a\x0fhV[a\x05)V[a\x01ea\x02\x026`\x04a\x0fhV[a\x055V[a\x01ea\x02\x156`\x04a\x0fhV[a\x05\x81V[a\x02\"a\x05\xfeV[`@Qa\x01\xa2\x91\x90a\x0f\xd7V[a\x027a\x06\xedV[`@Qa\x01\xa2\x91\x90a\x10\xb6V[a\x02\"a\x07\xbdV[a\x01ea\x02Z6`\x04a\x0fhV[a\x08\xa3V[a\x01ea\x02m6`\x04a\x0fhV[a\x08\xebV[a\x01ea\x02\x806`\x04a\x0fhV[a\x08\xf7V[a\x027a\t~V[a\x02\x95a\nNV[`@Q\x90\x15\x15\x81R` \x01a\x01\xa2V[a\x01ea\x02\xb36`\x04a\x0fhV[a\x0b{V[a\x01\x95a\x0b\xa9V[`\x07Ta\x02\x95\x90`\xff\x16\x81V[a\x01ea\x02\xdb6`\x04a\x0fhV[a\f\tV[`\x00a\x02\xec\x83\x83a\f#V[\x90P`\x00a\x02\xfa\x84\x84a\f^V[\x90Pa\x03\x08\x82\x82\x11\x15a\fsV[PPPPV[`\x00a\x03\x1a\x83\x83a\f\xeaV[\x90Pa\x034\x83\x82\x10\x15\x80\x15a\x03/WP\x82\x82\x10\x15[a\fsV[PPPV[\x81`\x00\x10\x80\x15a\x03IWP\x80`\x00\x10[\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x03l\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x10\x80\x15a\x03/WP\x81\x83\x10a\fsV[PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1W[PPPPP\x90P\x90V[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x03IWP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[`\x00a\x04,a\x04&\x84\x84a\f#V[\x83a\r\x19V[\x90P`\x00a\x04Ca\x04=\x85\x85a\f^V[\x84a\r\x04V[\x90Pa\x04Q\x84\x83\x11\x15a\fsV[a\x04]\x84\x82\x11\x15a\fsV[a\x03\x08\x82\x82\x11\x15a\fsV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\x03l\x83\x83a\r\x04V[\x81`\x00\x10\x80\x15a\x05EWP\x80`\x00\x10[\x15a\x03\x83Wa\x05V\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x05h\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x11\x15\x80\x15a\x03/WP\x81\x83\x11\x15a\fsV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xceW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xe2W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x05\xf2\x83\x83a\f\xeaV[\x90Pa\x034\x81\x83a\r9V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xccW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8eW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\"V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x070\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\\\x90a\x11hV[\x80\x15a\x07\xa9W\x80`\x1f\x10a\x07~Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xa9V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x8cW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x11V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x8bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08MW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xe1V[\x81`\x00\x10\x80\x15a\x08\xb3WP\x80`\x00\x10[\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x08\xdfa\x08\xd9\x84\x84a\r\x04V[\x83a\f^V[\x90Pa\x034\x83\x82a\r9V[a\x03Z\x82`\x00\x19a\x11FV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\tDW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\tXW=`\x00\x80>=`\x00\xfd[PPPP`\x00a\th\x83\x83a\f\xeaV[\x90Pa\x034a\tx\x82`\x01a\x11\xa2V[\x84a\r9V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\xc1\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xed\x90a\x11hV[\x80\x15a\n:W\x80`\x1f\x10a\n\x0fWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n:V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x1dW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t\xa2V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\npWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0bvW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n\xfe\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0b\x18\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0bUW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0bZV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0br\x91\x90a\x12\x07V[\x91PP[\x91\x90PV[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x08\xb3WP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\f\x15\x83\x83a\r\x19V[\x90P`\x00a\x02\xfa\x84\x84a\r\x04V[`\x00\x81a\f1`\x02\x82a\x11FV[a\fCg\r\xe0\xb6\xb3\xa7d\x00\x00\x86a\x12)V[a\fM\x91\x90a\x11\xa2V[a\fW\x91\x90a\x11FV[\x93\x92PPPV[`\x00\x81a\fMg\r\xe0\xb6\xb3\xa7d\x00\x00\x85a\x12)V[\x80a\f\xe7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\f\xd7\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\f\xe7a\x0e\\V[PV[`\x00\x81\x83\x10\x15a\f\xfbWP\x80a\f\xfeV[P\x81[\x92\x91PPV[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\fM\x83\x85a\x12)V[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\r/`\x02\x82a\x11FV[a\fC\x84\x86a\x12)V[\x80\x82\x14a\x03\x83W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\r\xaa\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\x03\x83[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0fWW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0e\xf6\x92\x91` \x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x10\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fMW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fRV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\x00\x80`@\x83\x85\x03\x12\x15a\x0f{W`\x00\x80\xfd[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xcbW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xa6V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10{W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10fW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10\x00\xbc|\x80\x0e\x9b\x81\xa5<\x15\xde\x0edsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( 0 <=Int VV0_a_114b9705:Int - andBool ( 0 <=Int VV1_b_114b9705:Int - andBool ( VV0_a_114b9705:Int <=Int VV1_b_114b9705:Int - andBool ( VV1_b_114b9705:Int <=Int VV0_a_114b9705:Int - andBool ( CALLER_ID:Int - - JUMPI ( 4533 => 4451 ) ( bool2Word ( chop ( ( VV0_a_114b9705:Int *Int 1000000000000000000 ) ) <=Int ( maxUInt256 -Int ( VV1_b_114b9705:Int /Int 2 ) ) ) => VV1_b_114b9705:Int ) - ~> #pc [ JUMPI ] - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - .List - - - .List - - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01MW`\x005`\xe0\x1c\x80cf\xd9\xa9\xa0\x11a\x00\xc3W\x80c\xb5P\x8a\xa9\x11a\x00|W\x80c\xb5P\x8a\xa9\x14a\x02\x85W\x80c\xbaAO\xa6\x14a\x02\x8dW\x80c\xdd\xb4\xccD\x14a\x02\xa5W\x80c\xe2\f\x9fq\x14a\x02\xb8W\x80c\xfav&\xd4\x14a\x02\xc0W\x80c\xfd\xfb\xd8Y\x14a\x02\xcdW`\x00\x80\xfd[\x80cf\xd9\xa9\xa0\x14a\x02\x1aW\x80c\x85\"l\x81\x14a\x02/W\x80c\x91j\x17\xc6\x14a\x02DW\x80c\xa3\x14\xa1K\x14a\x02LW\x80c\xa5\xfa\xb3%\x14a\x02_W\x80c\xa7o\x92|\x14a\x02rW`\x00\x80\xfd[\x80c^<#\x14a\x01\xd1W\x80c?r\x86\xf4\x14a\x01\xd9W\x80cB\xf0C\xe8\x14a\x01\xe1W\x80cT\xbc\xa0\x17\x14a\x01\xf4W\x80c`\xe74\xec\x14a\x02\x07W`\x00\x80\xfd[\x80c\x14\x90X?\x14a\x01RW\x80c\x19\xe9\xb4K\x14a\x01gW\x80c\x1d6c\xf8\x14a\x01zW\x80c\x1e\xd7\x83\x1c\x14a\x01\x8dW\x80c5\x95\xffg\x14a\x01\xabW[`\x00\x80\xfd[a\x01ea\x01`6`\x04a\x0fhV[a\x02\xe0V[\x00[a\x01ea\x01u6`\x04a\x0fhV[a\x03\x0eV[a\x01ea\x01\x886`\x04a\x0fhV[a\x039V[a\x01\x95a\x03\x87V[`@Qa\x01\xa2\x91\x90a\x0f\x8aV[`@Q\x80\x91\x03\x90\xf3[a\x01ea\x01\xb96`\x04a\x0fhV[a\x03\xe9V[a\x01ea\x01\xcc6`\x04a\x0fhV[a\x04\x17V[a\x01\x95a\x04iV[a\x01\x95a\x04\xc9V[a\x01ea\x01\xef6`\x04a\x0fhV[a\x05)V[a\x01ea\x02\x026`\x04a\x0fhV[a\x055V[a\x01ea\x02\x156`\x04a\x0fhV[a\x05\x81V[a\x02\"a\x05\xfeV[`@Qa\x01\xa2\x91\x90a\x0f\xd7V[a\x027a\x06\xedV[`@Qa\x01\xa2\x91\x90a\x10\xb6V[a\x02\"a\x07\xbdV[a\x01ea\x02Z6`\x04a\x0fhV[a\x08\xa3V[a\x01ea\x02m6`\x04a\x0fhV[a\x08\xebV[a\x01ea\x02\x806`\x04a\x0fhV[a\x08\xf7V[a\x027a\t~V[a\x02\x95a\nNV[`@Q\x90\x15\x15\x81R` \x01a\x01\xa2V[a\x01ea\x02\xb36`\x04a\x0fhV[a\x0b{V[a\x01\x95a\x0b\xa9V[`\x07Ta\x02\x95\x90`\xff\x16\x81V[a\x01ea\x02\xdb6`\x04a\x0fhV[a\f\tV[`\x00a\x02\xec\x83\x83a\f#V[\x90P`\x00a\x02\xfa\x84\x84a\f^V[\x90Pa\x03\x08\x82\x82\x11\x15a\fsV[PPPPV[`\x00a\x03\x1a\x83\x83a\f\xeaV[\x90Pa\x034\x83\x82\x10\x15\x80\x15a\x03/WP\x82\x82\x10\x15[a\fsV[PPPV[\x81`\x00\x10\x80\x15a\x03IWP\x80`\x00\x10[\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x03l\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x10\x80\x15a\x03/WP\x81\x83\x10a\fsV[PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1W[PPPPP\x90P\x90V[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x03IWP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[`\x00a\x04,a\x04&\x84\x84a\f#V[\x83a\r\x19V[\x90P`\x00a\x04Ca\x04=\x85\x85a\f^V[\x84a\r\x04V[\x90Pa\x04Q\x84\x83\x11\x15a\fsV[a\x04]\x84\x82\x11\x15a\fsV[a\x03\x08\x82\x82\x11\x15a\fsV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\x03l\x83\x83a\r\x04V[\x81`\x00\x10\x80\x15a\x05EWP\x80`\x00\x10[\x15a\x03\x83Wa\x05V\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x05h\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x11\x15\x80\x15a\x03/WP\x81\x83\x11\x15a\fsV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xceW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xe2W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x05\xf2\x83\x83a\f\xeaV[\x90Pa\x034\x81\x83a\r9V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xccW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8eW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\"V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x070\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\\\x90a\x11hV[\x80\x15a\x07\xa9W\x80`\x1f\x10a\x07~Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xa9V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x8cW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x11V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x8bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08MW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xe1V[\x81`\x00\x10\x80\x15a\x08\xb3WP\x80`\x00\x10[\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x08\xdfa\x08\xd9\x84\x84a\r\x04V[\x83a\f^V[\x90Pa\x034\x83\x82a\r9V[a\x03Z\x82`\x00\x19a\x11FV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\tDW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\tXW=`\x00\x80>=`\x00\xfd[PPPP`\x00a\th\x83\x83a\f\xeaV[\x90Pa\x034a\tx\x82`\x01a\x11\xa2V[\x84a\r9V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\xc1\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xed\x90a\x11hV[\x80\x15a\n:W\x80`\x1f\x10a\n\x0fWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n:V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x1dW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t\xa2V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\npWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0bvW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n\xfe\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0b\x18\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0bUW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0bZV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0br\x91\x90a\x12\x07V[\x91PP[\x91\x90PV[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x08\xb3WP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\f\x15\x83\x83a\r\x19V[\x90P`\x00a\x02\xfa\x84\x84a\r\x04V[`\x00\x81a\f1`\x02\x82a\x11FV[a\fCg\r\xe0\xb6\xb3\xa7d\x00\x00\x86a\x12)V[a\fM\x91\x90a\x11\xa2V[a\fW\x91\x90a\x11FV[\x93\x92PPPV[`\x00\x81a\fMg\r\xe0\xb6\xb3\xa7d\x00\x00\x85a\x12)V[\x80a\f\xe7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\f\xd7\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\f\xe7a\x0e\\V[PV[`\x00\x81\x83\x10\x15a\f\xfbWP\x80a\f\xfeV[P\x81[\x92\x91PPV[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\fM\x83\x85a\x12)V[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\r/`\x02\x82a\x11FV[a\fC\x84\x86a\x12)V[\x80\x82\x14a\x03\x83W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\r\xaa\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\x03\x83[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0fWW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0e\xf6\x92\x91` \x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x10\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fMW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fRV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\x00\x80`@\x83\x85\x03\x12\x15a\x0f{W`\x00\x80\xfd[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xcbW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xa6V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10{W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10fW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10\x00\xbc|\x80\x0e\x9b\x81\xa5<\x15\xde\x0edsolcC\x00\x08\r\x003" - - - ( SetItem ( 1001 ) ( SetItem ( 1047 ) ( SetItem ( 1062 ) ( SetItem ( 1068 ) ( SetItem ( 1085 ) ( SetItem ( 1091 ) ( SetItem ( 1105 ) ( SetItem ( 1117 ) ( SetItem ( 1129 ) ( SetItem ( 1225 ) ( SetItem ( 124 ) ( SetItem ( 1321 ) ( SetItem ( 1333 ) ( SetItem ( 1349 ) ( SetItem ( 1366 ) ( SetItem ( 1384 ) ( SetItem ( 1409 ) ( SetItem ( 1486 ) ( SetItem ( 1506 ) ( SetItem ( 1522 ) ( SetItem ( 1534 ) ( SetItem ( 1570 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1740 ) ( SetItem ( 1764 ) ( SetItem ( 1773 ) ( SetItem ( 1809 ) ( SetItem ( 1840 ) ( SetItem ( 1884 ) ( SetItem ( 1918 ) ( SetItem ( 1932 ) ( SetItem ( 195 ) ( SetItem ( 1961 ) ( SetItem ( 1981 ) ( SetItem ( 2017 ) ( SetItem ( 2125 ) ( SetItem ( 2187 ) ( SetItem ( 2211 ) ( SetItem ( 2227 ) ( SetItem ( 2244 ) ( SetItem ( 2265 ) ( SetItem ( 2271 ) ( SetItem ( 2283 ) ( SetItem ( 2295 ) ( SetItem ( 2372 ) ( SetItem ( 2392 ) ( SetItem ( 2408 ) ( SetItem ( 2424 ) ( SetItem ( 2430 ) ( SetItem ( 2466 ) ( SetItem ( 2497 ) ( SetItem ( 2541 ) ( SetItem ( 2575 ) ( SetItem ( 2589 ) ( SetItem ( 2618 ) ( SetItem ( 2638 ) ( SetItem ( 2672 ) ( SetItem ( 277 ) ( SetItem ( 2814 ) ( SetItem ( 2840 ) ( SetItem ( 2901 ) ( SetItem ( 2906 ) ( SetItem ( 2930 ) ( SetItem ( 2934 ) ( SetItem ( 2939 ) ( SetItem ( 2985 ) ( SetItem ( 3081 ) ( SetItem ( 3093 ) ( SetItem ( 3107 ) ( SetItem ( 3121 ) ( SetItem ( 3139 ) ( SetItem ( 3149 ) ( SetItem ( 3159 ) ( SetItem ( 3166 ) ( SetItem ( 3187 ) ( SetItem ( 3287 ) ( SetItem ( 3303 ) ( SetItem ( 3306 ) ( SetItem ( 3323 ) ( SetItem ( 3326 ) ( SetItem ( 333 ) ( SetItem ( 3332 ) ( SetItem ( 3353 ) ( SetItem ( 3375 ) ( SetItem ( 338 ) ( SetItem ( 3385 ) ( SetItem ( 3498 ) ( SetItem ( 352 ) ( SetItem ( 357 ) ( SetItem ( 359 ) ( SetItem ( 3676 ) ( SetItem ( 373 ) ( SetItem ( 378 ) ( SetItem ( 3830 ) ( SetItem ( 3856 ) ( SetItem ( 3917 ) ( SetItem ( 392 ) ( SetItem ( 3922 ) ( SetItem ( 3927 ) ( SetItem ( 3944 ) ( SetItem ( 3963 ) ( SetItem ( 397 ) ( SetItem ( 3978 ) ( SetItem ( 4006 ) ( SetItem ( 4043 ) ( SetItem ( 405 ) ( SetItem ( 4055 ) ( SetItem ( 4095 ) ( SetItem ( 4156 ) ( SetItem ( 418 ) ( SetItem ( 4198 ) ( SetItem ( 4219 ) ( SetItem ( 4234 ) ( SetItem ( 4237 ) ( SetItem ( 4261 ) ( SetItem ( 427 ) ( SetItem ( 4278 ) ( SetItem ( 4317 ) ( SetItem ( 4356 ) ( SetItem ( 4387 ) ( SetItem ( 4400 ) ( SetItem ( 441 ) ( SetItem ( 4422 ) ( SetItem ( 4451 ) ( SetItem ( 4456 ) ( SetItem ( 446 ) ( SetItem ( 4476 ) ( SetItem ( 4508 ) ( SetItem ( 4514 ) ( SetItem ( 4533 ) ( SetItem ( 4538 ) ( SetItem ( 4573 ) ( SetItem ( 4587 ) ( SetItem ( 460 ) ( SetItem ( 4605 ) ( SetItem ( 4615 ) ( SetItem ( 4633 ) ( SetItem ( 4649 ) ( SetItem ( 465 ) ( SetItem ( 4675 ) ( SetItem ( 473 ) ( SetItem ( 481 ) ( SetItem ( 495 ) ( SetItem ( 500 ) ( SetItem ( 514 ) ( SetItem ( 519 ) ( SetItem ( 533 ) ( SetItem ( 538 ) ( SetItem ( 546 ) ( SetItem ( 559 ) ( SetItem ( 567 ) ( SetItem ( 580 ) ( SetItem ( 588 ) ( SetItem ( 602 ) ( SetItem ( 607 ) ( SetItem ( 621 ) ( SetItem ( 626 ) ( SetItem ( 640 ) ( SetItem ( 645 ) ( SetItem ( 653 ) ( SetItem ( 661 ) ( SetItem ( 677 ) ( SetItem ( 691 ) ( SetItem ( 696 ) ( SetItem ( 704 ) ( SetItem ( 717 ) ( SetItem ( 731 ) ( SetItem ( 736 ) ( SetItem ( 748 ) ( SetItem ( 762 ) ( SetItem ( 776 ) ( SetItem ( 782 ) ( SetItem ( 794 ) ( SetItem ( 815 ) ( SetItem ( 820 ) ( SetItem ( 825 ) ( SetItem ( 841 ) ( SetItem ( 858 ) ( SetItem ( 876 ) ( SetItem ( 899 ) ( SetItem ( 903 ) ( SetItem ( 961 ) SetItem ( 991 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\x14\x90X?" +Bytes #buf ( 32 , VV0_a_114b9705:Int ) +Bytes #buf ( 32 , VV1_b_114b9705:Int ) - - - 0 - - - ( 0 : ( ( chop ( ( VV0_a_114b9705:Int *Int 1000000000000000000 ) ) => ( chop ( ( VV0_a_114b9705:Int *Int 1000000000000000000 ) ) +Int ( VV1_b_114b9705:Int /Int 2 ) ) ) : ( ( ( VV1_b_114b9705:Int /Int 2 ) => VV1_b_114b9705:Int ) : ( ( 3149 => 3159 ) : ( ( VV1_b_114b9705:Int => 0 ) : ( ( 0 => VV1_b_114b9705:Int ) : ( ( VV1_b_114b9705:Int => VV0_a_114b9705:Int ) : ( ( VV0_a_114b9705:Int => 748 ) : ( ( 748 => 0 ) : ( ( 0 => VV1_b_114b9705:Int ) : ( ( VV1_b_114b9705:Int => VV0_a_114b9705:Int ) : ( ( VV0_a_114b9705:Int => 357 ) : ( ( 357 => 345004095 ) : ( ( 345004095 : .WordStack ) => .WordStack ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80" - - - ( 4525 => 4429 ) - - - #gas ( ( _VGAS +Int ( -493 => -551 ) ) ) - - - 3 - - - false - - - 0 - - ... - - - - .List - - - .Set - - - .Map - - ... - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01MW`\x005`\xe0\x1c\x80cf\xd9\xa9\xa0\x11a\x00\xc3W\x80c\xb5P\x8a\xa9\x11a\x00|W\x80c\xb5P\x8a\xa9\x14a\x02\x85W\x80c\xbaAO\xa6\x14a\x02\x8dW\x80c\xdd\xb4\xccD\x14a\x02\xa5W\x80c\xe2\f\x9fq\x14a\x02\xb8W\x80c\xfav&\xd4\x14a\x02\xc0W\x80c\xfd\xfb\xd8Y\x14a\x02\xcdW`\x00\x80\xfd[\x80cf\xd9\xa9\xa0\x14a\x02\x1aW\x80c\x85\"l\x81\x14a\x02/W\x80c\x91j\x17\xc6\x14a\x02DW\x80c\xa3\x14\xa1K\x14a\x02LW\x80c\xa5\xfa\xb3%\x14a\x02_W\x80c\xa7o\x92|\x14a\x02rW`\x00\x80\xfd[\x80c^<#\x14a\x01\xd1W\x80c?r\x86\xf4\x14a\x01\xd9W\x80cB\xf0C\xe8\x14a\x01\xe1W\x80cT\xbc\xa0\x17\x14a\x01\xf4W\x80c`\xe74\xec\x14a\x02\x07W`\x00\x80\xfd[\x80c\x14\x90X?\x14a\x01RW\x80c\x19\xe9\xb4K\x14a\x01gW\x80c\x1d6c\xf8\x14a\x01zW\x80c\x1e\xd7\x83\x1c\x14a\x01\x8dW\x80c5\x95\xffg\x14a\x01\xabW[`\x00\x80\xfd[a\x01ea\x01`6`\x04a\x0fhV[a\x02\xe0V[\x00[a\x01ea\x01u6`\x04a\x0fhV[a\x03\x0eV[a\x01ea\x01\x886`\x04a\x0fhV[a\x039V[a\x01\x95a\x03\x87V[`@Qa\x01\xa2\x91\x90a\x0f\x8aV[`@Q\x80\x91\x03\x90\xf3[a\x01ea\x01\xb96`\x04a\x0fhV[a\x03\xe9V[a\x01ea\x01\xcc6`\x04a\x0fhV[a\x04\x17V[a\x01\x95a\x04iV[a\x01\x95a\x04\xc9V[a\x01ea\x01\xef6`\x04a\x0fhV[a\x05)V[a\x01ea\x02\x026`\x04a\x0fhV[a\x055V[a\x01ea\x02\x156`\x04a\x0fhV[a\x05\x81V[a\x02\"a\x05\xfeV[`@Qa\x01\xa2\x91\x90a\x0f\xd7V[a\x027a\x06\xedV[`@Qa\x01\xa2\x91\x90a\x10\xb6V[a\x02\"a\x07\xbdV[a\x01ea\x02Z6`\x04a\x0fhV[a\x08\xa3V[a\x01ea\x02m6`\x04a\x0fhV[a\x08\xebV[a\x01ea\x02\x806`\x04a\x0fhV[a\x08\xf7V[a\x027a\t~V[a\x02\x95a\nNV[`@Q\x90\x15\x15\x81R` \x01a\x01\xa2V[a\x01ea\x02\xb36`\x04a\x0fhV[a\x0b{V[a\x01\x95a\x0b\xa9V[`\x07Ta\x02\x95\x90`\xff\x16\x81V[a\x01ea\x02\xdb6`\x04a\x0fhV[a\f\tV[`\x00a\x02\xec\x83\x83a\f#V[\x90P`\x00a\x02\xfa\x84\x84a\f^V[\x90Pa\x03\x08\x82\x82\x11\x15a\fsV[PPPPV[`\x00a\x03\x1a\x83\x83a\f\xeaV[\x90Pa\x034\x83\x82\x10\x15\x80\x15a\x03/WP\x82\x82\x10\x15[a\fsV[PPPV[\x81`\x00\x10\x80\x15a\x03IWP\x80`\x00\x10[\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x03l\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x10\x80\x15a\x03/WP\x81\x83\x10a\fsV[PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1W[PPPPP\x90P\x90V[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x03IWP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[`\x00a\x04,a\x04&\x84\x84a\f#V[\x83a\r\x19V[\x90P`\x00a\x04Ca\x04=\x85\x85a\f^V[\x84a\r\x04V[\x90Pa\x04Q\x84\x83\x11\x15a\fsV[a\x04]\x84\x82\x11\x15a\fsV[a\x03\x08\x82\x82\x11\x15a\fsV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\x03l\x83\x83a\r\x04V[\x81`\x00\x10\x80\x15a\x05EWP\x80`\x00\x10[\x15a\x03\x83Wa\x05V\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x05h\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x11\x15\x80\x15a\x03/WP\x81\x83\x11\x15a\fsV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xceW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xe2W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x05\xf2\x83\x83a\f\xeaV[\x90Pa\x034\x81\x83a\r9V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xccW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8eW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\"V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x070\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\\\x90a\x11hV[\x80\x15a\x07\xa9W\x80`\x1f\x10a\x07~Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xa9V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x8cW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x11V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x8bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08MW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xe1V[\x81`\x00\x10\x80\x15a\x08\xb3WP\x80`\x00\x10[\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x08\xdfa\x08\xd9\x84\x84a\r\x04V[\x83a\f^V[\x90Pa\x034\x83\x82a\r9V[a\x03Z\x82`\x00\x19a\x11FV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\tDW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\tXW=`\x00\x80>=`\x00\xfd[PPPP`\x00a\th\x83\x83a\f\xeaV[\x90Pa\x034a\tx\x82`\x01a\x11\xa2V[\x84a\r9V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\xc1\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xed\x90a\x11hV[\x80\x15a\n:W\x80`\x1f\x10a\n\x0fWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n:V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x1dW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t\xa2V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\npWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0bvW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n\xfe\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0b\x18\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0bUW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0bZV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0br\x91\x90a\x12\x07V[\x91PP[\x91\x90PV[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x08\xb3WP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\f\x15\x83\x83a\r\x19V[\x90P`\x00a\x02\xfa\x84\x84a\r\x04V[`\x00\x81a\f1`\x02\x82a\x11FV[a\fCg\r\xe0\xb6\xb3\xa7d\x00\x00\x86a\x12)V[a\fM\x91\x90a\x11\xa2V[a\fW\x91\x90a\x11FV[\x93\x92PPPV[`\x00\x81a\fMg\r\xe0\xb6\xb3\xa7d\x00\x00\x85a\x12)V[\x80a\f\xe7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\f\xd7\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\f\xe7a\x0e\\V[PV[`\x00\x81\x83\x10\x15a\f\xfbWP\x80a\f\xfeV[P\x81[\x92\x91PPV[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\fM\x83\x85a\x12)V[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\r/`\x02\x82a\x11FV[a\fC\x84\x86a\x12)V[\x80\x82\x14a\x03\x83W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\r\xaa\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\x03\x83[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0fWW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0e\xf6\x92\x91` \x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x10\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fMW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fRV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\x00\x80`@\x83\x85\x03\x12\x15a\x0f{W`\x00\x80\xfd[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xcbW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xa6V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10{W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10fW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10\x00\xbc|\x80\x0e\x9b\x81\xa5<\x15\xde\x0edsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( 0 <=Int VV0_a_114b9705:Int - andBool ( 0 <=Int VV1_b_114b9705:Int - andBool ( CALLER_ID:Int - - JUMPI ( 899 => 4675 ) bool2Word ( ( ( maxUInt256 /Int VV0_a_114b9705:Int ) ( notBool ( ( notBool ( ( VV0_a_114b9705:Int *Int VV1_b_114b9705:Int ) /Int 1000000000000000000 ) ==Int 0 ) andBool maxUInt256 /Word ( ( VV0_a_114b9705:Int *Int VV1_b_114b9705:Int ) /Int 1000000000000000000 ) #pc [ JUMPI ] - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - .List - - - .List - - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01MW`\x005`\xe0\x1c\x80cf\xd9\xa9\xa0\x11a\x00\xc3W\x80c\xb5P\x8a\xa9\x11a\x00|W\x80c\xb5P\x8a\xa9\x14a\x02\x85W\x80c\xbaAO\xa6\x14a\x02\x8dW\x80c\xdd\xb4\xccD\x14a\x02\xa5W\x80c\xe2\f\x9fq\x14a\x02\xb8W\x80c\xfav&\xd4\x14a\x02\xc0W\x80c\xfd\xfb\xd8Y\x14a\x02\xcdW`\x00\x80\xfd[\x80cf\xd9\xa9\xa0\x14a\x02\x1aW\x80c\x85\"l\x81\x14a\x02/W\x80c\x91j\x17\xc6\x14a\x02DW\x80c\xa3\x14\xa1K\x14a\x02LW\x80c\xa5\xfa\xb3%\x14a\x02_W\x80c\xa7o\x92|\x14a\x02rW`\x00\x80\xfd[\x80c^<#\x14a\x01\xd1W\x80c?r\x86\xf4\x14a\x01\xd9W\x80cB\xf0C\xe8\x14a\x01\xe1W\x80cT\xbc\xa0\x17\x14a\x01\xf4W\x80c`\xe74\xec\x14a\x02\x07W`\x00\x80\xfd[\x80c\x14\x90X?\x14a\x01RW\x80c\x19\xe9\xb4K\x14a\x01gW\x80c\x1d6c\xf8\x14a\x01zW\x80c\x1e\xd7\x83\x1c\x14a\x01\x8dW\x80c5\x95\xffg\x14a\x01\xabW[`\x00\x80\xfd[a\x01ea\x01`6`\x04a\x0fhV[a\x02\xe0V[\x00[a\x01ea\x01u6`\x04a\x0fhV[a\x03\x0eV[a\x01ea\x01\x886`\x04a\x0fhV[a\x039V[a\x01\x95a\x03\x87V[`@Qa\x01\xa2\x91\x90a\x0f\x8aV[`@Q\x80\x91\x03\x90\xf3[a\x01ea\x01\xb96`\x04a\x0fhV[a\x03\xe9V[a\x01ea\x01\xcc6`\x04a\x0fhV[a\x04\x17V[a\x01\x95a\x04iV[a\x01\x95a\x04\xc9V[a\x01ea\x01\xef6`\x04a\x0fhV[a\x05)V[a\x01ea\x02\x026`\x04a\x0fhV[a\x055V[a\x01ea\x02\x156`\x04a\x0fhV[a\x05\x81V[a\x02\"a\x05\xfeV[`@Qa\x01\xa2\x91\x90a\x0f\xd7V[a\x027a\x06\xedV[`@Qa\x01\xa2\x91\x90a\x10\xb6V[a\x02\"a\x07\xbdV[a\x01ea\x02Z6`\x04a\x0fhV[a\x08\xa3V[a\x01ea\x02m6`\x04a\x0fhV[a\x08\xebV[a\x01ea\x02\x806`\x04a\x0fhV[a\x08\xf7V[a\x027a\t~V[a\x02\x95a\nNV[`@Q\x90\x15\x15\x81R` \x01a\x01\xa2V[a\x01ea\x02\xb36`\x04a\x0fhV[a\x0b{V[a\x01\x95a\x0b\xa9V[`\x07Ta\x02\x95\x90`\xff\x16\x81V[a\x01ea\x02\xdb6`\x04a\x0fhV[a\f\tV[`\x00a\x02\xec\x83\x83a\f#V[\x90P`\x00a\x02\xfa\x84\x84a\f^V[\x90Pa\x03\x08\x82\x82\x11\x15a\fsV[PPPPV[`\x00a\x03\x1a\x83\x83a\f\xeaV[\x90Pa\x034\x83\x82\x10\x15\x80\x15a\x03/WP\x82\x82\x10\x15[a\fsV[PPPV[\x81`\x00\x10\x80\x15a\x03IWP\x80`\x00\x10[\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x03l\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x10\x80\x15a\x03/WP\x81\x83\x10a\fsV[PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1W[PPPPP\x90P\x90V[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x03IWP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[`\x00a\x04,a\x04&\x84\x84a\f#V[\x83a\r\x19V[\x90P`\x00a\x04Ca\x04=\x85\x85a\f^V[\x84a\r\x04V[\x90Pa\x04Q\x84\x83\x11\x15a\fsV[a\x04]\x84\x82\x11\x15a\fsV[a\x03\x08\x82\x82\x11\x15a\fsV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\x03l\x83\x83a\r\x04V[\x81`\x00\x10\x80\x15a\x05EWP\x80`\x00\x10[\x15a\x03\x83Wa\x05V\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x05h\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x11\x15\x80\x15a\x03/WP\x81\x83\x11\x15a\fsV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xceW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xe2W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x05\xf2\x83\x83a\f\xeaV[\x90Pa\x034\x81\x83a\r9V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xccW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8eW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\"V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x070\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\\\x90a\x11hV[\x80\x15a\x07\xa9W\x80`\x1f\x10a\x07~Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xa9V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x8cW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x11V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x8bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08MW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xe1V[\x81`\x00\x10\x80\x15a\x08\xb3WP\x80`\x00\x10[\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x08\xdfa\x08\xd9\x84\x84a\r\x04V[\x83a\f^V[\x90Pa\x034\x83\x82a\r9V[a\x03Z\x82`\x00\x19a\x11FV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\tDW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\tXW=`\x00\x80>=`\x00\xfd[PPPP`\x00a\th\x83\x83a\f\xeaV[\x90Pa\x034a\tx\x82`\x01a\x11\xa2V[\x84a\r9V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\xc1\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xed\x90a\x11hV[\x80\x15a\n:W\x80`\x1f\x10a\n\x0fWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n:V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x1dW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t\xa2V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\npWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0bvW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n\xfe\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0b\x18\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0bUW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0bZV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0br\x91\x90a\x12\x07V[\x91PP[\x91\x90PV[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x08\xb3WP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\f\x15\x83\x83a\r\x19V[\x90P`\x00a\x02\xfa\x84\x84a\r\x04V[`\x00\x81a\f1`\x02\x82a\x11FV[a\fCg\r\xe0\xb6\xb3\xa7d\x00\x00\x86a\x12)V[a\fM\x91\x90a\x11\xa2V[a\fW\x91\x90a\x11FV[\x93\x92PPPV[`\x00\x81a\fMg\r\xe0\xb6\xb3\xa7d\x00\x00\x85a\x12)V[\x80a\f\xe7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\f\xd7\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\f\xe7a\x0e\\V[PV[`\x00\x81\x83\x10\x15a\f\xfbWP\x80a\f\xfeV[P\x81[\x92\x91PPV[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\fM\x83\x85a\x12)V[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\r/`\x02\x82a\x11FV[a\fC\x84\x86a\x12)V[\x80\x82\x14a\x03\x83W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\r\xaa\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\x03\x83[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0fWW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0e\xf6\x92\x91` \x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x10\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fMW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fRV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\x00\x80`@\x83\x85\x03\x12\x15a\x0f{W`\x00\x80\xfd[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xcbW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xa6V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10{W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10fW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10\x00\xbc|\x80\x0e\x9b\x81\xa5<\x15\xde\x0edsolcC\x00\x08\r\x003" - - - ( SetItem ( 1001 ) ( SetItem ( 1047 ) ( SetItem ( 1062 ) ( SetItem ( 1068 ) ( SetItem ( 1085 ) ( SetItem ( 1091 ) ( SetItem ( 1105 ) ( SetItem ( 1117 ) ( SetItem ( 1129 ) ( SetItem ( 1225 ) ( SetItem ( 124 ) ( SetItem ( 1321 ) ( SetItem ( 1333 ) ( SetItem ( 1349 ) ( SetItem ( 1366 ) ( SetItem ( 1384 ) ( SetItem ( 1409 ) ( SetItem ( 1486 ) ( SetItem ( 1506 ) ( SetItem ( 1522 ) ( SetItem ( 1534 ) ( SetItem ( 1570 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1740 ) ( SetItem ( 1764 ) ( SetItem ( 1773 ) ( SetItem ( 1809 ) ( SetItem ( 1840 ) ( SetItem ( 1884 ) ( SetItem ( 1918 ) ( SetItem ( 1932 ) ( SetItem ( 195 ) ( SetItem ( 1961 ) ( SetItem ( 1981 ) ( SetItem ( 2017 ) ( SetItem ( 2125 ) ( SetItem ( 2187 ) ( SetItem ( 2211 ) ( SetItem ( 2227 ) ( SetItem ( 2244 ) ( SetItem ( 2265 ) ( SetItem ( 2271 ) ( SetItem ( 2283 ) ( SetItem ( 2295 ) ( SetItem ( 2372 ) ( SetItem ( 2392 ) ( SetItem ( 2408 ) ( SetItem ( 2424 ) ( SetItem ( 2430 ) ( SetItem ( 2466 ) ( SetItem ( 2497 ) ( SetItem ( 2541 ) ( SetItem ( 2575 ) ( SetItem ( 2589 ) ( SetItem ( 2618 ) ( SetItem ( 2638 ) ( SetItem ( 2672 ) ( SetItem ( 277 ) ( SetItem ( 2814 ) ( SetItem ( 2840 ) ( SetItem ( 2901 ) ( SetItem ( 2906 ) ( SetItem ( 2930 ) ( SetItem ( 2934 ) ( SetItem ( 2939 ) ( SetItem ( 2985 ) ( SetItem ( 3081 ) ( SetItem ( 3093 ) ( SetItem ( 3107 ) ( SetItem ( 3121 ) ( SetItem ( 3139 ) ( SetItem ( 3149 ) ( SetItem ( 3159 ) ( SetItem ( 3166 ) ( SetItem ( 3187 ) ( SetItem ( 3287 ) ( SetItem ( 3303 ) ( SetItem ( 3306 ) ( SetItem ( 3323 ) ( SetItem ( 3326 ) ( SetItem ( 333 ) ( SetItem ( 3332 ) ( SetItem ( 3353 ) ( SetItem ( 3375 ) ( SetItem ( 338 ) ( SetItem ( 3385 ) ( SetItem ( 3498 ) ( SetItem ( 352 ) ( SetItem ( 357 ) ( SetItem ( 359 ) ( SetItem ( 3676 ) ( SetItem ( 373 ) ( SetItem ( 378 ) ( SetItem ( 3830 ) ( SetItem ( 3856 ) ( SetItem ( 3917 ) ( SetItem ( 392 ) ( SetItem ( 3922 ) ( SetItem ( 3927 ) ( SetItem ( 3944 ) ( SetItem ( 3963 ) ( SetItem ( 397 ) ( SetItem ( 3978 ) ( SetItem ( 4006 ) ( SetItem ( 4043 ) ( SetItem ( 405 ) ( SetItem ( 4055 ) ( SetItem ( 4095 ) ( SetItem ( 4156 ) ( SetItem ( 418 ) ( SetItem ( 4198 ) ( SetItem ( 4219 ) ( SetItem ( 4234 ) ( SetItem ( 4237 ) ( SetItem ( 4261 ) ( SetItem ( 427 ) ( SetItem ( 4278 ) ( SetItem ( 4317 ) ( SetItem ( 4356 ) ( SetItem ( 4387 ) ( SetItem ( 4400 ) ( SetItem ( 441 ) ( SetItem ( 4422 ) ( SetItem ( 4451 ) ( SetItem ( 4456 ) ( SetItem ( 446 ) ( SetItem ( 4476 ) ( SetItem ( 4508 ) ( SetItem ( 4514 ) ( SetItem ( 4533 ) ( SetItem ( 4538 ) ( SetItem ( 4573 ) ( SetItem ( 4587 ) ( SetItem ( 460 ) ( SetItem ( 4605 ) ( SetItem ( 4615 ) ( SetItem ( 4633 ) ( SetItem ( 4649 ) ( SetItem ( 465 ) ( SetItem ( 4675 ) ( SetItem ( 473 ) ( SetItem ( 481 ) ( SetItem ( 495 ) ( SetItem ( 500 ) ( SetItem ( 514 ) ( SetItem ( 519 ) ( SetItem ( 533 ) ( SetItem ( 538 ) ( SetItem ( 546 ) ( SetItem ( 559 ) ( SetItem ( 567 ) ( SetItem ( 580 ) ( SetItem ( 588 ) ( SetItem ( 602 ) ( SetItem ( 607 ) ( SetItem ( 621 ) ( SetItem ( 626 ) ( SetItem ( 640 ) ( SetItem ( 645 ) ( SetItem ( 653 ) ( SetItem ( 661 ) ( SetItem ( 677 ) ( SetItem ( 691 ) ( SetItem ( 696 ) ( SetItem ( 704 ) ( SetItem ( 717 ) ( SetItem ( 731 ) ( SetItem ( 736 ) ( SetItem ( 748 ) ( SetItem ( 762 ) ( SetItem ( 776 ) ( SetItem ( 782 ) ( SetItem ( 794 ) ( SetItem ( 815 ) ( SetItem ( 820 ) ( SetItem ( 825 ) ( SetItem ( 841 ) ( SetItem ( 858 ) ( SetItem ( 876 ) ( SetItem ( 899 ) ( SetItem ( 903 ) ( SetItem ( 961 ) SetItem ( 991 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xa3\x14\xa1K" +Bytes #buf ( 32 , VV0_a_114b9705:Int ) +Bytes #buf ( 32 , VV1_b_114b9705:Int ) - - - 0 - - - ( ( VV1_b_114b9705:Int => 0 ) : ( ( VV0_a_114b9705:Int => ( ( VV0_a_114b9705:Int *Int VV1_b_114b9705:Int ) /Int 1000000000000000000 ) ) : ( ( 357 => 1000000000000000000 ) : ( ( 2736038219 => 3149 ) : ( .WordStack => ( VV1_b_114b9705:Int : ( 0 : ( VV1_b_114b9705:Int : ( ( ( VV0_a_114b9705:Int *Int VV1_b_114b9705:Int ) /Int 1000000000000000000 ) : ( 2271 : ( 0 : ( VV1_b_114b9705:Int : ( VV0_a_114b9705:Int : ( 357 : ( 2736038219 : .WordStack ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80" - - - ( 2250 => 4667 ) - - - #gas ( ( _VGAS +Int ( -462 => -761 ) ) ) - - - 3 - - - false - - - 0 - - ... - - - - .List - - - .Set - - - .Map - - ... - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01MW`\x005`\xe0\x1c\x80cf\xd9\xa9\xa0\x11a\x00\xc3W\x80c\xb5P\x8a\xa9\x11a\x00|W\x80c\xb5P\x8a\xa9\x14a\x02\x85W\x80c\xbaAO\xa6\x14a\x02\x8dW\x80c\xdd\xb4\xccD\x14a\x02\xa5W\x80c\xe2\f\x9fq\x14a\x02\xb8W\x80c\xfav&\xd4\x14a\x02\xc0W\x80c\xfd\xfb\xd8Y\x14a\x02\xcdW`\x00\x80\xfd[\x80cf\xd9\xa9\xa0\x14a\x02\x1aW\x80c\x85\"l\x81\x14a\x02/W\x80c\x91j\x17\xc6\x14a\x02DW\x80c\xa3\x14\xa1K\x14a\x02LW\x80c\xa5\xfa\xb3%\x14a\x02_W\x80c\xa7o\x92|\x14a\x02rW`\x00\x80\xfd[\x80c^<#\x14a\x01\xd1W\x80c?r\x86\xf4\x14a\x01\xd9W\x80cB\xf0C\xe8\x14a\x01\xe1W\x80cT\xbc\xa0\x17\x14a\x01\xf4W\x80c`\xe74\xec\x14a\x02\x07W`\x00\x80\xfd[\x80c\x14\x90X?\x14a\x01RW\x80c\x19\xe9\xb4K\x14a\x01gW\x80c\x1d6c\xf8\x14a\x01zW\x80c\x1e\xd7\x83\x1c\x14a\x01\x8dW\x80c5\x95\xffg\x14a\x01\xabW[`\x00\x80\xfd[a\x01ea\x01`6`\x04a\x0fhV[a\x02\xe0V[\x00[a\x01ea\x01u6`\x04a\x0fhV[a\x03\x0eV[a\x01ea\x01\x886`\x04a\x0fhV[a\x039V[a\x01\x95a\x03\x87V[`@Qa\x01\xa2\x91\x90a\x0f\x8aV[`@Q\x80\x91\x03\x90\xf3[a\x01ea\x01\xb96`\x04a\x0fhV[a\x03\xe9V[a\x01ea\x01\xcc6`\x04a\x0fhV[a\x04\x17V[a\x01\x95a\x04iV[a\x01\x95a\x04\xc9V[a\x01ea\x01\xef6`\x04a\x0fhV[a\x05)V[a\x01ea\x02\x026`\x04a\x0fhV[a\x055V[a\x01ea\x02\x156`\x04a\x0fhV[a\x05\x81V[a\x02\"a\x05\xfeV[`@Qa\x01\xa2\x91\x90a\x0f\xd7V[a\x027a\x06\xedV[`@Qa\x01\xa2\x91\x90a\x10\xb6V[a\x02\"a\x07\xbdV[a\x01ea\x02Z6`\x04a\x0fhV[a\x08\xa3V[a\x01ea\x02m6`\x04a\x0fhV[a\x08\xebV[a\x01ea\x02\x806`\x04a\x0fhV[a\x08\xf7V[a\x027a\t~V[a\x02\x95a\nNV[`@Q\x90\x15\x15\x81R` \x01a\x01\xa2V[a\x01ea\x02\xb36`\x04a\x0fhV[a\x0b{V[a\x01\x95a\x0b\xa9V[`\x07Ta\x02\x95\x90`\xff\x16\x81V[a\x01ea\x02\xdb6`\x04a\x0fhV[a\f\tV[`\x00a\x02\xec\x83\x83a\f#V[\x90P`\x00a\x02\xfa\x84\x84a\f^V[\x90Pa\x03\x08\x82\x82\x11\x15a\fsV[PPPPV[`\x00a\x03\x1a\x83\x83a\f\xeaV[\x90Pa\x034\x83\x82\x10\x15\x80\x15a\x03/WP\x82\x82\x10\x15[a\fsV[PPPV[\x81`\x00\x10\x80\x15a\x03IWP\x80`\x00\x10[\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x03l\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x10\x80\x15a\x03/WP\x81\x83\x10a\fsV[PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1W[PPPPP\x90P\x90V[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x03IWP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[`\x00a\x04,a\x04&\x84\x84a\f#V[\x83a\r\x19V[\x90P`\x00a\x04Ca\x04=\x85\x85a\f^V[\x84a\r\x04V[\x90Pa\x04Q\x84\x83\x11\x15a\fsV[a\x04]\x84\x82\x11\x15a\fsV[a\x03\x08\x82\x82\x11\x15a\fsV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\x03l\x83\x83a\r\x04V[\x81`\x00\x10\x80\x15a\x05EWP\x80`\x00\x10[\x15a\x03\x83Wa\x05V\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x05h\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x11\x15\x80\x15a\x03/WP\x81\x83\x11\x15a\fsV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xceW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xe2W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x05\xf2\x83\x83a\f\xeaV[\x90Pa\x034\x81\x83a\r9V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xccW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8eW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\"V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x070\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\\\x90a\x11hV[\x80\x15a\x07\xa9W\x80`\x1f\x10a\x07~Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xa9V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x8cW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x11V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x8bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08MW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xe1V[\x81`\x00\x10\x80\x15a\x08\xb3WP\x80`\x00\x10[\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x08\xdfa\x08\xd9\x84\x84a\r\x04V[\x83a\f^V[\x90Pa\x034\x83\x82a\r9V[a\x03Z\x82`\x00\x19a\x11FV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\tDW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\tXW=`\x00\x80>=`\x00\xfd[PPPP`\x00a\th\x83\x83a\f\xeaV[\x90Pa\x034a\tx\x82`\x01a\x11\xa2V[\x84a\r9V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\xc1\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xed\x90a\x11hV[\x80\x15a\n:W\x80`\x1f\x10a\n\x0fWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n:V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x1dW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t\xa2V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\npWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0bvW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n\xfe\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0b\x18\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0bUW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0bZV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0br\x91\x90a\x12\x07V[\x91PP[\x91\x90PV[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x08\xb3WP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\f\x15\x83\x83a\r\x19V[\x90P`\x00a\x02\xfa\x84\x84a\r\x04V[`\x00\x81a\f1`\x02\x82a\x11FV[a\fCg\r\xe0\xb6\xb3\xa7d\x00\x00\x86a\x12)V[a\fM\x91\x90a\x11\xa2V[a\fW\x91\x90a\x11FV[\x93\x92PPPV[`\x00\x81a\fMg\r\xe0\xb6\xb3\xa7d\x00\x00\x85a\x12)V[\x80a\f\xe7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\f\xd7\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\f\xe7a\x0e\\V[PV[`\x00\x81\x83\x10\x15a\f\xfbWP\x80a\f\xfeV[P\x81[\x92\x91PPV[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\fM\x83\x85a\x12)V[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\r/`\x02\x82a\x11FV[a\fC\x84\x86a\x12)V[\x80\x82\x14a\x03\x83W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\r\xaa\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\x03\x83[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0fWW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0e\xf6\x92\x91` \x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x10\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fMW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fRV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\x00\x80`@\x83\x85\x03\x12\x15a\x0f{W`\x00\x80\xfd[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xcbW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xa6V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10{W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10fW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10\x00\xbc|\x80\x0e\x9b\x81\xa5<\x15\xde\x0edsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( 0 - - JUMPI 899 bool2Word ( ( VV1_b_114b9705:Int <=Int 0 => ( maxUInt256 /Int VV0_a_114b9705:Int ) #pc [ JUMPI ] - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - .List - - - .List - - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01MW`\x005`\xe0\x1c\x80cf\xd9\xa9\xa0\x11a\x00\xc3W\x80c\xb5P\x8a\xa9\x11a\x00|W\x80c\xb5P\x8a\xa9\x14a\x02\x85W\x80c\xbaAO\xa6\x14a\x02\x8dW\x80c\xdd\xb4\xccD\x14a\x02\xa5W\x80c\xe2\f\x9fq\x14a\x02\xb8W\x80c\xfav&\xd4\x14a\x02\xc0W\x80c\xfd\xfb\xd8Y\x14a\x02\xcdW`\x00\x80\xfd[\x80cf\xd9\xa9\xa0\x14a\x02\x1aW\x80c\x85\"l\x81\x14a\x02/W\x80c\x91j\x17\xc6\x14a\x02DW\x80c\xa3\x14\xa1K\x14a\x02LW\x80c\xa5\xfa\xb3%\x14a\x02_W\x80c\xa7o\x92|\x14a\x02rW`\x00\x80\xfd[\x80c^<#\x14a\x01\xd1W\x80c?r\x86\xf4\x14a\x01\xd9W\x80cB\xf0C\xe8\x14a\x01\xe1W\x80cT\xbc\xa0\x17\x14a\x01\xf4W\x80c`\xe74\xec\x14a\x02\x07W`\x00\x80\xfd[\x80c\x14\x90X?\x14a\x01RW\x80c\x19\xe9\xb4K\x14a\x01gW\x80c\x1d6c\xf8\x14a\x01zW\x80c\x1e\xd7\x83\x1c\x14a\x01\x8dW\x80c5\x95\xffg\x14a\x01\xabW[`\x00\x80\xfd[a\x01ea\x01`6`\x04a\x0fhV[a\x02\xe0V[\x00[a\x01ea\x01u6`\x04a\x0fhV[a\x03\x0eV[a\x01ea\x01\x886`\x04a\x0fhV[a\x039V[a\x01\x95a\x03\x87V[`@Qa\x01\xa2\x91\x90a\x0f\x8aV[`@Q\x80\x91\x03\x90\xf3[a\x01ea\x01\xb96`\x04a\x0fhV[a\x03\xe9V[a\x01ea\x01\xcc6`\x04a\x0fhV[a\x04\x17V[a\x01\x95a\x04iV[a\x01\x95a\x04\xc9V[a\x01ea\x01\xef6`\x04a\x0fhV[a\x05)V[a\x01ea\x02\x026`\x04a\x0fhV[a\x055V[a\x01ea\x02\x156`\x04a\x0fhV[a\x05\x81V[a\x02\"a\x05\xfeV[`@Qa\x01\xa2\x91\x90a\x0f\xd7V[a\x027a\x06\xedV[`@Qa\x01\xa2\x91\x90a\x10\xb6V[a\x02\"a\x07\xbdV[a\x01ea\x02Z6`\x04a\x0fhV[a\x08\xa3V[a\x01ea\x02m6`\x04a\x0fhV[a\x08\xebV[a\x01ea\x02\x806`\x04a\x0fhV[a\x08\xf7V[a\x027a\t~V[a\x02\x95a\nNV[`@Q\x90\x15\x15\x81R` \x01a\x01\xa2V[a\x01ea\x02\xb36`\x04a\x0fhV[a\x0b{V[a\x01\x95a\x0b\xa9V[`\x07Ta\x02\x95\x90`\xff\x16\x81V[a\x01ea\x02\xdb6`\x04a\x0fhV[a\f\tV[`\x00a\x02\xec\x83\x83a\f#V[\x90P`\x00a\x02\xfa\x84\x84a\f^V[\x90Pa\x03\x08\x82\x82\x11\x15a\fsV[PPPPV[`\x00a\x03\x1a\x83\x83a\f\xeaV[\x90Pa\x034\x83\x82\x10\x15\x80\x15a\x03/WP\x82\x82\x10\x15[a\fsV[PPPV[\x81`\x00\x10\x80\x15a\x03IWP\x80`\x00\x10[\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x03l\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x10\x80\x15a\x03/WP\x81\x83\x10a\fsV[PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1W[PPPPP\x90P\x90V[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x03IWP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[`\x00a\x04,a\x04&\x84\x84a\f#V[\x83a\r\x19V[\x90P`\x00a\x04Ca\x04=\x85\x85a\f^V[\x84a\r\x04V[\x90Pa\x04Q\x84\x83\x11\x15a\fsV[a\x04]\x84\x82\x11\x15a\fsV[a\x03\x08\x82\x82\x11\x15a\fsV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\x03l\x83\x83a\r\x04V[\x81`\x00\x10\x80\x15a\x05EWP\x80`\x00\x10[\x15a\x03\x83Wa\x05V\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x05h\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x11\x15\x80\x15a\x03/WP\x81\x83\x11\x15a\fsV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xceW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xe2W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x05\xf2\x83\x83a\f\xeaV[\x90Pa\x034\x81\x83a\r9V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xccW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8eW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\"V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x070\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\\\x90a\x11hV[\x80\x15a\x07\xa9W\x80`\x1f\x10a\x07~Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xa9V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x8cW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x11V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x8bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08MW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xe1V[\x81`\x00\x10\x80\x15a\x08\xb3WP\x80`\x00\x10[\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x08\xdfa\x08\xd9\x84\x84a\r\x04V[\x83a\f^V[\x90Pa\x034\x83\x82a\r9V[a\x03Z\x82`\x00\x19a\x11FV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\tDW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\tXW=`\x00\x80>=`\x00\xfd[PPPP`\x00a\th\x83\x83a\f\xeaV[\x90Pa\x034a\tx\x82`\x01a\x11\xa2V[\x84a\r9V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\xc1\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xed\x90a\x11hV[\x80\x15a\n:W\x80`\x1f\x10a\n\x0fWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n:V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x1dW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t\xa2V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\npWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0bvW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n\xfe\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0b\x18\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0bUW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0bZV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0br\x91\x90a\x12\x07V[\x91PP[\x91\x90PV[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x08\xb3WP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\f\x15\x83\x83a\r\x19V[\x90P`\x00a\x02\xfa\x84\x84a\r\x04V[`\x00\x81a\f1`\x02\x82a\x11FV[a\fCg\r\xe0\xb6\xb3\xa7d\x00\x00\x86a\x12)V[a\fM\x91\x90a\x11\xa2V[a\fW\x91\x90a\x11FV[\x93\x92PPPV[`\x00\x81a\fMg\r\xe0\xb6\xb3\xa7d\x00\x00\x85a\x12)V[\x80a\f\xe7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\f\xd7\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\f\xe7a\x0e\\V[PV[`\x00\x81\x83\x10\x15a\f\xfbWP\x80a\f\xfeV[P\x81[\x92\x91PPV[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\fM\x83\x85a\x12)V[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\r/`\x02\x82a\x11FV[a\fC\x84\x86a\x12)V[\x80\x82\x14a\x03\x83W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\r\xaa\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\x03\x83[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0fWW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0e\xf6\x92\x91` \x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x10\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fMW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fRV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\x00\x80`@\x83\x85\x03\x12\x15a\x0f{W`\x00\x80\xfd[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xcbW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xa6V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10{W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10fW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10\x00\xbc|\x80\x0e\x9b\x81\xa5<\x15\xde\x0edsolcC\x00\x08\r\x003" - - - ( SetItem ( 1001 ) ( SetItem ( 1047 ) ( SetItem ( 1062 ) ( SetItem ( 1068 ) ( SetItem ( 1085 ) ( SetItem ( 1091 ) ( SetItem ( 1105 ) ( SetItem ( 1117 ) ( SetItem ( 1129 ) ( SetItem ( 1225 ) ( SetItem ( 124 ) ( SetItem ( 1321 ) ( SetItem ( 1333 ) ( SetItem ( 1349 ) ( SetItem ( 1366 ) ( SetItem ( 1384 ) ( SetItem ( 1409 ) ( SetItem ( 1486 ) ( SetItem ( 1506 ) ( SetItem ( 1522 ) ( SetItem ( 1534 ) ( SetItem ( 1570 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1740 ) ( SetItem ( 1764 ) ( SetItem ( 1773 ) ( SetItem ( 1809 ) ( SetItem ( 1840 ) ( SetItem ( 1884 ) ( SetItem ( 1918 ) ( SetItem ( 1932 ) ( SetItem ( 195 ) ( SetItem ( 1961 ) ( SetItem ( 1981 ) ( SetItem ( 2017 ) ( SetItem ( 2125 ) ( SetItem ( 2187 ) ( SetItem ( 2211 ) ( SetItem ( 2227 ) ( SetItem ( 2244 ) ( SetItem ( 2265 ) ( SetItem ( 2271 ) ( SetItem ( 2283 ) ( SetItem ( 2295 ) ( SetItem ( 2372 ) ( SetItem ( 2392 ) ( SetItem ( 2408 ) ( SetItem ( 2424 ) ( SetItem ( 2430 ) ( SetItem ( 2466 ) ( SetItem ( 2497 ) ( SetItem ( 2541 ) ( SetItem ( 2575 ) ( SetItem ( 2589 ) ( SetItem ( 2618 ) ( SetItem ( 2638 ) ( SetItem ( 2672 ) ( SetItem ( 277 ) ( SetItem ( 2814 ) ( SetItem ( 2840 ) ( SetItem ( 2901 ) ( SetItem ( 2906 ) ( SetItem ( 2930 ) ( SetItem ( 2934 ) ( SetItem ( 2939 ) ( SetItem ( 2985 ) ( SetItem ( 3081 ) ( SetItem ( 3093 ) ( SetItem ( 3107 ) ( SetItem ( 3121 ) ( SetItem ( 3139 ) ( SetItem ( 3149 ) ( SetItem ( 3159 ) ( SetItem ( 3166 ) ( SetItem ( 3187 ) ( SetItem ( 3287 ) ( SetItem ( 3303 ) ( SetItem ( 3306 ) ( SetItem ( 3323 ) ( SetItem ( 3326 ) ( SetItem ( 333 ) ( SetItem ( 3332 ) ( SetItem ( 3353 ) ( SetItem ( 3375 ) ( SetItem ( 338 ) ( SetItem ( 3385 ) ( SetItem ( 3498 ) ( SetItem ( 352 ) ( SetItem ( 357 ) ( SetItem ( 359 ) ( SetItem ( 3676 ) ( SetItem ( 373 ) ( SetItem ( 378 ) ( SetItem ( 3830 ) ( SetItem ( 3856 ) ( SetItem ( 3917 ) ( SetItem ( 392 ) ( SetItem ( 3922 ) ( SetItem ( 3927 ) ( SetItem ( 3944 ) ( SetItem ( 3963 ) ( SetItem ( 397 ) ( SetItem ( 3978 ) ( SetItem ( 4006 ) ( SetItem ( 4043 ) ( SetItem ( 405 ) ( SetItem ( 4055 ) ( SetItem ( 4095 ) ( SetItem ( 4156 ) ( SetItem ( 418 ) ( SetItem ( 4198 ) ( SetItem ( 4219 ) ( SetItem ( 4234 ) ( SetItem ( 4237 ) ( SetItem ( 4261 ) ( SetItem ( 427 ) ( SetItem ( 4278 ) ( SetItem ( 4317 ) ( SetItem ( 4356 ) ( SetItem ( 4387 ) ( SetItem ( 4400 ) ( SetItem ( 441 ) ( SetItem ( 4422 ) ( SetItem ( 4451 ) ( SetItem ( 4456 ) ( SetItem ( 446 ) ( SetItem ( 4476 ) ( SetItem ( 4508 ) ( SetItem ( 4514 ) ( SetItem ( 4533 ) ( SetItem ( 4538 ) ( SetItem ( 4573 ) ( SetItem ( 4587 ) ( SetItem ( 460 ) ( SetItem ( 4605 ) ( SetItem ( 4615 ) ( SetItem ( 4633 ) ( SetItem ( 4649 ) ( SetItem ( 465 ) ( SetItem ( 4675 ) ( SetItem ( 473 ) ( SetItem ( 481 ) ( SetItem ( 495 ) ( SetItem ( 500 ) ( SetItem ( 514 ) ( SetItem ( 519 ) ( SetItem ( 533 ) ( SetItem ( 538 ) ( SetItem ( 546 ) ( SetItem ( 559 ) ( SetItem ( 567 ) ( SetItem ( 580 ) ( SetItem ( 588 ) ( SetItem ( 602 ) ( SetItem ( 607 ) ( SetItem ( 621 ) ( SetItem ( 626 ) ( SetItem ( 640 ) ( SetItem ( 645 ) ( SetItem ( 653 ) ( SetItem ( 661 ) ( SetItem ( 677 ) ( SetItem ( 691 ) ( SetItem ( 696 ) ( SetItem ( 704 ) ( SetItem ( 717 ) ( SetItem ( 731 ) ( SetItem ( 736 ) ( SetItem ( 748 ) ( SetItem ( 762 ) ( SetItem ( 776 ) ( SetItem ( 782 ) ( SetItem ( 794 ) ( SetItem ( 815 ) ( SetItem ( 820 ) ( SetItem ( 825 ) ( SetItem ( 841 ) ( SetItem ( 858 ) ( SetItem ( 876 ) ( SetItem ( 899 ) ( SetItem ( 903 ) ( SetItem ( 961 ) SetItem ( 991 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"T\xbc\xa0\x17" +Bytes #buf ( 32 , VV0_a_114b9705:Int ) +Bytes #buf ( 32 , VV1_b_114b9705:Int ) - - - 0 - - - ( VV1_b_114b9705:Int : ( VV0_a_114b9705:Int : ( 357 : ( 1421647895 : .WordStack ) ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80" - - - ( 1354 => 1372 ) - - - #gas ( ( _VGAS +Int ( -402 => -484 ) ) ) - - - 3 - - - false - - - 0 - - ... - - - - .List - - - .Set - - - .Map - - ... - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01MW`\x005`\xe0\x1c\x80cf\xd9\xa9\xa0\x11a\x00\xc3W\x80c\xb5P\x8a\xa9\x11a\x00|W\x80c\xb5P\x8a\xa9\x14a\x02\x85W\x80c\xbaAO\xa6\x14a\x02\x8dW\x80c\xdd\xb4\xccD\x14a\x02\xa5W\x80c\xe2\f\x9fq\x14a\x02\xb8W\x80c\xfav&\xd4\x14a\x02\xc0W\x80c\xfd\xfb\xd8Y\x14a\x02\xcdW`\x00\x80\xfd[\x80cf\xd9\xa9\xa0\x14a\x02\x1aW\x80c\x85\"l\x81\x14a\x02/W\x80c\x91j\x17\xc6\x14a\x02DW\x80c\xa3\x14\xa1K\x14a\x02LW\x80c\xa5\xfa\xb3%\x14a\x02_W\x80c\xa7o\x92|\x14a\x02rW`\x00\x80\xfd[\x80c^<#\x14a\x01\xd1W\x80c?r\x86\xf4\x14a\x01\xd9W\x80cB\xf0C\xe8\x14a\x01\xe1W\x80cT\xbc\xa0\x17\x14a\x01\xf4W\x80c`\xe74\xec\x14a\x02\x07W`\x00\x80\xfd[\x80c\x14\x90X?\x14a\x01RW\x80c\x19\xe9\xb4K\x14a\x01gW\x80c\x1d6c\xf8\x14a\x01zW\x80c\x1e\xd7\x83\x1c\x14a\x01\x8dW\x80c5\x95\xffg\x14a\x01\xabW[`\x00\x80\xfd[a\x01ea\x01`6`\x04a\x0fhV[a\x02\xe0V[\x00[a\x01ea\x01u6`\x04a\x0fhV[a\x03\x0eV[a\x01ea\x01\x886`\x04a\x0fhV[a\x039V[a\x01\x95a\x03\x87V[`@Qa\x01\xa2\x91\x90a\x0f\x8aV[`@Q\x80\x91\x03\x90\xf3[a\x01ea\x01\xb96`\x04a\x0fhV[a\x03\xe9V[a\x01ea\x01\xcc6`\x04a\x0fhV[a\x04\x17V[a\x01\x95a\x04iV[a\x01\x95a\x04\xc9V[a\x01ea\x01\xef6`\x04a\x0fhV[a\x05)V[a\x01ea\x02\x026`\x04a\x0fhV[a\x055V[a\x01ea\x02\x156`\x04a\x0fhV[a\x05\x81V[a\x02\"a\x05\xfeV[`@Qa\x01\xa2\x91\x90a\x0f\xd7V[a\x027a\x06\xedV[`@Qa\x01\xa2\x91\x90a\x10\xb6V[a\x02\"a\x07\xbdV[a\x01ea\x02Z6`\x04a\x0fhV[a\x08\xa3V[a\x01ea\x02m6`\x04a\x0fhV[a\x08\xebV[a\x01ea\x02\x806`\x04a\x0fhV[a\x08\xf7V[a\x027a\t~V[a\x02\x95a\nNV[`@Q\x90\x15\x15\x81R` \x01a\x01\xa2V[a\x01ea\x02\xb36`\x04a\x0fhV[a\x0b{V[a\x01\x95a\x0b\xa9V[`\x07Ta\x02\x95\x90`\xff\x16\x81V[a\x01ea\x02\xdb6`\x04a\x0fhV[a\f\tV[`\x00a\x02\xec\x83\x83a\f#V[\x90P`\x00a\x02\xfa\x84\x84a\f^V[\x90Pa\x03\x08\x82\x82\x11\x15a\fsV[PPPPV[`\x00a\x03\x1a\x83\x83a\f\xeaV[\x90Pa\x034\x83\x82\x10\x15\x80\x15a\x03/WP\x82\x82\x10\x15[a\fsV[PPPV[\x81`\x00\x10\x80\x15a\x03IWP\x80`\x00\x10[\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x03l\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x10\x80\x15a\x03/WP\x81\x83\x10a\fsV[PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1W[PPPPP\x90P\x90V[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x03IWP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[`\x00a\x04,a\x04&\x84\x84a\f#V[\x83a\r\x19V[\x90P`\x00a\x04Ca\x04=\x85\x85a\f^V[\x84a\r\x04V[\x90Pa\x04Q\x84\x83\x11\x15a\fsV[a\x04]\x84\x82\x11\x15a\fsV[a\x03\x08\x82\x82\x11\x15a\fsV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\x03l\x83\x83a\r\x04V[\x81`\x00\x10\x80\x15a\x05EWP\x80`\x00\x10[\x15a\x03\x83Wa\x05V\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x05h\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x11\x15\x80\x15a\x03/WP\x81\x83\x11\x15a\fsV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xceW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xe2W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x05\xf2\x83\x83a\f\xeaV[\x90Pa\x034\x81\x83a\r9V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xccW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8eW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\"V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x070\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\\\x90a\x11hV[\x80\x15a\x07\xa9W\x80`\x1f\x10a\x07~Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xa9V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x8cW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x11V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x8bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08MW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xe1V[\x81`\x00\x10\x80\x15a\x08\xb3WP\x80`\x00\x10[\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x08\xdfa\x08\xd9\x84\x84a\r\x04V[\x83a\f^V[\x90Pa\x034\x83\x82a\r9V[a\x03Z\x82`\x00\x19a\x11FV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\tDW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\tXW=`\x00\x80>=`\x00\xfd[PPPP`\x00a\th\x83\x83a\f\xeaV[\x90Pa\x034a\tx\x82`\x01a\x11\xa2V[\x84a\r9V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\xc1\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xed\x90a\x11hV[\x80\x15a\n:W\x80`\x1f\x10a\n\x0fWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n:V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x1dW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t\xa2V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\npWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0bvW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n\xfe\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0b\x18\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0bUW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0bZV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0br\x91\x90a\x12\x07V[\x91PP[\x91\x90PV[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x08\xb3WP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\f\x15\x83\x83a\r\x19V[\x90P`\x00a\x02\xfa\x84\x84a\r\x04V[`\x00\x81a\f1`\x02\x82a\x11FV[a\fCg\r\xe0\xb6\xb3\xa7d\x00\x00\x86a\x12)V[a\fM\x91\x90a\x11\xa2V[a\fW\x91\x90a\x11FV[\x93\x92PPPV[`\x00\x81a\fMg\r\xe0\xb6\xb3\xa7d\x00\x00\x85a\x12)V[\x80a\f\xe7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\f\xd7\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\f\xe7a\x0e\\V[PV[`\x00\x81\x83\x10\x15a\f\xfbWP\x80a\f\xfeV[P\x81[\x92\x91PPV[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\fM\x83\x85a\x12)V[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\r/`\x02\x82a\x11FV[a\fC\x84\x86a\x12)V[\x80\x82\x14a\x03\x83W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\r\xaa\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\x03\x83[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0fWW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0e\xf6\x92\x91` \x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x10\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fMW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fRV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\x00\x80`@\x83\x85\x03\x12\x15a\x0f{W`\x00\x80\xfd[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xcbW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xa6V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10{W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10fW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10\x00\xbc|\x80\x0e\x9b\x81\xa5<\x15\xde\x0edsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( 0 - - JUMPI ( 815 => 3303 ) bool2Word ( ( ( ( VV0_a_114b9705:Int *Int VV1_b_114b9705:Int ) /Int 1000000000000000000 ) VV1_b_114b9705:Int <=Int ( ( VV0_a_114b9705:Int *Int VV1_b_114b9705:Int ) /Int 1000000000000000000 ) ) ) - ~> #pc [ JUMPI ] - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - .List - - - .List - - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01MW`\x005`\xe0\x1c\x80cf\xd9\xa9\xa0\x11a\x00\xc3W\x80c\xb5P\x8a\xa9\x11a\x00|W\x80c\xb5P\x8a\xa9\x14a\x02\x85W\x80c\xbaAO\xa6\x14a\x02\x8dW\x80c\xdd\xb4\xccD\x14a\x02\xa5W\x80c\xe2\f\x9fq\x14a\x02\xb8W\x80c\xfav&\xd4\x14a\x02\xc0W\x80c\xfd\xfb\xd8Y\x14a\x02\xcdW`\x00\x80\xfd[\x80cf\xd9\xa9\xa0\x14a\x02\x1aW\x80c\x85\"l\x81\x14a\x02/W\x80c\x91j\x17\xc6\x14a\x02DW\x80c\xa3\x14\xa1K\x14a\x02LW\x80c\xa5\xfa\xb3%\x14a\x02_W\x80c\xa7o\x92|\x14a\x02rW`\x00\x80\xfd[\x80c^<#\x14a\x01\xd1W\x80c?r\x86\xf4\x14a\x01\xd9W\x80cB\xf0C\xe8\x14a\x01\xe1W\x80cT\xbc\xa0\x17\x14a\x01\xf4W\x80c`\xe74\xec\x14a\x02\x07W`\x00\x80\xfd[\x80c\x14\x90X?\x14a\x01RW\x80c\x19\xe9\xb4K\x14a\x01gW\x80c\x1d6c\xf8\x14a\x01zW\x80c\x1e\xd7\x83\x1c\x14a\x01\x8dW\x80c5\x95\xffg\x14a\x01\xabW[`\x00\x80\xfd[a\x01ea\x01`6`\x04a\x0fhV[a\x02\xe0V[\x00[a\x01ea\x01u6`\x04a\x0fhV[a\x03\x0eV[a\x01ea\x01\x886`\x04a\x0fhV[a\x039V[a\x01\x95a\x03\x87V[`@Qa\x01\xa2\x91\x90a\x0f\x8aV[`@Q\x80\x91\x03\x90\xf3[a\x01ea\x01\xb96`\x04a\x0fhV[a\x03\xe9V[a\x01ea\x01\xcc6`\x04a\x0fhV[a\x04\x17V[a\x01\x95a\x04iV[a\x01\x95a\x04\xc9V[a\x01ea\x01\xef6`\x04a\x0fhV[a\x05)V[a\x01ea\x02\x026`\x04a\x0fhV[a\x055V[a\x01ea\x02\x156`\x04a\x0fhV[a\x05\x81V[a\x02\"a\x05\xfeV[`@Qa\x01\xa2\x91\x90a\x0f\xd7V[a\x027a\x06\xedV[`@Qa\x01\xa2\x91\x90a\x10\xb6V[a\x02\"a\x07\xbdV[a\x01ea\x02Z6`\x04a\x0fhV[a\x08\xa3V[a\x01ea\x02m6`\x04a\x0fhV[a\x08\xebV[a\x01ea\x02\x806`\x04a\x0fhV[a\x08\xf7V[a\x027a\t~V[a\x02\x95a\nNV[`@Q\x90\x15\x15\x81R` \x01a\x01\xa2V[a\x01ea\x02\xb36`\x04a\x0fhV[a\x0b{V[a\x01\x95a\x0b\xa9V[`\x07Ta\x02\x95\x90`\xff\x16\x81V[a\x01ea\x02\xdb6`\x04a\x0fhV[a\f\tV[`\x00a\x02\xec\x83\x83a\f#V[\x90P`\x00a\x02\xfa\x84\x84a\f^V[\x90Pa\x03\x08\x82\x82\x11\x15a\fsV[PPPPV[`\x00a\x03\x1a\x83\x83a\f\xeaV[\x90Pa\x034\x83\x82\x10\x15\x80\x15a\x03/WP\x82\x82\x10\x15[a\fsV[PPPV[\x81`\x00\x10\x80\x15a\x03IWP\x80`\x00\x10[\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x03l\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x10\x80\x15a\x03/WP\x81\x83\x10a\fsV[PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1W[PPPPP\x90P\x90V[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x03IWP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[`\x00a\x04,a\x04&\x84\x84a\f#V[\x83a\r\x19V[\x90P`\x00a\x04Ca\x04=\x85\x85a\f^V[\x84a\r\x04V[\x90Pa\x04Q\x84\x83\x11\x15a\fsV[a\x04]\x84\x82\x11\x15a\fsV[a\x03\x08\x82\x82\x11\x15a\fsV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\x03l\x83\x83a\r\x04V[\x81`\x00\x10\x80\x15a\x05EWP\x80`\x00\x10[\x15a\x03\x83Wa\x05V\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x05h\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x11\x15\x80\x15a\x03/WP\x81\x83\x11\x15a\fsV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xceW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xe2W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x05\xf2\x83\x83a\f\xeaV[\x90Pa\x034\x81\x83a\r9V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xccW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8eW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\"V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x070\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\\\x90a\x11hV[\x80\x15a\x07\xa9W\x80`\x1f\x10a\x07~Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xa9V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x8cW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x11V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x8bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08MW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xe1V[\x81`\x00\x10\x80\x15a\x08\xb3WP\x80`\x00\x10[\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x08\xdfa\x08\xd9\x84\x84a\r\x04V[\x83a\f^V[\x90Pa\x034\x83\x82a\r9V[a\x03Z\x82`\x00\x19a\x11FV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\tDW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\tXW=`\x00\x80>=`\x00\xfd[PPPP`\x00a\th\x83\x83a\f\xeaV[\x90Pa\x034a\tx\x82`\x01a\x11\xa2V[\x84a\r9V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\xc1\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xed\x90a\x11hV[\x80\x15a\n:W\x80`\x1f\x10a\n\x0fWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n:V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x1dW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t\xa2V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\npWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0bvW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n\xfe\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0b\x18\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0bUW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0bZV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0br\x91\x90a\x12\x07V[\x91PP[\x91\x90PV[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x08\xb3WP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\f\x15\x83\x83a\r\x19V[\x90P`\x00a\x02\xfa\x84\x84a\r\x04V[`\x00\x81a\f1`\x02\x82a\x11FV[a\fCg\r\xe0\xb6\xb3\xa7d\x00\x00\x86a\x12)V[a\fM\x91\x90a\x11\xa2V[a\fW\x91\x90a\x11FV[\x93\x92PPPV[`\x00\x81a\fMg\r\xe0\xb6\xb3\xa7d\x00\x00\x85a\x12)V[\x80a\f\xe7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\f\xd7\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\f\xe7a\x0e\\V[PV[`\x00\x81\x83\x10\x15a\f\xfbWP\x80a\f\xfeV[P\x81[\x92\x91PPV[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\fM\x83\x85a\x12)V[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\r/`\x02\x82a\x11FV[a\fC\x84\x86a\x12)V[\x80\x82\x14a\x03\x83W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\r\xaa\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\x03\x83[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0fWW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0e\xf6\x92\x91` \x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x10\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fMW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fRV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\x00\x80`@\x83\x85\x03\x12\x15a\x0f{W`\x00\x80\xfd[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xcbW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xa6V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10{W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10fW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10\x00\xbc|\x80\x0e\x9b\x81\xa5<\x15\xde\x0edsolcC\x00\x08\r\x003" - - - ( SetItem ( 1001 ) ( SetItem ( 1047 ) ( SetItem ( 1062 ) ( SetItem ( 1068 ) ( SetItem ( 1085 ) ( SetItem ( 1091 ) ( SetItem ( 1105 ) ( SetItem ( 1117 ) ( SetItem ( 1129 ) ( SetItem ( 1225 ) ( SetItem ( 124 ) ( SetItem ( 1321 ) ( SetItem ( 1333 ) ( SetItem ( 1349 ) ( SetItem ( 1366 ) ( SetItem ( 1384 ) ( SetItem ( 1409 ) ( SetItem ( 1486 ) ( SetItem ( 1506 ) ( SetItem ( 1522 ) ( SetItem ( 1534 ) ( SetItem ( 1570 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1740 ) ( SetItem ( 1764 ) ( SetItem ( 1773 ) ( SetItem ( 1809 ) ( SetItem ( 1840 ) ( SetItem ( 1884 ) ( SetItem ( 1918 ) ( SetItem ( 1932 ) ( SetItem ( 195 ) ( SetItem ( 1961 ) ( SetItem ( 1981 ) ( SetItem ( 2017 ) ( SetItem ( 2125 ) ( SetItem ( 2187 ) ( SetItem ( 2211 ) ( SetItem ( 2227 ) ( SetItem ( 2244 ) ( SetItem ( 2265 ) ( SetItem ( 2271 ) ( SetItem ( 2283 ) ( SetItem ( 2295 ) ( SetItem ( 2372 ) ( SetItem ( 2392 ) ( SetItem ( 2408 ) ( SetItem ( 2424 ) ( SetItem ( 2430 ) ( SetItem ( 2466 ) ( SetItem ( 2497 ) ( SetItem ( 2541 ) ( SetItem ( 2575 ) ( SetItem ( 2589 ) ( SetItem ( 2618 ) ( SetItem ( 2638 ) ( SetItem ( 2672 ) ( SetItem ( 277 ) ( SetItem ( 2814 ) ( SetItem ( 2840 ) ( SetItem ( 2901 ) ( SetItem ( 2906 ) ( SetItem ( 2930 ) ( SetItem ( 2934 ) ( SetItem ( 2939 ) ( SetItem ( 2985 ) ( SetItem ( 3081 ) ( SetItem ( 3093 ) ( SetItem ( 3107 ) ( SetItem ( 3121 ) ( SetItem ( 3139 ) ( SetItem ( 3149 ) ( SetItem ( 3159 ) ( SetItem ( 3166 ) ( SetItem ( 3187 ) ( SetItem ( 3287 ) ( SetItem ( 3303 ) ( SetItem ( 3306 ) ( SetItem ( 3323 ) ( SetItem ( 3326 ) ( SetItem ( 333 ) ( SetItem ( 3332 ) ( SetItem ( 3353 ) ( SetItem ( 3375 ) ( SetItem ( 338 ) ( SetItem ( 3385 ) ( SetItem ( 3498 ) ( SetItem ( 352 ) ( SetItem ( 357 ) ( SetItem ( 359 ) ( SetItem ( 3676 ) ( SetItem ( 373 ) ( SetItem ( 378 ) ( SetItem ( 3830 ) ( SetItem ( 3856 ) ( SetItem ( 3917 ) ( SetItem ( 392 ) ( SetItem ( 3922 ) ( SetItem ( 3927 ) ( SetItem ( 3944 ) ( SetItem ( 3963 ) ( SetItem ( 397 ) ( SetItem ( 3978 ) ( SetItem ( 4006 ) ( SetItem ( 4043 ) ( SetItem ( 405 ) ( SetItem ( 4055 ) ( SetItem ( 4095 ) ( SetItem ( 4156 ) ( SetItem ( 418 ) ( SetItem ( 4198 ) ( SetItem ( 4219 ) ( SetItem ( 4234 ) ( SetItem ( 4237 ) ( SetItem ( 4261 ) ( SetItem ( 427 ) ( SetItem ( 4278 ) ( SetItem ( 4317 ) ( SetItem ( 4356 ) ( SetItem ( 4387 ) ( SetItem ( 4400 ) ( SetItem ( 441 ) ( SetItem ( 4422 ) ( SetItem ( 4451 ) ( SetItem ( 4456 ) ( SetItem ( 446 ) ( SetItem ( 4476 ) ( SetItem ( 4508 ) ( SetItem ( 4514 ) ( SetItem ( 4533 ) ( SetItem ( 4538 ) ( SetItem ( 4573 ) ( SetItem ( 4587 ) ( SetItem ( 460 ) ( SetItem ( 4605 ) ( SetItem ( 4615 ) ( SetItem ( 4633 ) ( SetItem ( 4649 ) ( SetItem ( 465 ) ( SetItem ( 4675 ) ( SetItem ( 473 ) ( SetItem ( 481 ) ( SetItem ( 495 ) ( SetItem ( 500 ) ( SetItem ( 514 ) ( SetItem ( 519 ) ( SetItem ( 533 ) ( SetItem ( 538 ) ( SetItem ( 546 ) ( SetItem ( 559 ) ( SetItem ( 567 ) ( SetItem ( 580 ) ( SetItem ( 588 ) ( SetItem ( 602 ) ( SetItem ( 607 ) ( SetItem ( 621 ) ( SetItem ( 626 ) ( SetItem ( 640 ) ( SetItem ( 645 ) ( SetItem ( 653 ) ( SetItem ( 661 ) ( SetItem ( 677 ) ( SetItem ( 691 ) ( SetItem ( 696 ) ( SetItem ( 704 ) ( SetItem ( 717 ) ( SetItem ( 731 ) ( SetItem ( 736 ) ( SetItem ( 748 ) ( SetItem ( 762 ) ( SetItem ( 776 ) ( SetItem ( 782 ) ( SetItem ( 794 ) ( SetItem ( 815 ) ( SetItem ( 820 ) ( SetItem ( 825 ) ( SetItem ( 841 ) ( SetItem ( 858 ) ( SetItem ( 876 ) ( SetItem ( 899 ) ( SetItem ( 903 ) ( SetItem ( 961 ) SetItem ( 991 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"T\xbc\xa0\x17" +Bytes #buf ( 32 , VV0_a_114b9705:Int ) +Bytes #buf ( 32 , VV1_b_114b9705:Int ) - - - 0 - - - ( bool2Word ( ( VV0_a_114b9705:Int => VV1_b_114b9705:Int ) <=Int ( ( VV0_a_114b9705:Int *Int VV1_b_114b9705:Int ) /Int 1000000000000000000 ) ) : ( 820 : ( ( ( VV0_a_114b9705:Int *Int VV1_b_114b9705:Int ) /Int 1000000000000000000 ) : ( VV1_b_114b9705:Int : ( VV0_a_114b9705:Int : ( 357 : ( 1421647895 : .WordStack ) ) ) ) ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80" - - - ( 1399 => 3192 ) - - - #gas ( ( _VGAS +Int ( -726 => -768 ) ) ) - - - 3 - - - false - - - 0 - - ... - - - - .List - - - .Set - - - .Map - - ... - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01MW`\x005`\xe0\x1c\x80cf\xd9\xa9\xa0\x11a\x00\xc3W\x80c\xb5P\x8a\xa9\x11a\x00|W\x80c\xb5P\x8a\xa9\x14a\x02\x85W\x80c\xbaAO\xa6\x14a\x02\x8dW\x80c\xdd\xb4\xccD\x14a\x02\xa5W\x80c\xe2\f\x9fq\x14a\x02\xb8W\x80c\xfav&\xd4\x14a\x02\xc0W\x80c\xfd\xfb\xd8Y\x14a\x02\xcdW`\x00\x80\xfd[\x80cf\xd9\xa9\xa0\x14a\x02\x1aW\x80c\x85\"l\x81\x14a\x02/W\x80c\x91j\x17\xc6\x14a\x02DW\x80c\xa3\x14\xa1K\x14a\x02LW\x80c\xa5\xfa\xb3%\x14a\x02_W\x80c\xa7o\x92|\x14a\x02rW`\x00\x80\xfd[\x80c^<#\x14a\x01\xd1W\x80c?r\x86\xf4\x14a\x01\xd9W\x80cB\xf0C\xe8\x14a\x01\xe1W\x80cT\xbc\xa0\x17\x14a\x01\xf4W\x80c`\xe74\xec\x14a\x02\x07W`\x00\x80\xfd[\x80c\x14\x90X?\x14a\x01RW\x80c\x19\xe9\xb4K\x14a\x01gW\x80c\x1d6c\xf8\x14a\x01zW\x80c\x1e\xd7\x83\x1c\x14a\x01\x8dW\x80c5\x95\xffg\x14a\x01\xabW[`\x00\x80\xfd[a\x01ea\x01`6`\x04a\x0fhV[a\x02\xe0V[\x00[a\x01ea\x01u6`\x04a\x0fhV[a\x03\x0eV[a\x01ea\x01\x886`\x04a\x0fhV[a\x039V[a\x01\x95a\x03\x87V[`@Qa\x01\xa2\x91\x90a\x0f\x8aV[`@Q\x80\x91\x03\x90\xf3[a\x01ea\x01\xb96`\x04a\x0fhV[a\x03\xe9V[a\x01ea\x01\xcc6`\x04a\x0fhV[a\x04\x17V[a\x01\x95a\x04iV[a\x01\x95a\x04\xc9V[a\x01ea\x01\xef6`\x04a\x0fhV[a\x05)V[a\x01ea\x02\x026`\x04a\x0fhV[a\x055V[a\x01ea\x02\x156`\x04a\x0fhV[a\x05\x81V[a\x02\"a\x05\xfeV[`@Qa\x01\xa2\x91\x90a\x0f\xd7V[a\x027a\x06\xedV[`@Qa\x01\xa2\x91\x90a\x10\xb6V[a\x02\"a\x07\xbdV[a\x01ea\x02Z6`\x04a\x0fhV[a\x08\xa3V[a\x01ea\x02m6`\x04a\x0fhV[a\x08\xebV[a\x01ea\x02\x806`\x04a\x0fhV[a\x08\xf7V[a\x027a\t~V[a\x02\x95a\nNV[`@Q\x90\x15\x15\x81R` \x01a\x01\xa2V[a\x01ea\x02\xb36`\x04a\x0fhV[a\x0b{V[a\x01\x95a\x0b\xa9V[`\x07Ta\x02\x95\x90`\xff\x16\x81V[a\x01ea\x02\xdb6`\x04a\x0fhV[a\f\tV[`\x00a\x02\xec\x83\x83a\f#V[\x90P`\x00a\x02\xfa\x84\x84a\f^V[\x90Pa\x03\x08\x82\x82\x11\x15a\fsV[PPPPV[`\x00a\x03\x1a\x83\x83a\f\xeaV[\x90Pa\x034\x83\x82\x10\x15\x80\x15a\x03/WP\x82\x82\x10\x15[a\fsV[PPPV[\x81`\x00\x10\x80\x15a\x03IWP\x80`\x00\x10[\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x03l\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x10\x80\x15a\x03/WP\x81\x83\x10a\fsV[PPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1W[PPPPP\x90P\x90V[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x03IWP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x03Z\x82`\x00\x19a\x11FV[`\x00a\x04,a\x04&\x84\x84a\f#V[\x83a\r\x19V[\x90P`\x00a\x04Ca\x04=\x85\x85a\f^V[\x84a\r\x04V[\x90Pa\x04Q\x84\x83\x11\x15a\fsV[a\x04]\x84\x82\x11\x15a\fsV[a\x03\x08\x82\x82\x11\x15a\fsV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\x03l\x83\x83a\r\x04V[\x81`\x00\x10\x80\x15a\x05EWP\x80`\x00\x10[\x15a\x03\x83Wa\x05V\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x05h\x83\x83a\r\x04V[\x90Pa\x034\x81\x84\x11\x15\x80\x15a\x03/WP\x81\x83\x11\x15a\fsV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xceW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xe2W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x05\xf2\x83\x83a\f\xeaV[\x90Pa\x034\x81\x83a\r9V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06\xccW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\x8eW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\"V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x070\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\\\x90a\x11hV[\x80\x15a\x07\xa9W\x80`\x1f\x10a\x07~Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xa9V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\x8cW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07\x11V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\x8bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08MW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xe1V[\x81`\x00\x10\x80\x15a\x08\xb3WP\x80`\x00\x10[\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[\x81\x11a\x03\x83W`\x00a\x08\xdfa\x08\xd9\x84\x84a\r\x04V[\x83a\f^V[\x90Pa\x034\x83\x82a\r9V[a\x03Z\x82`\x00\x19a\x11FV[`@Qc&1\xf2\xb1`\xe1\x1b\x81R\x81\x83\x11\x15`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\tDW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\tXW=`\x00\x80>=`\x00\xfd[PPPP`\x00a\th\x83\x83a\f\xeaV[\x90Pa\x034a\tx\x82`\x01a\x11\xa2V[\x84a\r9V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x06\xe4W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\t\xc1\x90a\x11hV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\t\xed\x90a\x11hV[\x80\x15a\n:W\x80`\x1f\x10a\n\x0fWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n:V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\x1dW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t\xa2V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\npWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0bvW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n\xfe\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0b\x18\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0bUW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0bZV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x0br\x91\x90a\x12\x07V[\x91PP[\x91\x90PV[\x81g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x80\x15a\x08\xb3WP\x80g\r\xe0\xb6\xb3\xa7d\x00\x00\x10\x15a\x03\x83Wa\x08\xc4\x82`\x00\x19a\x11FV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x03\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x03\xc1WPPPPP\x90P\x90V[`\x00a\f\x15\x83\x83a\r\x19V[\x90P`\x00a\x02\xfa\x84\x84a\r\x04V[`\x00\x81a\f1`\x02\x82a\x11FV[a\fCg\r\xe0\xb6\xb3\xa7d\x00\x00\x86a\x12)V[a\fM\x91\x90a\x11\xa2V[a\fW\x91\x90a\x11FV[\x93\x92PPPV[`\x00\x81a\fMg\r\xe0\xb6\xb3\xa7d\x00\x00\x85a\x12)V[\x80a\f\xe7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\f\xd7\x90` \x80\x82R`\x17\x90\x82\x01R\x7fError: Assertion Failed\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`@Q\x80\x91\x03\x90\xa1a\f\xe7a\x0e\\V[PV[`\x00\x81\x83\x10\x15a\f\xfbWP\x80a\f\xfeV[P\x81[\x92\x91PPV[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\fM\x83\x85a\x12)V[`\x00g\r\xe0\xb6\xb3\xa7d\x00\x00a\r/`\x02\x82a\x11FV[a\fC\x84\x86a\x12)V[\x80\x82\x14a\x03\x83W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\r\xaa\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\x03\x83[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x0fWW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0e\xf6\x92\x91` \x01a\x11\xbaV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0f\x10\x91a\x11\xebV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x0fMW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x0fRV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\x00\x80`@\x83\x85\x03\x12\x15a\x0f{W`\x00\x80\xfd[PP\x805\x92` \x90\x91\x015\x91PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0f\xcbW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0f\xa6V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10{W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10fW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x10\x00\xbc|\x80\x0e\x9b\x81\xa5<\x15\xde\x0edsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( 0 - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( SetItem ( 1019 ) ( SetItem ( 102 ) ( SetItem ( 1028 ) ( SetItem ( 1040 ) ( SetItem ( 1068 ) ( SetItem ( 1155 ) ( SetItem ( 1175 ) ( SetItem ( 1249 ) ( SetItem ( 1269 ) ( SetItem ( 1359 ) ( SetItem ( 1395 ) ( SetItem ( 140 ) ( SetItem ( 1401 ) ( SetItem ( 1404 ) ( SetItem ( 1440 ) ( SetItem ( 1471 ) ( SetItem ( 1515 ) ( SetItem ( 1549 ) ( SetItem ( 1563 ) ( SetItem ( 1592 ) ( SetItem ( 16 ) ( SetItem ( 1612 ) ( SetItem ( 1648 ) ( SetItem ( 1756 ) ( SetItem ( 1818 ) ( SetItem ( 1842 ) ( SetItem ( 1878 ) ( SetItem ( 1909 ) ( SetItem ( 1953 ) ( SetItem ( 1987 ) ( SetItem ( 200 ) ( SetItem ( 2001 ) ( SetItem ( 2030 ) ( SetItem ( 2050 ) ( SetItem ( 2062 ) ( SetItem ( 2090 ) ( SetItem ( 2177 ) ( SetItem ( 2197 ) ( SetItem ( 2281 ) ( SetItem ( 2301 ) ( SetItem ( 234 ) ( SetItem ( 239 ) ( SetItem ( 2391 ) ( SetItem ( 2427 ) ( SetItem ( 2434 ) ( SetItem ( 2436 ) ( SetItem ( 247 ) ( SetItem ( 2470 ) ( SetItem ( 260 ) ( SetItem ( 2612 ) ( SetItem ( 2638 ) ( SetItem ( 269 ) ( SetItem ( 2699 ) ( SetItem ( 2704 ) ( SetItem ( 2728 ) ( SetItem ( 2732 ) ( SetItem ( 2737 ) ( SetItem ( 277 ) ( SetItem ( 2833 ) ( SetItem ( 285 ) ( SetItem ( 2946 ) ( SetItem ( 304 ) ( SetItem ( 3128 ) ( SetItem ( 3132 ) ( SetItem ( 328 ) ( SetItem ( 3286 ) ( SetItem ( 3312 ) ( SetItem ( 336 ) ( SetItem ( 3373 ) ( SetItem ( 3378 ) ( SetItem ( 3383 ) ( SetItem ( 3400 ) ( SetItem ( 3413 ) ( SetItem ( 3441 ) ( SetItem ( 3478 ) ( SetItem ( 349 ) ( SetItem ( 3490 ) ( SetItem ( 3530 ) ( SetItem ( 3591 ) ( SetItem ( 363 ) ( SetItem ( 3633 ) ( SetItem ( 3654 ) ( SetItem ( 3669 ) ( SetItem ( 368 ) ( SetItem ( 3687 ) ( SetItem ( 3694 ) ( SetItem ( 3697 ) ( SetItem ( 370 ) ( SetItem ( 3721 ) ( SetItem ( 3736 ) ( SetItem ( 3742 ) ( SetItem ( 378 ) ( SetItem ( 3781 ) ( SetItem ( 3820 ) ( SetItem ( 3851 ) ( SetItem ( 3864 ) ( SetItem ( 3882 ) ( SetItem ( 3889 ) ( SetItem ( 3909 ) ( SetItem ( 391 ) ( SetItem ( 3941 ) ( SetItem ( 3947 ) ( SetItem ( 3982 ) ( SetItem ( 399 ) ( SetItem ( 3996 ) ( SetItem ( 4014 ) ( SetItem ( 4024 ) ( SetItem ( 4042 ) ( SetItem ( 4058 ) ( SetItem ( 407 ) ( SetItem ( 4082 ) ( SetItem ( 4112 ) ( SetItem ( 415 ) ( SetItem ( 4157 ) ( SetItem ( 4162 ) ( SetItem ( 4173 ) ( SetItem ( 4178 ) ( SetItem ( 4180 ) ( SetItem ( 4188 ) ( SetItem ( 4206 ) ( SetItem ( 4221 ) ( SetItem ( 4228 ) ( SetItem ( 423 ) ( SetItem ( 4245 ) ( SetItem ( 4252 ) ( SetItem ( 4283 ) ( SetItem ( 439 ) ( SetItem ( 478 ) ( SetItem ( 486 ) ( SetItem ( 499 ) ( SetItem ( 557 ) ( SetItem ( 587 ) ( SetItem ( 597 ) ( SetItem ( 693 ) ( SetItem ( 789 ) ( SetItem ( 825 ) ( SetItem ( 933 ) SetItem ( 995 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xb9\x13\xa5\xca" - - - 0 - - - ( 368 : ( 3105072586 : .WordStack ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - 2072 - - - #gas ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) ) - - - 13 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( SetItem ( ( 1019 => 107 ) ) ( SetItem ( ( 102 => 112 ) ) ( SetItem ( ( 1028 => 114 ) ) ( SetItem ( ( 1040 => 122 ) ) ( SetItem ( ( 1068 => 140 ) ) ( SetItem ( ( 1155 => 155 ) ) ( SetItem ( ( 1175 => 16 ) ) ( SetItem ( ( 1249 => 162 ) ) ( SetItem ( ( 1269 => 179 ) ) ( SetItem ( ( 1359 => 186 ) ) ( SetItem ( ( 1395 => 217 ) ) ( SetItem ( ( 140 => 46 ) ) ( SetItem ( ( 1401 => 91 ) ) ( ( SetItem ( 1404 ) ( SetItem ( 1440 ) ( SetItem ( 1471 ) ( SetItem ( 1515 ) ( SetItem ( 1549 ) ( SetItem ( 1563 ) ( SetItem ( 1592 ) ( SetItem ( 16 ) ( SetItem ( 1612 ) ( SetItem ( 1648 ) ( SetItem ( 1756 ) ( SetItem ( 1818 ) ( SetItem ( 1842 ) ( SetItem ( 1878 ) ( SetItem ( 1909 ) ( SetItem ( 1953 ) ( SetItem ( 1987 ) ( SetItem ( 200 ) ( SetItem ( 2001 ) ( SetItem ( 2030 ) ( SetItem ( 2050 ) ( SetItem ( 2062 ) ( SetItem ( 2090 ) ( SetItem ( 2177 ) ( SetItem ( 2197 ) ( SetItem ( 2281 ) ( SetItem ( 2301 ) ( SetItem ( 234 ) ( SetItem ( 239 ) ( SetItem ( 2391 ) ( SetItem ( 2427 ) ( SetItem ( 2434 ) ( SetItem ( 2436 ) ( SetItem ( 247 ) ( SetItem ( 2470 ) ( SetItem ( 260 ) ( SetItem ( 2612 ) ( SetItem ( 2638 ) ( SetItem ( 269 ) ( SetItem ( 2699 ) ( SetItem ( 2704 ) ( SetItem ( 2728 ) ( SetItem ( 2732 ) ( SetItem ( 2737 ) ( SetItem ( 277 ) ( SetItem ( 2833 ) ( SetItem ( 285 ) ( SetItem ( 2946 ) ( SetItem ( 304 ) ( SetItem ( 3128 ) ( SetItem ( 3132 ) ( SetItem ( 328 ) ( SetItem ( 3286 ) ( SetItem ( 3312 ) ( SetItem ( 336 ) ( SetItem ( 3373 ) ( SetItem ( 3378 ) ( SetItem ( 3383 ) ( SetItem ( 3400 ) ( SetItem ( 3413 ) ( SetItem ( 3441 ) ( SetItem ( 3478 ) ( SetItem ( 349 ) ( SetItem ( 3490 ) ( SetItem ( 3530 ) ( SetItem ( 3591 ) ( SetItem ( 363 ) ( SetItem ( 3633 ) ( SetItem ( 3654 ) ( SetItem ( 3669 ) ( SetItem ( 368 ) ( SetItem ( 3687 ) ( SetItem ( 3694 ) ( SetItem ( 3697 ) ( SetItem ( 370 ) ( SetItem ( 3721 ) ( SetItem ( 3736 ) ( SetItem ( 3742 ) ( SetItem ( 378 ) ( SetItem ( 3781 ) ( SetItem ( 3820 ) ( SetItem ( 3851 ) ( SetItem ( 3864 ) ( SetItem ( 3882 ) ( SetItem ( 3889 ) ( SetItem ( 3909 ) ( SetItem ( 391 ) ( SetItem ( 3941 ) ( SetItem ( 3947 ) ( SetItem ( 3982 ) ( SetItem ( 399 ) ( SetItem ( 3996 ) ( SetItem ( 4014 ) ( SetItem ( 4024 ) ( SetItem ( 4042 ) ( SetItem ( 4058 ) ( SetItem ( 407 ) ( SetItem ( 4082 ) ( SetItem ( 4112 ) ( SetItem ( 415 ) ( SetItem ( 4157 ) ( SetItem ( 4162 ) ( SetItem ( 4173 ) ( SetItem ( 4178 ) ( SetItem ( 4180 ) ( SetItem ( 4188 ) ( SetItem ( 4206 ) ( SetItem ( 4221 ) ( SetItem ( 4228 ) ( SetItem ( 423 ) ( SetItem ( 4245 ) ( SetItem ( 4252 ) ( SetItem ( 4283 ) ( SetItem ( 439 ) ( SetItem ( 478 ) ( SetItem ( 486 ) ( SetItem ( 499 ) ( SetItem ( 557 ) ( SetItem ( 587 ) ( SetItem ( 597 ) ( SetItem ( 693 ) ( SetItem ( 789 ) ( SetItem ( 825 ) ( SetItem ( 933 ) SetItem ( 995 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 96 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\xb9\x13\xa5\xca" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( 0 => 29 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32352 ) ) +Int -99 ) ) ) - - - ( 0 => 8 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( #popCallStack - ~> #dropWorldState - ~> 1 - ~> #push - ~> #refund #gas ( ( Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -74781 ) , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -74781 ) , 100 ) +Int -20340 ) ) - ~> #setLocalMem 128 0 b"" - ~> #pc [ CALL ] => STATICCALL ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) 491460923342184218035706888008750043977755113263 128 4 128 32 - ~> #pc [ STATICCALL ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - b"" - - - EVMC_SUCCESS - - - ( ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( SetItem ( 1019 ) ( SetItem ( 102 ) ( SetItem ( 1028 ) ( SetItem ( 1040 ) ( SetItem ( 1068 ) ( SetItem ( 1155 ) ( SetItem ( 1175 ) ( SetItem ( 1249 ) ( SetItem ( 1269 ) ( SetItem ( 1359 ) ( SetItem ( 1395 ) ( SetItem ( 140 ) ( SetItem ( 1401 ) ( SetItem ( 1404 ) ( SetItem ( 1440 ) ( SetItem ( 1471 ) ( SetItem ( 1515 ) ( SetItem ( 1549 ) ( SetItem ( 1563 ) ( SetItem ( 1592 ) ( SetItem ( 16 ) ( SetItem ( 1612 ) ( SetItem ( 1648 ) ( SetItem ( 1756 ) ( SetItem ( 1818 ) ( SetItem ( 1842 ) ( SetItem ( 1878 ) ( SetItem ( 1909 ) ( SetItem ( 1953 ) ( SetItem ( 1987 ) ( SetItem ( 200 ) ( SetItem ( 2001 ) ( SetItem ( 2030 ) ( SetItem ( 2050 ) ( SetItem ( 2062 ) ( SetItem ( 2090 ) ( SetItem ( 2177 ) ( SetItem ( 2197 ) ( SetItem ( 2281 ) ( SetItem ( 2301 ) ( SetItem ( 234 ) ( SetItem ( 239 ) ( SetItem ( 2391 ) ( SetItem ( 2427 ) ( SetItem ( 2434 ) ( SetItem ( 2436 ) ( SetItem ( 247 ) ( SetItem ( 2470 ) ( SetItem ( 260 ) ( SetItem ( 2612 ) ( SetItem ( 2638 ) ( SetItem ( 269 ) ( SetItem ( 2699 ) ( SetItem ( 2704 ) ( SetItem ( 2728 ) ( SetItem ( 2732 ) ( SetItem ( 2737 ) ( SetItem ( 277 ) ( SetItem ( 2833 ) ( SetItem ( 285 ) ( SetItem ( 2946 ) ( SetItem ( 304 ) ( SetItem ( 3128 ) ( SetItem ( 3132 ) ( SetItem ( 328 ) ( SetItem ( 3286 ) ( SetItem ( 3312 ) ( SetItem ( 336 ) ( SetItem ( 3373 ) ( SetItem ( 3378 ) ( SetItem ( 3383 ) ( SetItem ( 3400 ) ( SetItem ( 3413 ) ( SetItem ( 3441 ) ( SetItem ( 3478 ) ( SetItem ( 349 ) ( SetItem ( 3490 ) ( SetItem ( 3530 ) ( SetItem ( 3591 ) ( SetItem ( 363 ) ( SetItem ( 3633 ) ( SetItem ( 3654 ) ( SetItem ( 3669 ) ( SetItem ( 368 ) ( SetItem ( 3687 ) ( SetItem ( 3694 ) ( SetItem ( 3697 ) ( SetItem ( 370 ) ( SetItem ( 3721 ) ( SetItem ( 3736 ) ( SetItem ( 3742 ) ( SetItem ( 378 ) ( SetItem ( 3781 ) ( SetItem ( 3820 ) ( SetItem ( 3851 ) ( SetItem ( 3864 ) ( SetItem ( 3882 ) ( SetItem ( 3889 ) ( SetItem ( 3909 ) ( SetItem ( 391 ) ( SetItem ( 3941 ) ( SetItem ( 3947 ) ( SetItem ( 3982 ) ( SetItem ( 399 ) ( SetItem ( 3996 ) ( SetItem ( 4014 ) ( SetItem ( 4024 ) ( SetItem ( 4042 ) ( SetItem ( 4058 ) ( SetItem ( 407 ) ( SetItem ( 4082 ) ( SetItem ( 4112 ) ( SetItem ( 415 ) ( SetItem ( 4157 ) ( SetItem ( 4162 ) ( SetItem ( 4173 ) ( SetItem ( 4178 ) ( SetItem ( 4180 ) ( SetItem ( 4188 ) ( SetItem ( 4206 ) ( SetItem ( 4221 ) ( SetItem ( 4228 ) ( SetItem ( 423 ) ( SetItem ( 4245 ) ( SetItem ( 4252 ) ( SetItem ( 4283 ) ( SetItem ( 439 ) ( SetItem ( 478 ) ( SetItem ( 486 ) ( SetItem ( 499 ) ( SetItem ( 557 ) ( SetItem ( 587 ) ( SetItem ( 597 ) ( SetItem ( 693 ) ( SetItem ( 789 ) ( SetItem ( 825 ) ( SetItem ( 933 ) SetItem ( 995 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xb9\x13\xa5\xca" - - - 0 - - - ( 132 : ( 3500007562 : ( 491460923342184218035706888008750043977755113263 : ( 368 : ( 3105072586 : .WordStack ) ) ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x9d\xe0\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x004\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - 2284 - - - #gas ( ( ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) -Int Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -74781 ) , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -74781 ) , 100 ) ) +Int -74881 ) ) - - - 13 - - - #gas ( Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -74781 ) , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -74781 ) , 100 ) ) - - - false - - - 0 - - ) => .List ) - - - ( ListItem ( { - ( - - 491460923342184218035706888008750043977755113263 - - - 0 - - - b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( 0 |-> 0 ) - - - .Map - - - 1 - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( 27 |-> 491460923342184218035706888008750043977755113263 ) - - - .Map - - - 2 - - ) ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) - - - ( ( 491460923342184218035706888008750043977755113263 |-> SetItem ( 0 ) ) - ( 728815563385977040452943777879061427756277306518 |-> SetItem ( 27 ) ) ) - - } ) => .List ) - - - _TOUCHEDACCOUNTS_CELL |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) - - - - ( b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( SetItem ( ( 109 => 1019 ) ) ( SetItem ( ( 124 => 102 ) ) ( SetItem ( ( 131 => 1028 ) ) ( SetItem ( ( 148 => 1040 ) ) ( SetItem ( ( 15 => 1068 ) ) ( SetItem ( ( 155 => 1155 ) ) ( SetItem ( ( 186 => 1175 ) ) ( SetItem ( ( 60 => 1249 ) ) ( SetItem ( ( 65 => 1269 ) ) ( SetItem ( ( 76 => 1359 ) ) ( SetItem ( ( 81 => 1395 ) ) ( SetItem ( ( 83 => 140 ) ) ( SetItem ( 91 ) => ( SetItem ( 1401 ) ( SetItem ( 1404 ) ( SetItem ( 1440 ) ( SetItem ( 1471 ) ( SetItem ( 1515 ) ( SetItem ( 1549 ) ( SetItem ( 1563 ) ( SetItem ( 1592 ) ( SetItem ( 16 ) ( SetItem ( 1612 ) ( SetItem ( 1648 ) ( SetItem ( 1756 ) ( SetItem ( 1818 ) ( SetItem ( 1842 ) ( SetItem ( 1878 ) ( SetItem ( 1909 ) ( SetItem ( 1953 ) ( SetItem ( 1987 ) ( SetItem ( 200 ) ( SetItem ( 2001 ) ( SetItem ( 2030 ) ( SetItem ( 2050 ) ( SetItem ( 2062 ) ( SetItem ( 2090 ) ( SetItem ( 2177 ) ( SetItem ( 2197 ) ( SetItem ( 2281 ) ( SetItem ( 2301 ) ( SetItem ( 234 ) ( SetItem ( 239 ) ( SetItem ( 2391 ) ( SetItem ( 2427 ) ( SetItem ( 2434 ) ( SetItem ( 2436 ) ( SetItem ( 247 ) ( SetItem ( 2470 ) ( SetItem ( 260 ) ( SetItem ( 2612 ) ( SetItem ( 2638 ) ( SetItem ( 269 ) ( SetItem ( 2699 ) ( SetItem ( 2704 ) ( SetItem ( 2728 ) ( SetItem ( 2732 ) ( SetItem ( 2737 ) ( SetItem ( 277 ) ( SetItem ( 2833 ) ( SetItem ( 285 ) ( SetItem ( 2946 ) ( SetItem ( 304 ) ( SetItem ( 3128 ) ( SetItem ( 3132 ) ( SetItem ( 328 ) ( SetItem ( 3286 ) ( SetItem ( 3312 ) ( SetItem ( 336 ) ( SetItem ( 3373 ) ( SetItem ( 3378 ) ( SetItem ( 3383 ) ( SetItem ( 3400 ) ( SetItem ( 3413 ) ( SetItem ( 3441 ) ( SetItem ( 3478 ) ( SetItem ( 349 ) ( SetItem ( 3490 ) ( SetItem ( 3530 ) ( SetItem ( 3591 ) ( SetItem ( 363 ) ( SetItem ( 3633 ) ( SetItem ( 3654 ) ( SetItem ( 3669 ) ( SetItem ( 368 ) ( SetItem ( 3687 ) ( SetItem ( 3694 ) ( SetItem ( 3697 ) ( SetItem ( 370 ) ( SetItem ( 3721 ) ( SetItem ( 3736 ) ( SetItem ( 3742 ) ( SetItem ( 378 ) ( SetItem ( 3781 ) ( SetItem ( 3820 ) ( SetItem ( 3851 ) ( SetItem ( 3864 ) ( SetItem ( 3882 ) ( SetItem ( 3889 ) ( SetItem ( 3909 ) ( SetItem ( 391 ) ( SetItem ( 3941 ) ( SetItem ( 3947 ) ( SetItem ( 3982 ) ( SetItem ( 399 ) ( SetItem ( 3996 ) ( SetItem ( 4014 ) ( SetItem ( 4024 ) ( SetItem ( 4042 ) ( SetItem ( 4058 ) ( SetItem ( 407 ) ( SetItem ( 4082 ) ( SetItem ( 4112 ) ( SetItem ( 415 ) ( SetItem ( 4157 ) ( SetItem ( 4162 ) ( SetItem ( 4173 ) ( SetItem ( 4178 ) ( SetItem ( 4180 ) ( SetItem ( 4188 ) ( SetItem ( 4206 ) ( SetItem ( 4221 ) ( SetItem ( 4228 ) ( SetItem ( 423 ) ( SetItem ( 4245 ) ( SetItem ( 4252 ) ( SetItem ( 4283 ) ( SetItem ( 439 ) ( SetItem ( 478 ) ( SetItem ( 486 ) ( SetItem ( 499 ) ( SetItem ( 557 ) ( SetItem ( 587 ) ( SetItem ( 597 ) ( SetItem ( 693 ) ( SetItem ( 789 ) ( SetItem ( 825 ) ( SetItem ( 933 ) SetItem ( 995 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 491460923342184218035706888008750043977755113263 => 728815563385977040452943777879061427756277306518 ) - - - ( 728815563385977040452943777879061427756277306518 => CALLER_ID:Int ) - - - ( b"\xd0\x9d\xe0\x8a" => b"\xb9\x13\xa5\xca" ) - - - 0 - - - ( ( 3500007562 => 132 ) : ( .WordStack => ( 2206332298 : ( 491460923342184218035706888008750043977755113263 : ( 2434 : ( 368 : ( 3105072586 : .WordStack ) ) ) ) ) ) ) - - - ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80" => b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x81\xf5\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x004\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( 82 => 2374 ) - - - #gas ( ( ( Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -74781 ) , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -74781 ) , 100 ) => ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) -Int Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , 100 ) ) ) +Int ( -20340 => -95586 ) ) ) - - - ( 3 => 13 ) - - - ( 0 => #gas ( Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , 100 ) ) ) - - - false - - - ( 1 => 0 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) - - - ( ( 491460923342184218035706888008750043977755113263 |-> SetItem ( 0 ) ) - ( 728815563385977040452943777879061427756277306518 |-> SetItem ( 27 ) ) ) - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - 491460923342184218035706888008750043977755113263 - - - 0 - - - b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( 0 |-> 1 ) - - - .Map - - - 1 - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( 27 |-> 491460923342184218035706888008750043977755113263 ) - - - .Map - - - 2 - - ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( #checkCall 728815563385977040452943777879061427756277306518 0 - ~> #call 728815563385977040452943777879061427756277306518 491460923342184218035706888008750043977755113263 491460923342184218035706888008750043977755113263 0 0 b"\x83\x81\xf5\x8a" true => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute ) - ~> #return 128 32 - ~> #pc [ STATICCALL ] - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( b"" => b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" ) - - - EVMC_SUCCESS - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( SetItem ( 1019 ) ( SetItem ( 102 ) ( SetItem ( 1028 ) ( SetItem ( 1040 ) ( SetItem ( 1068 ) ( SetItem ( 1155 ) ( SetItem ( 1175 ) ( SetItem ( 1249 ) ( SetItem ( 1269 ) ( SetItem ( 1359 ) ( SetItem ( 1395 ) ( SetItem ( 140 ) ( SetItem ( 1401 ) ( SetItem ( 1404 ) ( SetItem ( 1440 ) ( SetItem ( 1471 ) ( SetItem ( 1515 ) ( SetItem ( 1549 ) ( SetItem ( 1563 ) ( SetItem ( 1592 ) ( SetItem ( 16 ) ( SetItem ( 1612 ) ( SetItem ( 1648 ) ( SetItem ( 1756 ) ( SetItem ( 1818 ) ( SetItem ( 1842 ) ( SetItem ( 1878 ) ( SetItem ( 1909 ) ( SetItem ( 1953 ) ( SetItem ( 1987 ) ( SetItem ( 200 ) ( SetItem ( 2001 ) ( SetItem ( 2030 ) ( SetItem ( 2050 ) ( SetItem ( 2062 ) ( SetItem ( 2090 ) ( SetItem ( 2177 ) ( SetItem ( 2197 ) ( SetItem ( 2281 ) ( SetItem ( 2301 ) ( SetItem ( 234 ) ( SetItem ( 239 ) ( SetItem ( 2391 ) ( SetItem ( 2427 ) ( SetItem ( 2434 ) ( SetItem ( 2436 ) ( SetItem ( 247 ) ( SetItem ( 2470 ) ( SetItem ( 260 ) ( SetItem ( 2612 ) ( SetItem ( 2638 ) ( SetItem ( 269 ) ( SetItem ( 2699 ) ( SetItem ( 2704 ) ( SetItem ( 2728 ) ( SetItem ( 2732 ) ( SetItem ( 2737 ) ( SetItem ( 277 ) ( SetItem ( 2833 ) ( SetItem ( 285 ) ( SetItem ( 2946 ) ( SetItem ( 304 ) ( SetItem ( 3128 ) ( SetItem ( 3132 ) ( SetItem ( 328 ) ( SetItem ( 3286 ) ( SetItem ( 3312 ) ( SetItem ( 336 ) ( SetItem ( 3373 ) ( SetItem ( 3378 ) ( SetItem ( 3383 ) ( SetItem ( 3400 ) ( SetItem ( 3413 ) ( SetItem ( 3441 ) ( SetItem ( 3478 ) ( SetItem ( 349 ) ( SetItem ( 3490 ) ( SetItem ( 3530 ) ( SetItem ( 3591 ) ( SetItem ( 363 ) ( SetItem ( 3633 ) ( SetItem ( 3654 ) ( SetItem ( 3669 ) ( SetItem ( 368 ) ( SetItem ( 3687 ) ( SetItem ( 3694 ) ( SetItem ( 3697 ) ( SetItem ( 370 ) ( SetItem ( 3721 ) ( SetItem ( 3736 ) ( SetItem ( 3742 ) ( SetItem ( 378 ) ( SetItem ( 3781 ) ( SetItem ( 3820 ) ( SetItem ( 3851 ) ( SetItem ( 3864 ) ( SetItem ( 3882 ) ( SetItem ( 3889 ) ( SetItem ( 3909 ) ( SetItem ( 391 ) ( SetItem ( 3941 ) ( SetItem ( 3947 ) ( SetItem ( 3982 ) ( SetItem ( 399 ) ( SetItem ( 3996 ) ( SetItem ( 4014 ) ( SetItem ( 4024 ) ( SetItem ( 4042 ) ( SetItem ( 4058 ) ( SetItem ( 407 ) ( SetItem ( 4082 ) ( SetItem ( 4112 ) ( SetItem ( 415 ) ( SetItem ( 4157 ) ( SetItem ( 4162 ) ( SetItem ( 4173 ) ( SetItem ( 4178 ) ( SetItem ( 4180 ) ( SetItem ( 4188 ) ( SetItem ( 4206 ) ( SetItem ( 4221 ) ( SetItem ( 4228 ) ( SetItem ( 423 ) ( SetItem ( 4245 ) ( SetItem ( 4252 ) ( SetItem ( 4283 ) ( SetItem ( 439 ) ( SetItem ( 478 ) ( SetItem ( 486 ) ( SetItem ( 499 ) ( SetItem ( 557 ) ( SetItem ( 587 ) ( SetItem ( 597 ) ( SetItem ( 693 ) ( SetItem ( 789 ) ( SetItem ( 825 ) ( SetItem ( 933 ) SetItem ( 995 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xb9\x13\xa5\xca" - - - 0 - - - ( 132 : ( 2206332298 : ( 491460923342184218035706888008750043977755113263 : ( 2434 : ( 368 : ( 3105072586 : .WordStack ) ) ) ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x81\xf5\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x004\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - 2374 - - - #gas ( ( ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) -Int Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , 100 ) ) +Int -95586 ) ) - - - 13 - - - #gas ( Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , 100 ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 491460923342184218035706888008750043977755113263 - - - 0 - - - b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( 0 |-> 1 ) - - - .Map - - - 1 - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( 27 |-> 491460923342184218035706888008750043977755113263 ) - - - .Map - - - 2 - - ) ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) - - - ( ( 491460923342184218035706888008750043977755113263 |-> SetItem ( 0 ) ) - ( 728815563385977040452943777879061427756277306518 |-> SetItem ( 27 ) ) ) - - } ) ) - - - _TOUCHEDACCOUNTS_CELL |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( SetItem ( ( 1019 => 109 ) ) ( SetItem ( ( 102 => 124 ) ) ( SetItem ( ( 1028 => 131 ) ) ( SetItem ( ( 1040 => 148 ) ) ( SetItem ( ( 1068 => 15 ) ) ( SetItem ( ( 1155 => 155 ) ) ( SetItem ( ( 1175 => 186 ) ) ( SetItem ( ( 1249 => 60 ) ) ( SetItem ( ( 1269 => 65 ) ) ( SetItem ( ( 1359 => 76 ) ) ( SetItem ( ( 1395 => 81 ) ) ( SetItem ( ( 140 => 83 ) ) ( ( SetItem ( 1401 ) ( SetItem ( 1404 ) ( SetItem ( 1440 ) ( SetItem ( 1471 ) ( SetItem ( 1515 ) ( SetItem ( 1549 ) ( SetItem ( 1563 ) ( SetItem ( 1592 ) ( SetItem ( 16 ) ( SetItem ( 1612 ) ( SetItem ( 1648 ) ( SetItem ( 1756 ) ( SetItem ( 1818 ) ( SetItem ( 1842 ) ( SetItem ( 1878 ) ( SetItem ( 1909 ) ( SetItem ( 1953 ) ( SetItem ( 1987 ) ( SetItem ( 200 ) ( SetItem ( 2001 ) ( SetItem ( 2030 ) ( SetItem ( 2050 ) ( SetItem ( 2062 ) ( SetItem ( 2090 ) ( SetItem ( 2177 ) ( SetItem ( 2197 ) ( SetItem ( 2281 ) ( SetItem ( 2301 ) ( SetItem ( 234 ) ( SetItem ( 239 ) ( SetItem ( 2391 ) ( SetItem ( 2427 ) ( SetItem ( 2434 ) ( SetItem ( 2436 ) ( SetItem ( 247 ) ( SetItem ( 2470 ) ( SetItem ( 260 ) ( SetItem ( 2612 ) ( SetItem ( 2638 ) ( SetItem ( 269 ) ( SetItem ( 2699 ) ( SetItem ( 2704 ) ( SetItem ( 2728 ) ( SetItem ( 2732 ) ( SetItem ( 2737 ) ( SetItem ( 277 ) ( SetItem ( 2833 ) ( SetItem ( 285 ) ( SetItem ( 2946 ) ( SetItem ( 304 ) ( SetItem ( 3128 ) ( SetItem ( 3132 ) ( SetItem ( 328 ) ( SetItem ( 3286 ) ( SetItem ( 3312 ) ( SetItem ( 336 ) ( SetItem ( 3373 ) ( SetItem ( 3378 ) ( SetItem ( 3383 ) ( SetItem ( 3400 ) ( SetItem ( 3413 ) ( SetItem ( 3441 ) ( SetItem ( 3478 ) ( SetItem ( 349 ) ( SetItem ( 3490 ) ( SetItem ( 3530 ) ( SetItem ( 3591 ) ( SetItem ( 363 ) ( SetItem ( 3633 ) ( SetItem ( 3654 ) ( SetItem ( 3669 ) ( SetItem ( 368 ) ( SetItem ( 3687 ) ( SetItem ( 3694 ) ( SetItem ( 3697 ) ( SetItem ( 370 ) ( SetItem ( 3721 ) ( SetItem ( 3736 ) ( SetItem ( 3742 ) ( SetItem ( 378 ) ( SetItem ( 3781 ) ( SetItem ( 3820 ) ( SetItem ( 3851 ) ( SetItem ( 3864 ) ( SetItem ( 3882 ) ( SetItem ( 3889 ) ( SetItem ( 3909 ) ( SetItem ( 391 ) ( SetItem ( 3941 ) ( SetItem ( 3947 ) ( SetItem ( 3982 ) ( SetItem ( 399 ) ( SetItem ( 3996 ) ( SetItem ( 4014 ) ( SetItem ( 4024 ) ( SetItem ( 4042 ) ( SetItem ( 4058 ) ( SetItem ( 407 ) ( SetItem ( 4082 ) ( SetItem ( 4112 ) ( SetItem ( 415 ) ( SetItem ( 4157 ) ( SetItem ( 4162 ) ( SetItem ( 4173 ) ( SetItem ( 4178 ) ( SetItem ( 4180 ) ( SetItem ( 4188 ) ( SetItem ( 4206 ) ( SetItem ( 4221 ) ( SetItem ( 4228 ) ( SetItem ( 423 ) ( SetItem ( 4245 ) ( SetItem ( 4252 ) ( SetItem ( 4283 ) ( SetItem ( 439 ) ( SetItem ( 478 ) ( SetItem ( 486 ) ( SetItem ( 499 ) ( SetItem ( 557 ) ( SetItem ( 587 ) ( SetItem ( 597 ) ( SetItem ( 693 ) ( SetItem ( 789 ) ( SetItem ( 825 ) ( SetItem ( 933 ) SetItem ( 995 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 91 ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\xb9\x13\xa5\xca" => b"\x83\x81\xf5\x8a" ) - - - 0 - - - ( ( 132 => 91 ) : ( 2206332298 : ( ( 491460923342184218035706888008750043977755113263 : ( 2434 : ( 368 : ( 3105072586 : .WordStack ) ) ) ) => .WordStack ) ) ) - - - ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x81\xf5\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x004\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" ) - - - ( 2374 => 108 ) - - - #gas ( ( ( ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) -Int Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , 100 ) ) => Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , 100 ) ) +Int ( -95586 => -283 ) ) ) - - - ( 13 => 5 ) - - - ( #gas ( Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , ( ( ( ( VGAS:Int +Int -32352 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32352 ) ) ) +Int -95486 ) , 100 ) ) => 0 ) - - - ( false => true ) - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) - - - ( ( 491460923342184218035706888008750043977755113263 |-> SetItem ( 0 ) ) - ( 728815563385977040452943777879061427756277306518 |-> SetItem ( 27 ) ) ) - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - 491460923342184218035706888008750043977755113263 - - - 0 - - - b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( 0 |-> 1 ) - - - .Map - - - 1 - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01\x9fW\x80c\xd6\xa2\xecv\x14a\x01\xb7W\x80c\xe2\f\x9fq\x14a\x01\xdeW\x80c\xfav&\xd4\x14a\x01\xe6W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x87W\x80c\xb5P\x8a\xa9\x14a\x01\x8fW\x80c\xb9\x13\xa5\xca\x14a\x01\x97W`\x00\x80\xfd[\x80ca\xbc\"\x1a\x11a\x00\xc8W\x80ca\xbc\"\x1a\x14a\x01\x1dW\x80cf\xd9\xa9\xa0\x14a\x01HW\x80cp\xf9\x85\xbe\x14a\x01]W\x80c\x85\"l\x81\x14a\x01rW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xefW\x80c>^<#\x14a\x01\rW\x80c?r\x86\xf4\x14a\x01\x15W[`\x00\x80\xfd[a\x00\xf7a\x01\xf3V[`@Qa\x01\x04\x91\x90a\rUV[`@Q\x80\x91\x03\x90\xf3[a\x00\xf7a\x02UV[a\x00\xf7a\x02\xb5V[`\x1bTa\x010\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x01Pa\x03\x15V[`@Qa\x01\x04\x91\x90a\r\xa2V[a\x01pa\x01k6`\x04a\x0eUV[a\x04\x04V[\x00[a\x01za\x05|V[`@Qa\x01\x04\x91\x90a\x0e\x9eV[a\x01Pa\x06LV[a\x01za\x072V[a\x01pa\x08\x02V[a\x01\xa7a\t\x84V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x010\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[a\x00\xf7a\n\xb1V[`\x07Ta\x01\xa7\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03\xe3W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x03\xa5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x039V[PPPP\x90P\x90V[`@Qa\x04\x10\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04,W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\x83W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x97W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92Pc?\xb5\xc1\xcb\x91P`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xe1W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\xf5W=`\x00\x80>=`\x00\xfd[PPPPa\x05y`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05OW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05s\x91\x90a\x0f\x18V[\x82a\x0b\x11V[PV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\xbf\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\xeb\x90a\x0f1V[\x80\x15a\x068W\x80`\x1f\x10a\x06\rWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x068V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x1bW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x05\xa0V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\x1aW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06\xdcW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06pV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\xfbW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x07u\x90a\x0f1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\xa1\x90a\x0f1V[\x80\x15a\x07\xeeW\x80`\x1f\x10a\x07\xc3Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\xeeV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\xd1W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x07VV[`@Qa\x08\x0e\x90a\rHV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08*W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qc?\xb5\xc1\xcb`\xe0\x1b\x81R`\x00`\x04\x82\x01Rc?\xb5\xc1\xcb\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\x81W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\x95W=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x08\xe9W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x08\xfdW=`\x00\x80>=`\x00\xfd[PPPPa\t\x82`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x83\x81\xf5\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\tWW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t{\x91\x90a\x0f\x18V[`\x01a\x0b\x11V[V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\t\xa6WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\n\xacW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\n4\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0fkV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\nN\x91a\x0f\x9cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\n\x8bW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\n\x90V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\n\xa8\x91\x90a\x0f\xb8V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02KW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02-WPPPPP\x90P\x90V[\x80\x82\x14a\f8W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x82\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f8a\fa\r2V[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x16\x80a\x0f\xe2\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x96W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rqV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0eFW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e1W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0e\x07V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xcaV[P\x91\x99\x98PPPPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0egW`\x00\x80\xfd[P5\x91\x90PV[`\x00[\x83\x81\x10\x15a\x0e\x89W\x81\x81\x01Q\x83\x82\x01R` \x01a\x0eqV[\x83\x81\x11\x15a\x0e\x98W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0f\x0bW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xec\x81\x89\x89\x01\x8a\x85\x01a\x0enV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\xc5V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0f*W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0fEW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0feWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x8e\x81`\x04\x85\x01` \x87\x01a\x0enV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f\xae\x81\x84` \x87\x01a\x0enV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\xcaW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\xdaW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\xf7\x80a\x00\x1f`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10` - - ( 27 |-> 491460923342184218035706888008750043977755113263 ) - - - .Map - - - 2 - - ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - ( SetItem ( 102 ) ( SetItem ( 1027 ) ( SetItem ( 1061 ) ( SetItem ( 1075 ) ( SetItem ( 1104 ) ( SetItem ( 1124 ) ( SetItem ( 1138 ) ( SetItem ( 1166 ) ( SetItem ( 1243 ) ( SetItem ( 1269 ) ( SetItem ( 1289 ) ( SetItem ( 1343 ) ( SetItem ( 140 ) ( SetItem ( 1410 ) ( SetItem ( 1430 ) ( SetItem ( 1437 ) ( SetItem ( 1473 ) ( SetItem ( 1581 ) ( SetItem ( 16 ) ( SetItem ( 1643 ) ( SetItem ( 1667 ) ( SetItem ( 1703 ) ( SetItem ( 1734 ) ( SetItem ( 1778 ) ( SetItem ( 1812 ) ( SetItem ( 1826 ) ( SetItem ( 1855 ) ( SetItem ( 1875 ) ( SetItem ( 1909 ) ( SetItem ( 2051 ) ( SetItem ( 207 ) ( SetItem ( 2077 ) ( SetItem ( 212 ) ( SetItem ( 2138 ) ( SetItem ( 2143 ) ( SetItem ( 2167 ) ( SetItem ( 2171 ) ( SetItem ( 2176 ) ( SetItem ( 220 ) ( SetItem ( 2272 ) ( SetItem ( 2286 ) ( SetItem ( 2314 ) ( SetItem ( 233 ) ( SetItem ( 2410 ) ( SetItem ( 242 ) ( SetItem ( 2424 ) ( SetItem ( 2452 ) ( SetItem ( 250 ) ( SetItem ( 2554 ) ( SetItem ( 2574 ) ( SetItem ( 258 ) ( SetItem ( 2634 ) ( SetItem ( 2646 ) ( SetItem ( 266 ) ( SetItem ( 2674 ) ( SetItem ( 2711 ) ( SetItem ( 2723 ) ( SetItem ( 2763 ) ( SetItem ( 279 ) ( SetItem ( 2824 ) ( SetItem ( 2866 ) ( SetItem ( 287 ) ( SetItem ( 2887 ) ( SetItem ( 2902 ) ( SetItem ( 2905 ) ( SetItem ( 2929 ) ( SetItem ( 2944 ) ( SetItem ( 2950 ) ( SetItem ( 2989 ) ( SetItem ( 300 ) ( SetItem ( 3028 ) ( SetItem ( 3059 ) ( SetItem ( 3072 ) ( SetItem ( 308 ) ( SetItem ( 3092 ) ( SetItem ( 310 ) ( SetItem ( 3124 ) ( SetItem ( 3130 ) ( SetItem ( 3165 ) ( SetItem ( 3179 ) ( SetItem ( 318 ) ( SetItem ( 3197 ) ( SetItem ( 3207 ) ( SetItem ( 3225 ) ( SetItem ( 3241 ) ( SetItem ( 326 ) ( SetItem ( 3264 ) ( SetItem ( 3294 ) ( SetItem ( 3319 ) ( SetItem ( 3324 ) ( SetItem ( 3330 ) ( SetItem ( 3332 ) ( SetItem ( 334 ) ( SetItem ( 350 ) ( SetItem ( 358 ) ( SetItem ( 366 ) ( SetItem ( 379 ) ( SetItem ( 387 ) ( SetItem ( 445 ) ( SetItem ( 475 ) ( SetItem ( 485 ) ( SetItem ( 581 ) ( SetItem ( 677 ) ( SetItem ( 713 ) ( SetItem ( 821 ) ( SetItem ( 883 ) ( SetItem ( 907 ) ( SetItem ( 916 ) ( SetItem ( 952 ) SetItem ( 983 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\x8e0\xcd9" - - - 0 - - - ( 0 : ( 308 : ( 2385562937 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" - - - 1148 - - - #gas ( ( ( VGAS:Int +Int -32383 ) /Int 64 ) ) - - - 11 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32383 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 102 => 15 ) ) ( SetItem ( ( 1027 => 45 ) ) ( SetItem ( ( 1061 => 70 ) ) ( SetItem ( ( 1075 => 75 ) ) ( SetItem ( ( 1104 => 81 ) ) ( ( SetItem ( 1124 ) ( SetItem ( 1138 ) ( SetItem ( 1166 ) ( SetItem ( 1243 ) ( SetItem ( 1269 ) ( SetItem ( 1289 ) ( SetItem ( 1343 ) ( SetItem ( 140 ) ( SetItem ( 1410 ) ( SetItem ( 1430 ) ( SetItem ( 1437 ) ( SetItem ( 1473 ) ( SetItem ( 1581 ) ( SetItem ( 16 ) ( SetItem ( 1643 ) ( SetItem ( 1667 ) ( SetItem ( 1703 ) ( SetItem ( 1734 ) ( SetItem ( 1778 ) ( SetItem ( 1812 ) ( SetItem ( 1826 ) ( SetItem ( 1855 ) ( SetItem ( 1875 ) ( SetItem ( 1909 ) ( SetItem ( 2051 ) ( SetItem ( 207 ) ( SetItem ( 2077 ) ( SetItem ( 212 ) ( SetItem ( 2138 ) ( SetItem ( 2143 ) ( SetItem ( 2167 ) ( SetItem ( 2171 ) ( SetItem ( 2176 ) ( SetItem ( 220 ) ( SetItem ( 2272 ) ( SetItem ( 2286 ) ( SetItem ( 2314 ) ( SetItem ( 233 ) ( SetItem ( 2410 ) ( SetItem ( 242 ) ( SetItem ( 2424 ) ( SetItem ( 2452 ) ( SetItem ( 250 ) ( SetItem ( 2554 ) ( SetItem ( 2574 ) ( SetItem ( 258 ) ( SetItem ( 2634 ) ( SetItem ( 2646 ) ( SetItem ( 266 ) ( SetItem ( 2674 ) ( SetItem ( 2711 ) ( SetItem ( 2723 ) ( SetItem ( 2763 ) ( SetItem ( 279 ) ( SetItem ( 2824 ) ( SetItem ( 2866 ) ( SetItem ( 287 ) ( SetItem ( 2887 ) ( SetItem ( 2902 ) ( SetItem ( 2905 ) ( SetItem ( 2929 ) ( SetItem ( 2944 ) ( SetItem ( 2950 ) ( SetItem ( 2989 ) ( SetItem ( 300 ) ( SetItem ( 3028 ) ( SetItem ( 3059 ) ( SetItem ( 3072 ) ( SetItem ( 308 ) ( SetItem ( 3092 ) ( SetItem ( 310 ) ( SetItem ( 3124 ) ( SetItem ( 3130 ) ( SetItem ( 3165 ) ( SetItem ( 3179 ) ( SetItem ( 318 ) ( SetItem ( 3197 ) ( SetItem ( 3207 ) ( SetItem ( 3225 ) ( SetItem ( 3241 ) ( SetItem ( 326 ) ( SetItem ( 3264 ) ( SetItem ( 3294 ) ( SetItem ( 3319 ) ( SetItem ( 3324 ) ( SetItem ( 3330 ) ( SetItem ( 3332 ) ( SetItem ( 334 ) ( SetItem ( 350 ) ( SetItem ( 358 ) ( SetItem ( 366 ) ( SetItem ( 379 ) ( SetItem ( 387 ) ( SetItem ( 445 ) ( SetItem ( 475 ) ( SetItem ( 485 ) ( SetItem ( 581 ) ( SetItem ( 677 ) ( SetItem ( 713 ) ( SetItem ( 821 ) ( SetItem ( 883 ) ( SetItem ( 907 ) ( SetItem ( 916 ) ( SetItem ( 952 ) SetItem ( 983 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 83 ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\x8e0\xcd9" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" ) - - - ( 0 => 28 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32383 ) ) +Int -87 ) ) ) - - - ( 0 => 6 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - ( SetItem ( 102 ) ( SetItem ( 1027 ) ( SetItem ( 1061 ) ( SetItem ( 1075 ) ( SetItem ( 1104 ) ( SetItem ( 1124 ) ( SetItem ( 1138 ) ( SetItem ( 1166 ) ( SetItem ( 1243 ) ( SetItem ( 1269 ) ( SetItem ( 1289 ) ( SetItem ( 1343 ) ( SetItem ( 140 ) ( SetItem ( 1410 ) ( SetItem ( 1430 ) ( SetItem ( 1437 ) ( SetItem ( 1473 ) ( SetItem ( 1581 ) ( SetItem ( 16 ) ( SetItem ( 1643 ) ( SetItem ( 1667 ) ( SetItem ( 1703 ) ( SetItem ( 1734 ) ( SetItem ( 1778 ) ( SetItem ( 1812 ) ( SetItem ( 1826 ) ( SetItem ( 1855 ) ( SetItem ( 1875 ) ( SetItem ( 1909 ) ( SetItem ( 2051 ) ( SetItem ( 207 ) ( SetItem ( 2077 ) ( SetItem ( 212 ) ( SetItem ( 2138 ) ( SetItem ( 2143 ) ( SetItem ( 2167 ) ( SetItem ( 2171 ) ( SetItem ( 2176 ) ( SetItem ( 220 ) ( SetItem ( 2272 ) ( SetItem ( 2286 ) ( SetItem ( 2314 ) ( SetItem ( 233 ) ( SetItem ( 2410 ) ( SetItem ( 242 ) ( SetItem ( 2424 ) ( SetItem ( 2452 ) ( SetItem ( 250 ) ( SetItem ( 2554 ) ( SetItem ( 2574 ) ( SetItem ( 258 ) ( SetItem ( 2634 ) ( SetItem ( 2646 ) ( SetItem ( 266 ) ( SetItem ( 2674 ) ( SetItem ( 2711 ) ( SetItem ( 2723 ) ( SetItem ( 2763 ) ( SetItem ( 279 ) ( SetItem ( 2824 ) ( SetItem ( 2866 ) ( SetItem ( 287 ) ( SetItem ( 2887 ) ( SetItem ( 2902 ) ( SetItem ( 2905 ) ( SetItem ( 2929 ) ( SetItem ( 2944 ) ( SetItem ( 2950 ) ( SetItem ( 2989 ) ( SetItem ( 300 ) ( SetItem ( 3028 ) ( SetItem ( 3059 ) ( SetItem ( 3072 ) ( SetItem ( 308 ) ( SetItem ( 3092 ) ( SetItem ( 310 ) ( SetItem ( 3124 ) ( SetItem ( 3130 ) ( SetItem ( 3165 ) ( SetItem ( 3179 ) ( SetItem ( 318 ) ( SetItem ( 3197 ) ( SetItem ( 3207 ) ( SetItem ( 3225 ) ( SetItem ( 3241 ) ( SetItem ( 326 ) ( SetItem ( 3264 ) ( SetItem ( 3294 ) ( SetItem ( 3319 ) ( SetItem ( 3324 ) ( SetItem ( 3330 ) ( SetItem ( 3332 ) ( SetItem ( 334 ) ( SetItem ( 350 ) ( SetItem ( 358 ) ( SetItem ( 366 ) ( SetItem ( 379 ) ( SetItem ( 387 ) ( SetItem ( 445 ) ( SetItem ( 475 ) ( SetItem ( 485 ) ( SetItem ( 581 ) ( SetItem ( 677 ) ( SetItem ( 713 ) ( SetItem ( 821 ) ( SetItem ( 883 ) ( SetItem ( 907 ) ( SetItem ( 916 ) ( SetItem ( 952 ) SetItem ( 983 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xe3\xd9Y9" - - - 0 - - - ( 0 : ( 308 : ( 3822672185 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" - - - 2296 - - - #gas ( ( ( VGAS:Int +Int -32316 ) /Int 64 ) ) - - - 11 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32316 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 102 => 15 ) ) ( SetItem ( ( 1027 => 45 ) ) ( SetItem ( ( 1061 => 70 ) ) ( SetItem ( ( 1075 => 75 ) ) ( SetItem ( ( 1104 => 81 ) ) ( ( SetItem ( 1124 ) ( SetItem ( 1138 ) ( SetItem ( 1166 ) ( SetItem ( 1243 ) ( SetItem ( 1269 ) ( SetItem ( 1289 ) ( SetItem ( 1343 ) ( SetItem ( 140 ) ( SetItem ( 1410 ) ( SetItem ( 1430 ) ( SetItem ( 1437 ) ( SetItem ( 1473 ) ( SetItem ( 1581 ) ( SetItem ( 16 ) ( SetItem ( 1643 ) ( SetItem ( 1667 ) ( SetItem ( 1703 ) ( SetItem ( 1734 ) ( SetItem ( 1778 ) ( SetItem ( 1812 ) ( SetItem ( 1826 ) ( SetItem ( 1855 ) ( SetItem ( 1875 ) ( SetItem ( 1909 ) ( SetItem ( 2051 ) ( SetItem ( 207 ) ( SetItem ( 2077 ) ( SetItem ( 212 ) ( SetItem ( 2138 ) ( SetItem ( 2143 ) ( SetItem ( 2167 ) ( SetItem ( 2171 ) ( SetItem ( 2176 ) ( SetItem ( 220 ) ( SetItem ( 2272 ) ( SetItem ( 2286 ) ( SetItem ( 2314 ) ( SetItem ( 233 ) ( SetItem ( 2410 ) ( SetItem ( 242 ) ( SetItem ( 2424 ) ( SetItem ( 2452 ) ( SetItem ( 250 ) ( SetItem ( 2554 ) ( SetItem ( 2574 ) ( SetItem ( 258 ) ( SetItem ( 2634 ) ( SetItem ( 2646 ) ( SetItem ( 266 ) ( SetItem ( 2674 ) ( SetItem ( 2711 ) ( SetItem ( 2723 ) ( SetItem ( 2763 ) ( SetItem ( 279 ) ( SetItem ( 2824 ) ( SetItem ( 2866 ) ( SetItem ( 287 ) ( SetItem ( 2887 ) ( SetItem ( 2902 ) ( SetItem ( 2905 ) ( SetItem ( 2929 ) ( SetItem ( 2944 ) ( SetItem ( 2950 ) ( SetItem ( 2989 ) ( SetItem ( 300 ) ( SetItem ( 3028 ) ( SetItem ( 3059 ) ( SetItem ( 3072 ) ( SetItem ( 308 ) ( SetItem ( 3092 ) ( SetItem ( 310 ) ( SetItem ( 3124 ) ( SetItem ( 3130 ) ( SetItem ( 3165 ) ( SetItem ( 3179 ) ( SetItem ( 318 ) ( SetItem ( 3197 ) ( SetItem ( 3207 ) ( SetItem ( 3225 ) ( SetItem ( 3241 ) ( SetItem ( 326 ) ( SetItem ( 3264 ) ( SetItem ( 3294 ) ( SetItem ( 3319 ) ( SetItem ( 3324 ) ( SetItem ( 3330 ) ( SetItem ( 3332 ) ( SetItem ( 334 ) ( SetItem ( 350 ) ( SetItem ( 358 ) ( SetItem ( 366 ) ( SetItem ( 379 ) ( SetItem ( 387 ) ( SetItem ( 445 ) ( SetItem ( 475 ) ( SetItem ( 485 ) ( SetItem ( 581 ) ( SetItem ( 677 ) ( SetItem ( 713 ) ( SetItem ( 821 ) ( SetItem ( 883 ) ( SetItem ( 907 ) ( SetItem ( 916 ) ( SetItem ( 952 ) SetItem ( 983 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 83 ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\xe3\xd9Y9" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" ) - - - ( 0 => 28 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32316 ) ) +Int -87 ) ) ) - - - ( 0 => 6 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - ( SetItem ( 102 ) ( SetItem ( 1027 ) ( SetItem ( 1061 ) ( SetItem ( 1075 ) ( SetItem ( 1104 ) ( SetItem ( 1124 ) ( SetItem ( 1138 ) ( SetItem ( 1166 ) ( SetItem ( 1243 ) ( SetItem ( 1269 ) ( SetItem ( 1289 ) ( SetItem ( 1343 ) ( SetItem ( 140 ) ( SetItem ( 1410 ) ( SetItem ( 1430 ) ( SetItem ( 1437 ) ( SetItem ( 1473 ) ( SetItem ( 1581 ) ( SetItem ( 16 ) ( SetItem ( 1643 ) ( SetItem ( 1667 ) ( SetItem ( 1703 ) ( SetItem ( 1734 ) ( SetItem ( 1778 ) ( SetItem ( 1812 ) ( SetItem ( 1826 ) ( SetItem ( 1855 ) ( SetItem ( 1875 ) ( SetItem ( 1909 ) ( SetItem ( 2051 ) ( SetItem ( 207 ) ( SetItem ( 2077 ) ( SetItem ( 212 ) ( SetItem ( 2138 ) ( SetItem ( 2143 ) ( SetItem ( 2167 ) ( SetItem ( 2171 ) ( SetItem ( 2176 ) ( SetItem ( 220 ) ( SetItem ( 2272 ) ( SetItem ( 2286 ) ( SetItem ( 2314 ) ( SetItem ( 233 ) ( SetItem ( 2410 ) ( SetItem ( 242 ) ( SetItem ( 2424 ) ( SetItem ( 2452 ) ( SetItem ( 250 ) ( SetItem ( 2554 ) ( SetItem ( 2574 ) ( SetItem ( 258 ) ( SetItem ( 2634 ) ( SetItem ( 2646 ) ( SetItem ( 266 ) ( SetItem ( 2674 ) ( SetItem ( 2711 ) ( SetItem ( 2723 ) ( SetItem ( 2763 ) ( SetItem ( 279 ) ( SetItem ( 2824 ) ( SetItem ( 2866 ) ( SetItem ( 287 ) ( SetItem ( 2887 ) ( SetItem ( 2902 ) ( SetItem ( 2905 ) ( SetItem ( 2929 ) ( SetItem ( 2944 ) ( SetItem ( 2950 ) ( SetItem ( 2989 ) ( SetItem ( 300 ) ( SetItem ( 3028 ) ( SetItem ( 3059 ) ( SetItem ( 3072 ) ( SetItem ( 308 ) ( SetItem ( 3092 ) ( SetItem ( 310 ) ( SetItem ( 3124 ) ( SetItem ( 3130 ) ( SetItem ( 3165 ) ( SetItem ( 3179 ) ( SetItem ( 318 ) ( SetItem ( 3197 ) ( SetItem ( 3207 ) ( SetItem ( 3225 ) ( SetItem ( 3241 ) ( SetItem ( 326 ) ( SetItem ( 3264 ) ( SetItem ( 3294 ) ( SetItem ( 3319 ) ( SetItem ( 3324 ) ( SetItem ( 3330 ) ( SetItem ( 3332 ) ( SetItem ( 334 ) ( SetItem ( 350 ) ( SetItem ( 358 ) ( SetItem ( 366 ) ( SetItem ( 379 ) ( SetItem ( 387 ) ( SetItem ( 445 ) ( SetItem ( 475 ) ( SetItem ( 485 ) ( SetItem ( 581 ) ( SetItem ( 677 ) ( SetItem ( 713 ) ( SetItem ( 821 ) ( SetItem ( 883 ) ( SetItem ( 907 ) ( SetItem ( 916 ) ( SetItem ( 952 ) SetItem ( 983 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xfd\x04~\r" - - - 0 - - - ( 0 : ( 308 : ( 4244930061 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" - - - 2434 - - - #gas ( ( ( VGAS:Int +Int -32360 ) /Int 64 ) ) - - - 11 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32360 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 102 => 15 ) ) ( SetItem ( ( 1027 => 45 ) ) ( SetItem ( ( 1061 => 70 ) ) ( SetItem ( ( 1075 => 75 ) ) ( SetItem ( ( 1104 => 81 ) ) ( ( SetItem ( 1124 ) ( SetItem ( 1138 ) ( SetItem ( 1166 ) ( SetItem ( 1243 ) ( SetItem ( 1269 ) ( SetItem ( 1289 ) ( SetItem ( 1343 ) ( SetItem ( 140 ) ( SetItem ( 1410 ) ( SetItem ( 1430 ) ( SetItem ( 1437 ) ( SetItem ( 1473 ) ( SetItem ( 1581 ) ( SetItem ( 16 ) ( SetItem ( 1643 ) ( SetItem ( 1667 ) ( SetItem ( 1703 ) ( SetItem ( 1734 ) ( SetItem ( 1778 ) ( SetItem ( 1812 ) ( SetItem ( 1826 ) ( SetItem ( 1855 ) ( SetItem ( 1875 ) ( SetItem ( 1909 ) ( SetItem ( 2051 ) ( SetItem ( 207 ) ( SetItem ( 2077 ) ( SetItem ( 212 ) ( SetItem ( 2138 ) ( SetItem ( 2143 ) ( SetItem ( 2167 ) ( SetItem ( 2171 ) ( SetItem ( 2176 ) ( SetItem ( 220 ) ( SetItem ( 2272 ) ( SetItem ( 2286 ) ( SetItem ( 2314 ) ( SetItem ( 233 ) ( SetItem ( 2410 ) ( SetItem ( 242 ) ( SetItem ( 2424 ) ( SetItem ( 2452 ) ( SetItem ( 250 ) ( SetItem ( 2554 ) ( SetItem ( 2574 ) ( SetItem ( 258 ) ( SetItem ( 2634 ) ( SetItem ( 2646 ) ( SetItem ( 266 ) ( SetItem ( 2674 ) ( SetItem ( 2711 ) ( SetItem ( 2723 ) ( SetItem ( 2763 ) ( SetItem ( 279 ) ( SetItem ( 2824 ) ( SetItem ( 2866 ) ( SetItem ( 287 ) ( SetItem ( 2887 ) ( SetItem ( 2902 ) ( SetItem ( 2905 ) ( SetItem ( 2929 ) ( SetItem ( 2944 ) ( SetItem ( 2950 ) ( SetItem ( 2989 ) ( SetItem ( 300 ) ( SetItem ( 3028 ) ( SetItem ( 3059 ) ( SetItem ( 3072 ) ( SetItem ( 308 ) ( SetItem ( 3092 ) ( SetItem ( 310 ) ( SetItem ( 3124 ) ( SetItem ( 3130 ) ( SetItem ( 3165 ) ( SetItem ( 3179 ) ( SetItem ( 318 ) ( SetItem ( 3197 ) ( SetItem ( 3207 ) ( SetItem ( 3225 ) ( SetItem ( 3241 ) ( SetItem ( 326 ) ( SetItem ( 3264 ) ( SetItem ( 3294 ) ( SetItem ( 3319 ) ( SetItem ( 3324 ) ( SetItem ( 3330 ) ( SetItem ( 3332 ) ( SetItem ( 334 ) ( SetItem ( 350 ) ( SetItem ( 358 ) ( SetItem ( 366 ) ( SetItem ( 379 ) ( SetItem ( 387 ) ( SetItem ( 445 ) ( SetItem ( 475 ) ( SetItem ( 485 ) ( SetItem ( 581 ) ( SetItem ( 677 ) ( SetItem ( 713 ) ( SetItem ( 821 ) ( SetItem ( 883 ) ( SetItem ( 907 ) ( SetItem ( 916 ) ( SetItem ( 952 ) SetItem ( 983 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 83 ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\xfd\x04~\r" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003" ) - - - ( 0 => 28 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32360 ) ) +Int -87 ) ) ) - - - ( 0 => 6 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xe2\f\x9fq\x11a\x00fW\x80c\xe2\f\x9fq\x14a\x01^W\x80c\xe3\xd9Y9\x14a\x01fW\x80c\xfav&\xd4\x14a\x01nW\x80c\xfd\x04~\r\x14a\x01{W`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c>^<#\x14a\x00\xf2W\x80c?r\x86\xf4\x14a\x00\xfaW\x80cf\xd9\xa9\xa0\x14a\x01\x02W\x80c\x85\"l\x81\x14a\x01\x17W\x80c\x8e0\xcd9\x14a\x01,W[`\x00\x80\xfd[a\x00\xdca\x01\x83V[`@Qa\x00\xe9\x91\x90a\nVV[`@Q\x80\x91\x03\x90\xf3[a\x00\xdca\x01\xe5V[a\x00\xdca\x02EV[a\x01\na\x02\xa5V[`@Qa\x00\xe9\x91\x90a\n\xa3V[a\x01\x1fa\x03\x94V[`@Qa\x00\xe9\x91\x90a\x0b\x86V[a\x014a\x04dV[\x00[a\x01\na\x05\x9dV[a\x01\x1fa\x06\x83V[a\x01Na\x07SV[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xdca\x08\x80V[a\x014a\x08\xe0V[`\x07Ta\x01N\x90`\xff\x16\x81V[a\x014a\tjV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x03sW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x035W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\xc9V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x03\xd7\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x03\x90a\f\x00V[\x80\x15a\x04PW\x80`\x1f\x10a\x04%Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04PV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x043W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x03\xb8V[`\x00`@Qa\x04r\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x04\x8eW=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x04\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\tW=`\x00\x80>=`\x00\xfd[PP`@Qa\x059\x80\x82R\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01[`@Q\x80\x91\x03\x90\xa3\x80`\x01`\x01`\xa0\x1b\x03\x16c\x92\xd0\xd1S`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05\x82W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05\x96W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06kW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x06-W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xc1V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x03\x8bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xc6\x90a\f\x00V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xf2\x90a\f\x00V[\x80\x15a\x07?W\x80`\x1f\x10a\x07\x14Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07?V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07\"W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xa7V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07uWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08{W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\x03\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f:V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08\x1d\x91a\fkV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08ZW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08_V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08w\x91\x90a\f\x87V[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x01\xdbW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xbdWPPPPP\x90P\x90V[`\x00`@Qa\x08\xee\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\nW=`\x00\x80>=`\x00\xfd[P`@Qc\x81\xba\xd6\xf3`\xe0\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01\x81\x90R`\x00`D\x83\x01R`d\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16`\x84\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x81\xba\xd6\xf3\x90`\xa4\x01a\x04\xdbV[`\x00`@Qa\tx\x90a\nJV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\t\x94W=`\x00\x80>=`\x00\xfd[P`@Qc$\x8ec\xe1`\xe1\x1b\x81R`\x01`\x04\x82\x01\x81\x90R`$\x82\x01R`\x00`D\x82\x01\x81\x90R`d\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cI\x1c\xc7\xc2\x90`\x84\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x0eW=`\x00\x80>=`\x00\xfd[PP`@Qa\x05:\x81Ra\x059\x92P0\x91P\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01a\x05?V[`\xc4\x80a\f\xb1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n\x97W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\nrV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0bGW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0b2W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0b\x08V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\n\xcbV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0bqW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0bYV[\x83\x81\x11\x15a\x0b\x80W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xf3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0b\xd4\x81\x89\x89\x01\x8a\x85\x01a\x0bVV[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0b\xadV[P\x92\x97\x96PPPPPPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x14W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f4WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\f]\x81`\x04\x85\x01` \x87\x01a\x0bVV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\f}\x81\x84` \x87\x01a\x0bVV[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x99W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\xa9W`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa6\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x92\xd0\xd1S\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`@Qa\x059\x80\x82R\x903\x90\x7f\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef\x90` \x01`@Q\x80\x91\x03\x90\xa3V\xfe\xa2dipfsX\"\x12 \xc4\xed,\x92D\xec\xe5d\xe9\xb3\x06\x85\x99'V\xe9u\xe6\xe3\x12\xd6X\x10\x9b\xa3\xd1o\n(\f~mdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xc1:\xb2\xce\xfc\x19\xd2Yc\xc96\x11\xa2\x81H\xf17\x9a<\x8a\x05 6%~\xa20.\xf7\xdc\xce\x93dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbf\xe9=\xef\x11a\x00fW\x80c\xbf\xe9=\xef\x14a\x01^W\x80c\xd6\xa2\xecv\x14a\x01fW\x80c\xe2\f\x9fq\x14a\x01\xa5W\x80c\xfav&\xd4\x14a\x01\xadW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c(V\x1b\xe0\x14a\x00\xf2W\x80c>^<#\x14a\x00\xfcW\x80c?r\x86\xf4\x14a\x01\x04W\x80cf\xd9\xa9\xa0\x14a\x01\fW\x80c\x85\"l\x81\x14a\x01!W[`\x00\x80\xfd[a\x00\xdca\x01\xbaV[`@Qa\x00\xe9\x91\x90a\t\xf4V[`@Q\x80\x91\x03\x90\xf3[a\x00\xfaa\x02\x1cV[\x00[a\x00\xdca\x03'V[a\x00\xdca\x03\x87V[a\x01\x14a\x03\xe7V[`@Qa\x00\xe9\x91\x90a\nAV[a\x01)a\x04\xd6V[`@Qa\x00\xe9\x91\x90a\x0bLV[a\x01\x14a\x05\xa6V[a\x01)a\x06\x8cV[a\x01Na\x07\\V[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xfaa\x08\x89V[a\x01\x8d\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe9V[a\x00\xdca\t\x88V[`\x07Ta\x01N\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4W[PPPPP\x90P\x90V[`\x00`@Qa\x02*\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02FW=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qcu\xa1+G`\xe0\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91cu\xa1+G\x91a\x02\xb2\x91\x87\x91\x86\x91\x88\x91\x01a\x0b\xaeV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x02\xccW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x02\xe0W=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01`\x00\x87a>\x80\xf1`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>`\x00Q\x91P[P\x80`\xc8\x14a\x03!Wa\x03!a\x0b\xdeV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\x0bV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\x19\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05E\x90a\x0b\xf4V[\x80\x15a\x05\x92W\x80`\x1f\x10a\x05gWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x92V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05uW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xfaV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06tW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x066W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xcaV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xcf\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xfb\x90a\x0b\xf4V[\x80\x15a\x07HW\x80`\x1f\x10a\x07\x1dWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07HV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07+W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xb0V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07~WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08\x84W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\f\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f.V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08&\x91a\f_V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08cW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08hV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08\x80\x91\x90a\f{V[\x91PP[\x91\x90PV[`\x00`@Qa\x08\x97\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08\xb3W=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qc!F\x02\xdb`\xe2\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\x85\x18\x0bl\x91a\t\x1d\x91\x87\x91\x87\x91\x01a\f\xa4V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tKW=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01\x86a>\x80\xfa`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>PP`\x00Q`\xc8\x81\x14a\x03!Wa\x03!a\x0b\xdeV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[`\x94\x80a\f\xd1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n5W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\x10V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\n\xe5W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\n\xd0W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\n\xa6V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\niV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0b\x0fW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xf7V[\x83\x81\x11\x15a\x03!WPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x0b8\x81` \x86\x01` \x86\x01a\n\xf4V[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xa1W`?\x19\x88\x86\x03\x01\x84Ra\x0b\x8f\x85\x83Qa\x0b V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0bsV[P\x92\x97\x96PPPPPPPV[`\x01\x80`\xa0\x1b\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\x00a\x0b\xd5``\x83\x01\x84a\x0b V[\x95\x94PPPPPV[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x08W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f(WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\fQ\x81`\x04\x85\x01` \x87\x01a\n\xf4V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\fq\x81\x84` \x87\x01a\n\xf4V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x8dW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\x9dW`\x00\x80\xfd[\x93\x92PPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\f\xc8\x90\x83\x01\x84a\x0b V[\x94\x93PPPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 J(\xce\x92\x1b\x1c\x8b\\\xbe\xa1\xd6s\xd6\x00.\x1f\x03|SZ\x8c\xb9\x14\xbel\xd6\x14\x11\x101:\x80dsolcC\x00\x08\r\x003" - - - ( SetItem ( 102 ) ( SetItem ( 1035 ) ( SetItem ( 1143 ) ( SetItem ( 1205 ) ( SetItem ( 1229 ) ( SetItem ( 1238 ) ( SetItem ( 1274 ) ( SetItem ( 1305 ) ( SetItem ( 1349 ) ( SetItem ( 1383 ) ( SetItem ( 1397 ) ( SetItem ( 140 ) ( SetItem ( 1426 ) ( SetItem ( 1446 ) ( SetItem ( 1482 ) ( SetItem ( 1590 ) ( SetItem ( 16 ) ( SetItem ( 1652 ) ( SetItem ( 1676 ) ( SetItem ( 1712 ) ( SetItem ( 1743 ) ( SetItem ( 1787 ) ( SetItem ( 1821 ) ( SetItem ( 1835 ) ( SetItem ( 1864 ) ( SetItem ( 1884 ) ( SetItem ( 1918 ) ( SetItem ( 2060 ) ( SetItem ( 207 ) ( SetItem ( 2086 ) ( SetItem ( 212 ) ( SetItem ( 2147 ) ( SetItem ( 2152 ) ( SetItem ( 2176 ) ( SetItem ( 2180 ) ( SetItem ( 2185 ) ( SetItem ( 2199 ) ( SetItem ( 220 ) ( SetItem ( 2227 ) ( SetItem ( 233 ) ( SetItem ( 2333 ) ( SetItem ( 2359 ) ( SetItem ( 2379 ) ( SetItem ( 242 ) ( SetItem ( 2440 ) ( SetItem ( 250 ) ( SetItem ( 252 ) ( SetItem ( 2536 ) ( SetItem ( 2548 ) ( SetItem ( 2576 ) ( SetItem ( 260 ) ( SetItem ( 2613 ) ( SetItem ( 2625 ) ( SetItem ( 2665 ) ( SetItem ( 268 ) ( SetItem ( 2726 ) ( SetItem ( 276 ) ( SetItem ( 2768 ) ( SetItem ( 2789 ) ( SetItem ( 2804 ) ( SetItem ( 2807 ) ( SetItem ( 2831 ) ( SetItem ( 2848 ) ( SetItem ( 2872 ) ( SetItem ( 289 ) ( SetItem ( 2892 ) ( SetItem ( 2931 ) ( SetItem ( 2959 ) ( SetItem ( 297 ) ( SetItem ( 2977 ) ( SetItem ( 2990 ) ( SetItem ( 3029 ) ( SetItem ( 3038 ) ( SetItem ( 3060 ) ( SetItem ( 3080 ) ( SetItem ( 310 ) ( SetItem ( 3112 ) ( SetItem ( 3118 ) ( SetItem ( 3153 ) ( SetItem ( 3167 ) ( SetItem ( 318 ) ( SetItem ( 3185 ) ( SetItem ( 3195 ) ( SetItem ( 3213 ) ( SetItem ( 3229 ) ( SetItem ( 3236 ) ( SetItem ( 326 ) ( SetItem ( 3272 ) ( SetItem ( 3296 ) ( SetItem ( 3325 ) ( SetItem ( 334 ) ( SetItem ( 3350 ) ( SetItem ( 3355 ) ( SetItem ( 350 ) ( SetItem ( 358 ) ( SetItem ( 397 ) ( SetItem ( 421 ) ( SetItem ( 429 ) ( SetItem ( 442 ) ( SetItem ( 500 ) ( SetItem ( 530 ) ( SetItem ( 540 ) ( SetItem ( 554 ) ( SetItem ( 582 ) ( SetItem ( 690 ) ( SetItem ( 716 ) ( SetItem ( 736 ) ( SetItem ( 784 ) ( SetItem ( 801 ) ( SetItem ( 807 ) ( SetItem ( 903 ) SetItem ( 999 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"(V\x1b\xe0" - - - 0 - - - ( 0 : ( 250 : ( 676731872 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003" - - - 564 - - - #gas ( ( ( VGAS:Int +Int -32279 ) /Int 64 ) ) - - - 9 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32279 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbf\xe9=\xef\x11a\x00fW\x80c\xbf\xe9=\xef\x14a\x01^W\x80c\xd6\xa2\xecv\x14a\x01fW\x80c\xe2\f\x9fq\x14a\x01\xa5W\x80c\xfav&\xd4\x14a\x01\xadW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c(V\x1b\xe0\x14a\x00\xf2W\x80c>^<#\x14a\x00\xfcW\x80c?r\x86\xf4\x14a\x01\x04W\x80cf\xd9\xa9\xa0\x14a\x01\fW\x80c\x85\"l\x81\x14a\x01!W[`\x00\x80\xfd[a\x00\xdca\x01\xbaV[`@Qa\x00\xe9\x91\x90a\t\xf4V[`@Q\x80\x91\x03\x90\xf3[a\x00\xfaa\x02\x1cV[\x00[a\x00\xdca\x03'V[a\x00\xdca\x03\x87V[a\x01\x14a\x03\xe7V[`@Qa\x00\xe9\x91\x90a\nAV[a\x01)a\x04\xd6V[`@Qa\x00\xe9\x91\x90a\x0bLV[a\x01\x14a\x05\xa6V[a\x01)a\x06\x8cV[a\x01Na\x07\\V[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xfaa\x08\x89V[a\x01\x8d\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe9V[a\x00\xdca\t\x88V[`\x07Ta\x01N\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4W[PPPPP\x90P\x90V[`\x00`@Qa\x02*\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02FW=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qcu\xa1+G`\xe0\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91cu\xa1+G\x91a\x02\xb2\x91\x87\x91\x86\x91\x88\x91\x01a\x0b\xaeV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x02\xccW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x02\xe0W=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01`\x00\x87a>\x80\xf1`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>`\x00Q\x91P[P\x80`\xc8\x14a\x03!Wa\x03!a\x0b\xdeV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\x0bV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\x19\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05E\x90a\x0b\xf4V[\x80\x15a\x05\x92W\x80`\x1f\x10a\x05gWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x92V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05uW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xfaV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06tW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x066W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xcaV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xcf\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xfb\x90a\x0b\xf4V[\x80\x15a\x07HW\x80`\x1f\x10a\x07\x1dWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07HV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07+W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xb0V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07~WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08\x84W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\f\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f.V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08&\x91a\f_V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08cW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08hV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08\x80\x91\x90a\f{V[\x91PP[\x91\x90PV[`\x00`@Qa\x08\x97\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08\xb3W=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qc!F\x02\xdb`\xe2\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\x85\x18\x0bl\x91a\t\x1d\x91\x87\x91\x87\x91\x01a\f\xa4V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tKW=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01\x86a>\x80\xfa`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>PP`\x00Q`\xc8\x81\x14a\x03!Wa\x03!a\x0b\xdeV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[`\x94\x80a\f\xd1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n5W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\x10V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\n\xe5W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\n\xd0W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\n\xa6V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\niV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0b\x0fW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xf7V[\x83\x81\x11\x15a\x03!WPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x0b8\x81` \x86\x01` \x86\x01a\n\xf4V[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xa1W`?\x19\x88\x86\x03\x01\x84Ra\x0b\x8f\x85\x83Qa\x0b V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0bsV[P\x92\x97\x96PPPPPPPV[`\x01\x80`\xa0\x1b\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\x00a\x0b\xd5``\x83\x01\x84a\x0b V[\x95\x94PPPPPV[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x08W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f(WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\fQ\x81`\x04\x85\x01` \x87\x01a\n\xf4V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\fq\x81\x84` \x87\x01a\n\xf4V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x8dW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\x9dW`\x00\x80\xfd[\x93\x92PPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\f\xc8\x90\x83\x01\x84a\x0b V[\x94\x93PPPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 J(\xce\x92\x1b\x1c\x8b\\\xbe\xa1\xd6s\xd6\x00.\x1f\x03|SZ\x8c\xb9\x14\xbel\xd6\x14\x11\x101:\x80dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbf\xe9=\xef\x11a\x00fW\x80c\xbf\xe9=\xef\x14a\x01^W\x80c\xd6\xa2\xecv\x14a\x01fW\x80c\xe2\f\x9fq\x14a\x01\xa5W\x80c\xfav&\xd4\x14a\x01\xadW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c(V\x1b\xe0\x14a\x00\xf2W\x80c>^<#\x14a\x00\xfcW\x80c?r\x86\xf4\x14a\x01\x04W\x80cf\xd9\xa9\xa0\x14a\x01\fW\x80c\x85\"l\x81\x14a\x01!W[`\x00\x80\xfd[a\x00\xdca\x01\xbaV[`@Qa\x00\xe9\x91\x90a\t\xf4V[`@Q\x80\x91\x03\x90\xf3[a\x00\xfaa\x02\x1cV[\x00[a\x00\xdca\x03'V[a\x00\xdca\x03\x87V[a\x01\x14a\x03\xe7V[`@Qa\x00\xe9\x91\x90a\nAV[a\x01)a\x04\xd6V[`@Qa\x00\xe9\x91\x90a\x0bLV[a\x01\x14a\x05\xa6V[a\x01)a\x06\x8cV[a\x01Na\x07\\V[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xfaa\x08\x89V[a\x01\x8d\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe9V[a\x00\xdca\t\x88V[`\x07Ta\x01N\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4W[PPPPP\x90P\x90V[`\x00`@Qa\x02*\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02FW=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qcu\xa1+G`\xe0\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91cu\xa1+G\x91a\x02\xb2\x91\x87\x91\x86\x91\x88\x91\x01a\x0b\xaeV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x02\xccW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x02\xe0W=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01`\x00\x87a>\x80\xf1`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>`\x00Q\x91P[P\x80`\xc8\x14a\x03!Wa\x03!a\x0b\xdeV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\x0bV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\x19\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05E\x90a\x0b\xf4V[\x80\x15a\x05\x92W\x80`\x1f\x10a\x05gWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x92V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05uW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xfaV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06tW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x066W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xcaV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xcf\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xfb\x90a\x0b\xf4V[\x80\x15a\x07HW\x80`\x1f\x10a\x07\x1dWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07HV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07+W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xb0V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07~WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08\x84W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\f\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f.V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08&\x91a\f_V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08cW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08hV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08\x80\x91\x90a\f{V[\x91PP[\x91\x90PV[`\x00`@Qa\x08\x97\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08\xb3W=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qc!F\x02\xdb`\xe2\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\x85\x18\x0bl\x91a\t\x1d\x91\x87\x91\x87\x91\x01a\f\xa4V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tKW=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01\x86a>\x80\xfa`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>PP`\x00Q`\xc8\x81\x14a\x03!Wa\x03!a\x0b\xdeV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[`\x94\x80a\f\xd1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n5W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\x10V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\n\xe5W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\n\xd0W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\n\xa6V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\niV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0b\x0fW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xf7V[\x83\x81\x11\x15a\x03!WPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x0b8\x81` \x86\x01` \x86\x01a\n\xf4V[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xa1W`?\x19\x88\x86\x03\x01\x84Ra\x0b\x8f\x85\x83Qa\x0b V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0bsV[P\x92\x97\x96PPPPPPPV[`\x01\x80`\xa0\x1b\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\x00a\x0b\xd5``\x83\x01\x84a\x0b V[\x95\x94PPPPPV[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x08W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f(WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\fQ\x81`\x04\x85\x01` \x87\x01a\n\xf4V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\fq\x81\x84` \x87\x01a\n\xf4V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x8dW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\x9dW`\x00\x80\xfd[\x93\x92PPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\f\xc8\x90\x83\x01\x84a\x0b V[\x94\x93PPPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 J(\xce\x92\x1b\x1c\x8b\\\xbe\xa1\xd6s\xd6\x00.\x1f\x03|SZ\x8c\xb9\x14\xbel\xd6\x14\x11\x101:\x80dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 102 => 15 ) ) ( SetItem ( ( 1035 => 44 ) ) ( SetItem ( ( 1143 => 69 ) ) ( ( SetItem ( 1205 ) ( SetItem ( 1229 ) ( SetItem ( 1238 ) ( SetItem ( 1274 ) ( SetItem ( 1305 ) ( SetItem ( 1349 ) ( SetItem ( 1383 ) ( SetItem ( 1397 ) ( SetItem ( 140 ) ( SetItem ( 1426 ) ( SetItem ( 1446 ) ( SetItem ( 1482 ) ( SetItem ( 1590 ) ( SetItem ( 16 ) ( SetItem ( 1652 ) ( SetItem ( 1676 ) ( SetItem ( 1712 ) ( SetItem ( 1743 ) ( SetItem ( 1787 ) ( SetItem ( 1821 ) ( SetItem ( 1835 ) ( SetItem ( 1864 ) ( SetItem ( 1884 ) ( SetItem ( 1918 ) ( SetItem ( 2060 ) ( SetItem ( 207 ) ( SetItem ( 2086 ) ( SetItem ( 212 ) ( SetItem ( 2147 ) ( SetItem ( 2152 ) ( SetItem ( 2176 ) ( SetItem ( 2180 ) ( SetItem ( 2185 ) ( SetItem ( 2199 ) ( SetItem ( 220 ) ( SetItem ( 2227 ) ( SetItem ( 233 ) ( SetItem ( 2333 ) ( SetItem ( 2359 ) ( SetItem ( 2379 ) ( SetItem ( 242 ) ( SetItem ( 2440 ) ( SetItem ( 250 ) ( SetItem ( 252 ) ( SetItem ( 2536 ) ( SetItem ( 2548 ) ( SetItem ( 2576 ) ( SetItem ( 260 ) ( SetItem ( 2613 ) ( SetItem ( 2625 ) ( SetItem ( 2665 ) ( SetItem ( 268 ) ( SetItem ( 2726 ) ( SetItem ( 276 ) ( SetItem ( 2768 ) ( SetItem ( 2789 ) ( SetItem ( 2804 ) ( SetItem ( 2807 ) ( SetItem ( 2831 ) ( SetItem ( 2848 ) ( SetItem ( 2872 ) ( SetItem ( 289 ) ( SetItem ( 2892 ) ( SetItem ( 2931 ) ( SetItem ( 2959 ) ( SetItem ( 297 ) ( SetItem ( 2977 ) ( SetItem ( 2990 ) ( SetItem ( 3029 ) ( SetItem ( 3038 ) ( SetItem ( 3060 ) ( SetItem ( 3080 ) ( SetItem ( 310 ) ( SetItem ( 3112 ) ( SetItem ( 3118 ) ( SetItem ( 3153 ) ( SetItem ( 3167 ) ( SetItem ( 318 ) ( SetItem ( 3185 ) ( SetItem ( 3195 ) ( SetItem ( 3213 ) ( SetItem ( 3229 ) ( SetItem ( 3236 ) ( SetItem ( 326 ) ( SetItem ( 3272 ) ( SetItem ( 3296 ) ( SetItem ( 3325 ) ( SetItem ( 334 ) ( SetItem ( 3350 ) ( SetItem ( 3355 ) ( SetItem ( 350 ) ( SetItem ( 358 ) ( SetItem ( 397 ) ( SetItem ( 421 ) ( SetItem ( 429 ) ( SetItem ( 442 ) ( SetItem ( 500 ) ( SetItem ( 530 ) ( SetItem ( 540 ) ( SetItem ( 554 ) ( SetItem ( 582 ) ( SetItem ( 690 ) ( SetItem ( 716 ) ( SetItem ( 736 ) ( SetItem ( 784 ) ( SetItem ( 801 ) ( SetItem ( 807 ) ( SetItem ( 903 ) SetItem ( 999 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 74 ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"(V\x1b\xe0" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003" ) - - - ( 0 => 27 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32279 ) ) +Int -75 ) ) ) - - - ( 0 => 4 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbf\xe9=\xef\x11a\x00fW\x80c\xbf\xe9=\xef\x14a\x01^W\x80c\xd6\xa2\xecv\x14a\x01fW\x80c\xe2\f\x9fq\x14a\x01\xa5W\x80c\xfav&\xd4\x14a\x01\xadW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c(V\x1b\xe0\x14a\x00\xf2W\x80c>^<#\x14a\x00\xfcW\x80c?r\x86\xf4\x14a\x01\x04W\x80cf\xd9\xa9\xa0\x14a\x01\fW\x80c\x85\"l\x81\x14a\x01!W[`\x00\x80\xfd[a\x00\xdca\x01\xbaV[`@Qa\x00\xe9\x91\x90a\t\xf4V[`@Q\x80\x91\x03\x90\xf3[a\x00\xfaa\x02\x1cV[\x00[a\x00\xdca\x03'V[a\x00\xdca\x03\x87V[a\x01\x14a\x03\xe7V[`@Qa\x00\xe9\x91\x90a\nAV[a\x01)a\x04\xd6V[`@Qa\x00\xe9\x91\x90a\x0bLV[a\x01\x14a\x05\xa6V[a\x01)a\x06\x8cV[a\x01Na\x07\\V[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xfaa\x08\x89V[a\x01\x8d\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe9V[a\x00\xdca\t\x88V[`\x07Ta\x01N\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4W[PPPPP\x90P\x90V[`\x00`@Qa\x02*\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02FW=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qcu\xa1+G`\xe0\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91cu\xa1+G\x91a\x02\xb2\x91\x87\x91\x86\x91\x88\x91\x01a\x0b\xaeV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x02\xccW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x02\xe0W=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01`\x00\x87a>\x80\xf1`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>`\x00Q\x91P[P\x80`\xc8\x14a\x03!Wa\x03!a\x0b\xdeV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\x0bV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\x19\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05E\x90a\x0b\xf4V[\x80\x15a\x05\x92W\x80`\x1f\x10a\x05gWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x92V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05uW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xfaV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06tW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x066W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xcaV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xcf\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xfb\x90a\x0b\xf4V[\x80\x15a\x07HW\x80`\x1f\x10a\x07\x1dWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07HV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07+W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xb0V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07~WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08\x84W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\f\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f.V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08&\x91a\f_V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08cW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08hV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08\x80\x91\x90a\f{V[\x91PP[\x91\x90PV[`\x00`@Qa\x08\x97\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08\xb3W=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qc!F\x02\xdb`\xe2\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\x85\x18\x0bl\x91a\t\x1d\x91\x87\x91\x87\x91\x01a\f\xa4V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tKW=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01\x86a>\x80\xfa`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>PP`\x00Q`\xc8\x81\x14a\x03!Wa\x03!a\x0b\xdeV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[`\x94\x80a\f\xd1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n5W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\x10V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\n\xe5W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\n\xd0W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\n\xa6V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\niV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0b\x0fW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xf7V[\x83\x81\x11\x15a\x03!WPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x0b8\x81` \x86\x01` \x86\x01a\n\xf4V[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xa1W`?\x19\x88\x86\x03\x01\x84Ra\x0b\x8f\x85\x83Qa\x0b V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0bsV[P\x92\x97\x96PPPPPPPV[`\x01\x80`\xa0\x1b\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\x00a\x0b\xd5``\x83\x01\x84a\x0b V[\x95\x94PPPPPV[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x08W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f(WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\fQ\x81`\x04\x85\x01` \x87\x01a\n\xf4V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\fq\x81\x84` \x87\x01a\n\xf4V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x8dW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\x9dW`\x00\x80\xfd[\x93\x92PPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\f\xc8\x90\x83\x01\x84a\x0b V[\x94\x93PPPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 J(\xce\x92\x1b\x1c\x8b\\\xbe\xa1\xd6s\xd6\x00.\x1f\x03|SZ\x8c\xb9\x14\xbel\xd6\x14\x11\x101:\x80dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbf\xe9=\xef\x11a\x00fW\x80c\xbf\xe9=\xef\x14a\x01^W\x80c\xd6\xa2\xecv\x14a\x01fW\x80c\xe2\f\x9fq\x14a\x01\xa5W\x80c\xfav&\xd4\x14a\x01\xadW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c(V\x1b\xe0\x14a\x00\xf2W\x80c>^<#\x14a\x00\xfcW\x80c?r\x86\xf4\x14a\x01\x04W\x80cf\xd9\xa9\xa0\x14a\x01\fW\x80c\x85\"l\x81\x14a\x01!W[`\x00\x80\xfd[a\x00\xdca\x01\xbaV[`@Qa\x00\xe9\x91\x90a\t\xf4V[`@Q\x80\x91\x03\x90\xf3[a\x00\xfaa\x02\x1cV[\x00[a\x00\xdca\x03'V[a\x00\xdca\x03\x87V[a\x01\x14a\x03\xe7V[`@Qa\x00\xe9\x91\x90a\nAV[a\x01)a\x04\xd6V[`@Qa\x00\xe9\x91\x90a\x0bLV[a\x01\x14a\x05\xa6V[a\x01)a\x06\x8cV[a\x01Na\x07\\V[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xfaa\x08\x89V[a\x01\x8d\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe9V[a\x00\xdca\t\x88V[`\x07Ta\x01N\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4W[PPPPP\x90P\x90V[`\x00`@Qa\x02*\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02FW=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qcu\xa1+G`\xe0\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91cu\xa1+G\x91a\x02\xb2\x91\x87\x91\x86\x91\x88\x91\x01a\x0b\xaeV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x02\xccW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x02\xe0W=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01`\x00\x87a>\x80\xf1`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>`\x00Q\x91P[P\x80`\xc8\x14a\x03!Wa\x03!a\x0b\xdeV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\x0bV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\x19\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05E\x90a\x0b\xf4V[\x80\x15a\x05\x92W\x80`\x1f\x10a\x05gWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x92V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05uW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xfaV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06tW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x066W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xcaV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xcf\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xfb\x90a\x0b\xf4V[\x80\x15a\x07HW\x80`\x1f\x10a\x07\x1dWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07HV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07+W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xb0V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07~WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08\x84W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\f\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f.V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08&\x91a\f_V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08cW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08hV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08\x80\x91\x90a\f{V[\x91PP[\x91\x90PV[`\x00`@Qa\x08\x97\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08\xb3W=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qc!F\x02\xdb`\xe2\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\x85\x18\x0bl\x91a\t\x1d\x91\x87\x91\x87\x91\x01a\f\xa4V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tKW=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01\x86a>\x80\xfa`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>PP`\x00Q`\xc8\x81\x14a\x03!Wa\x03!a\x0b\xdeV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[`\x94\x80a\f\xd1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n5W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\x10V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\n\xe5W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\n\xd0W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\n\xa6V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\niV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0b\x0fW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xf7V[\x83\x81\x11\x15a\x03!WPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x0b8\x81` \x86\x01` \x86\x01a\n\xf4V[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xa1W`?\x19\x88\x86\x03\x01\x84Ra\x0b\x8f\x85\x83Qa\x0b V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0bsV[P\x92\x97\x96PPPPPPPV[`\x01\x80`\xa0\x1b\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\x00a\x0b\xd5``\x83\x01\x84a\x0b V[\x95\x94PPPPPV[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x08W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f(WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\fQ\x81`\x04\x85\x01` \x87\x01a\n\xf4V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\fq\x81\x84` \x87\x01a\n\xf4V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x8dW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\x9dW`\x00\x80\xfd[\x93\x92PPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\f\xc8\x90\x83\x01\x84a\x0b V[\x94\x93PPPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 J(\xce\x92\x1b\x1c\x8b\\\xbe\xa1\xd6s\xd6\x00.\x1f\x03|SZ\x8c\xb9\x14\xbel\xd6\x14\x11\x101:\x80dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbf\xe9=\xef\x11a\x00fW\x80c\xbf\xe9=\xef\x14a\x01^W\x80c\xd6\xa2\xecv\x14a\x01fW\x80c\xe2\f\x9fq\x14a\x01\xa5W\x80c\xfav&\xd4\x14a\x01\xadW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c(V\x1b\xe0\x14a\x00\xf2W\x80c>^<#\x14a\x00\xfcW\x80c?r\x86\xf4\x14a\x01\x04W\x80cf\xd9\xa9\xa0\x14a\x01\fW\x80c\x85\"l\x81\x14a\x01!W[`\x00\x80\xfd[a\x00\xdca\x01\xbaV[`@Qa\x00\xe9\x91\x90a\t\xf4V[`@Q\x80\x91\x03\x90\xf3[a\x00\xfaa\x02\x1cV[\x00[a\x00\xdca\x03'V[a\x00\xdca\x03\x87V[a\x01\x14a\x03\xe7V[`@Qa\x00\xe9\x91\x90a\nAV[a\x01)a\x04\xd6V[`@Qa\x00\xe9\x91\x90a\x0bLV[a\x01\x14a\x05\xa6V[a\x01)a\x06\x8cV[a\x01Na\x07\\V[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xfaa\x08\x89V[a\x01\x8d\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe9V[a\x00\xdca\t\x88V[`\x07Ta\x01N\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4W[PPPPP\x90P\x90V[`\x00`@Qa\x02*\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02FW=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qcu\xa1+G`\xe0\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91cu\xa1+G\x91a\x02\xb2\x91\x87\x91\x86\x91\x88\x91\x01a\x0b\xaeV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x02\xccW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x02\xe0W=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01`\x00\x87a>\x80\xf1`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>`\x00Q\x91P[P\x80`\xc8\x14a\x03!Wa\x03!a\x0b\xdeV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\x0bV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\x19\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05E\x90a\x0b\xf4V[\x80\x15a\x05\x92W\x80`\x1f\x10a\x05gWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x92V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05uW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xfaV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06tW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x066W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xcaV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xcf\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xfb\x90a\x0b\xf4V[\x80\x15a\x07HW\x80`\x1f\x10a\x07\x1dWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07HV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07+W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xb0V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07~WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08\x84W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\f\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f.V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08&\x91a\f_V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08cW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08hV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08\x80\x91\x90a\f{V[\x91PP[\x91\x90PV[`\x00`@Qa\x08\x97\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08\xb3W=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qc!F\x02\xdb`\xe2\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\x85\x18\x0bl\x91a\t\x1d\x91\x87\x91\x87\x91\x01a\f\xa4V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tKW=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01\x86a>\x80\xfa`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>PP`\x00Q`\xc8\x81\x14a\x03!Wa\x03!a\x0b\xdeV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[`\x94\x80a\f\xd1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n5W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\x10V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\n\xe5W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\n\xd0W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\n\xa6V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\niV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0b\x0fW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xf7V[\x83\x81\x11\x15a\x03!WPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x0b8\x81` \x86\x01` \x86\x01a\n\xf4V[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xa1W`?\x19\x88\x86\x03\x01\x84Ra\x0b\x8f\x85\x83Qa\x0b V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0bsV[P\x92\x97\x96PPPPPPPV[`\x01\x80`\xa0\x1b\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\x00a\x0b\xd5``\x83\x01\x84a\x0b V[\x95\x94PPPPPV[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x08W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f(WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\fQ\x81`\x04\x85\x01` \x87\x01a\n\xf4V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\fq\x81\x84` \x87\x01a\n\xf4V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x8dW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\x9dW`\x00\x80\xfd[\x93\x92PPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\f\xc8\x90\x83\x01\x84a\x0b V[\x94\x93PPPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 J(\xce\x92\x1b\x1c\x8b\\\xbe\xa1\xd6s\xd6\x00.\x1f\x03|SZ\x8c\xb9\x14\xbel\xd6\x14\x11\x101:\x80dsolcC\x00\x08\r\x003" - - - ( SetItem ( 102 ) ( SetItem ( 1035 ) ( SetItem ( 1143 ) ( SetItem ( 1205 ) ( SetItem ( 1229 ) ( SetItem ( 1238 ) ( SetItem ( 1274 ) ( SetItem ( 1305 ) ( SetItem ( 1349 ) ( SetItem ( 1383 ) ( SetItem ( 1397 ) ( SetItem ( 140 ) ( SetItem ( 1426 ) ( SetItem ( 1446 ) ( SetItem ( 1482 ) ( SetItem ( 1590 ) ( SetItem ( 16 ) ( SetItem ( 1652 ) ( SetItem ( 1676 ) ( SetItem ( 1712 ) ( SetItem ( 1743 ) ( SetItem ( 1787 ) ( SetItem ( 1821 ) ( SetItem ( 1835 ) ( SetItem ( 1864 ) ( SetItem ( 1884 ) ( SetItem ( 1918 ) ( SetItem ( 2060 ) ( SetItem ( 207 ) ( SetItem ( 2086 ) ( SetItem ( 212 ) ( SetItem ( 2147 ) ( SetItem ( 2152 ) ( SetItem ( 2176 ) ( SetItem ( 2180 ) ( SetItem ( 2185 ) ( SetItem ( 2199 ) ( SetItem ( 220 ) ( SetItem ( 2227 ) ( SetItem ( 233 ) ( SetItem ( 2333 ) ( SetItem ( 2359 ) ( SetItem ( 2379 ) ( SetItem ( 242 ) ( SetItem ( 2440 ) ( SetItem ( 250 ) ( SetItem ( 252 ) ( SetItem ( 2536 ) ( SetItem ( 2548 ) ( SetItem ( 2576 ) ( SetItem ( 260 ) ( SetItem ( 2613 ) ( SetItem ( 2625 ) ( SetItem ( 2665 ) ( SetItem ( 268 ) ( SetItem ( 2726 ) ( SetItem ( 276 ) ( SetItem ( 2768 ) ( SetItem ( 2789 ) ( SetItem ( 2804 ) ( SetItem ( 2807 ) ( SetItem ( 2831 ) ( SetItem ( 2848 ) ( SetItem ( 2872 ) ( SetItem ( 289 ) ( SetItem ( 2892 ) ( SetItem ( 2931 ) ( SetItem ( 2959 ) ( SetItem ( 297 ) ( SetItem ( 2977 ) ( SetItem ( 2990 ) ( SetItem ( 3029 ) ( SetItem ( 3038 ) ( SetItem ( 3060 ) ( SetItem ( 3080 ) ( SetItem ( 310 ) ( SetItem ( 3112 ) ( SetItem ( 3118 ) ( SetItem ( 3153 ) ( SetItem ( 3167 ) ( SetItem ( 318 ) ( SetItem ( 3185 ) ( SetItem ( 3195 ) ( SetItem ( 3213 ) ( SetItem ( 3229 ) ( SetItem ( 3236 ) ( SetItem ( 326 ) ( SetItem ( 3272 ) ( SetItem ( 3296 ) ( SetItem ( 3325 ) ( SetItem ( 334 ) ( SetItem ( 3350 ) ( SetItem ( 3355 ) ( SetItem ( 350 ) ( SetItem ( 358 ) ( SetItem ( 397 ) ( SetItem ( 421 ) ( SetItem ( 429 ) ( SetItem ( 442 ) ( SetItem ( 500 ) ( SetItem ( 530 ) ( SetItem ( 540 ) ( SetItem ( 554 ) ( SetItem ( 582 ) ( SetItem ( 690 ) ( SetItem ( 716 ) ( SetItem ( 736 ) ( SetItem ( 784 ) ( SetItem ( 801 ) ( SetItem ( 807 ) ( SetItem ( 903 ) SetItem ( 999 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xbf\xe9=\xef" - - - 0 - - - ( 0 : ( 250 : ( 3219733999 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003" - - - 2209 - - - #gas ( ( ( VGAS:Int +Int -32278 ) /Int 64 ) ) - - - 9 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32278 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbf\xe9=\xef\x11a\x00fW\x80c\xbf\xe9=\xef\x14a\x01^W\x80c\xd6\xa2\xecv\x14a\x01fW\x80c\xe2\f\x9fq\x14a\x01\xa5W\x80c\xfav&\xd4\x14a\x01\xadW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c(V\x1b\xe0\x14a\x00\xf2W\x80c>^<#\x14a\x00\xfcW\x80c?r\x86\xf4\x14a\x01\x04W\x80cf\xd9\xa9\xa0\x14a\x01\fW\x80c\x85\"l\x81\x14a\x01!W[`\x00\x80\xfd[a\x00\xdca\x01\xbaV[`@Qa\x00\xe9\x91\x90a\t\xf4V[`@Q\x80\x91\x03\x90\xf3[a\x00\xfaa\x02\x1cV[\x00[a\x00\xdca\x03'V[a\x00\xdca\x03\x87V[a\x01\x14a\x03\xe7V[`@Qa\x00\xe9\x91\x90a\nAV[a\x01)a\x04\xd6V[`@Qa\x00\xe9\x91\x90a\x0bLV[a\x01\x14a\x05\xa6V[a\x01)a\x06\x8cV[a\x01Na\x07\\V[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xfaa\x08\x89V[a\x01\x8d\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe9V[a\x00\xdca\t\x88V[`\x07Ta\x01N\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4W[PPPPP\x90P\x90V[`\x00`@Qa\x02*\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02FW=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qcu\xa1+G`\xe0\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91cu\xa1+G\x91a\x02\xb2\x91\x87\x91\x86\x91\x88\x91\x01a\x0b\xaeV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x02\xccW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x02\xe0W=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01`\x00\x87a>\x80\xf1`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>`\x00Q\x91P[P\x80`\xc8\x14a\x03!Wa\x03!a\x0b\xdeV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\x0bV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\x19\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05E\x90a\x0b\xf4V[\x80\x15a\x05\x92W\x80`\x1f\x10a\x05gWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x92V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05uW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xfaV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06tW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x066W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xcaV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xcf\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xfb\x90a\x0b\xf4V[\x80\x15a\x07HW\x80`\x1f\x10a\x07\x1dWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07HV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07+W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xb0V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07~WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08\x84W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\f\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f.V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08&\x91a\f_V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08cW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08hV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08\x80\x91\x90a\f{V[\x91PP[\x91\x90PV[`\x00`@Qa\x08\x97\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08\xb3W=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qc!F\x02\xdb`\xe2\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\x85\x18\x0bl\x91a\t\x1d\x91\x87\x91\x87\x91\x01a\f\xa4V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tKW=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01\x86a>\x80\xfa`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>PP`\x00Q`\xc8\x81\x14a\x03!Wa\x03!a\x0b\xdeV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[`\x94\x80a\f\xd1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n5W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\x10V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\n\xe5W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\n\xd0W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\n\xa6V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\niV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0b\x0fW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xf7V[\x83\x81\x11\x15a\x03!WPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x0b8\x81` \x86\x01` \x86\x01a\n\xf4V[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xa1W`?\x19\x88\x86\x03\x01\x84Ra\x0b\x8f\x85\x83Qa\x0b V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0bsV[P\x92\x97\x96PPPPPPPV[`\x01\x80`\xa0\x1b\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\x00a\x0b\xd5``\x83\x01\x84a\x0b V[\x95\x94PPPPPV[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x08W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f(WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\fQ\x81`\x04\x85\x01` \x87\x01a\n\xf4V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\fq\x81\x84` \x87\x01a\n\xf4V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x8dW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\x9dW`\x00\x80\xfd[\x93\x92PPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\f\xc8\x90\x83\x01\x84a\x0b V[\x94\x93PPPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 J(\xce\x92\x1b\x1c\x8b\\\xbe\xa1\xd6s\xd6\x00.\x1f\x03|SZ\x8c\xb9\x14\xbel\xd6\x14\x11\x101:\x80dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbf\xe9=\xef\x11a\x00fW\x80c\xbf\xe9=\xef\x14a\x01^W\x80c\xd6\xa2\xecv\x14a\x01fW\x80c\xe2\f\x9fq\x14a\x01\xa5W\x80c\xfav&\xd4\x14a\x01\xadW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c(V\x1b\xe0\x14a\x00\xf2W\x80c>^<#\x14a\x00\xfcW\x80c?r\x86\xf4\x14a\x01\x04W\x80cf\xd9\xa9\xa0\x14a\x01\fW\x80c\x85\"l\x81\x14a\x01!W[`\x00\x80\xfd[a\x00\xdca\x01\xbaV[`@Qa\x00\xe9\x91\x90a\t\xf4V[`@Q\x80\x91\x03\x90\xf3[a\x00\xfaa\x02\x1cV[\x00[a\x00\xdca\x03'V[a\x00\xdca\x03\x87V[a\x01\x14a\x03\xe7V[`@Qa\x00\xe9\x91\x90a\nAV[a\x01)a\x04\xd6V[`@Qa\x00\xe9\x91\x90a\x0bLV[a\x01\x14a\x05\xa6V[a\x01)a\x06\x8cV[a\x01Na\x07\\V[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xfaa\x08\x89V[a\x01\x8d\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe9V[a\x00\xdca\t\x88V[`\x07Ta\x01N\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4W[PPPPP\x90P\x90V[`\x00`@Qa\x02*\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02FW=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qcu\xa1+G`\xe0\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91cu\xa1+G\x91a\x02\xb2\x91\x87\x91\x86\x91\x88\x91\x01a\x0b\xaeV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x02\xccW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x02\xe0W=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01`\x00\x87a>\x80\xf1`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>`\x00Q\x91P[P\x80`\xc8\x14a\x03!Wa\x03!a\x0b\xdeV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\x0bV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\x19\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05E\x90a\x0b\xf4V[\x80\x15a\x05\x92W\x80`\x1f\x10a\x05gWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x92V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05uW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xfaV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06tW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x066W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xcaV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xcf\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xfb\x90a\x0b\xf4V[\x80\x15a\x07HW\x80`\x1f\x10a\x07\x1dWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07HV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07+W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xb0V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07~WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08\x84W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\f\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f.V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08&\x91a\f_V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08cW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08hV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08\x80\x91\x90a\f{V[\x91PP[\x91\x90PV[`\x00`@Qa\x08\x97\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08\xb3W=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qc!F\x02\xdb`\xe2\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\x85\x18\x0bl\x91a\t\x1d\x91\x87\x91\x87\x91\x01a\f\xa4V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tKW=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01\x86a>\x80\xfa`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>PP`\x00Q`\xc8\x81\x14a\x03!Wa\x03!a\x0b\xdeV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[`\x94\x80a\f\xd1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n5W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\x10V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\n\xe5W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\n\xd0W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\n\xa6V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\niV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0b\x0fW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xf7V[\x83\x81\x11\x15a\x03!WPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x0b8\x81` \x86\x01` \x86\x01a\n\xf4V[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xa1W`?\x19\x88\x86\x03\x01\x84Ra\x0b\x8f\x85\x83Qa\x0b V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0bsV[P\x92\x97\x96PPPPPPPV[`\x01\x80`\xa0\x1b\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\x00a\x0b\xd5``\x83\x01\x84a\x0b V[\x95\x94PPPPPV[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x08W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f(WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\fQ\x81`\x04\x85\x01` \x87\x01a\n\xf4V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\fq\x81\x84` \x87\x01a\n\xf4V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x8dW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\x9dW`\x00\x80\xfd[\x93\x92PPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\f\xc8\x90\x83\x01\x84a\x0b V[\x94\x93PPPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 J(\xce\x92\x1b\x1c\x8b\\\xbe\xa1\xd6s\xd6\x00.\x1f\x03|SZ\x8c\xb9\x14\xbel\xd6\x14\x11\x101:\x80dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 102 => 15 ) ) ( SetItem ( ( 1035 => 44 ) ) ( SetItem ( ( 1143 => 69 ) ) ( ( SetItem ( 1205 ) ( SetItem ( 1229 ) ( SetItem ( 1238 ) ( SetItem ( 1274 ) ( SetItem ( 1305 ) ( SetItem ( 1349 ) ( SetItem ( 1383 ) ( SetItem ( 1397 ) ( SetItem ( 140 ) ( SetItem ( 1426 ) ( SetItem ( 1446 ) ( SetItem ( 1482 ) ( SetItem ( 1590 ) ( SetItem ( 16 ) ( SetItem ( 1652 ) ( SetItem ( 1676 ) ( SetItem ( 1712 ) ( SetItem ( 1743 ) ( SetItem ( 1787 ) ( SetItem ( 1821 ) ( SetItem ( 1835 ) ( SetItem ( 1864 ) ( SetItem ( 1884 ) ( SetItem ( 1918 ) ( SetItem ( 2060 ) ( SetItem ( 207 ) ( SetItem ( 2086 ) ( SetItem ( 212 ) ( SetItem ( 2147 ) ( SetItem ( 2152 ) ( SetItem ( 2176 ) ( SetItem ( 2180 ) ( SetItem ( 2185 ) ( SetItem ( 2199 ) ( SetItem ( 220 ) ( SetItem ( 2227 ) ( SetItem ( 233 ) ( SetItem ( 2333 ) ( SetItem ( 2359 ) ( SetItem ( 2379 ) ( SetItem ( 242 ) ( SetItem ( 2440 ) ( SetItem ( 250 ) ( SetItem ( 252 ) ( SetItem ( 2536 ) ( SetItem ( 2548 ) ( SetItem ( 2576 ) ( SetItem ( 260 ) ( SetItem ( 2613 ) ( SetItem ( 2625 ) ( SetItem ( 2665 ) ( SetItem ( 268 ) ( SetItem ( 2726 ) ( SetItem ( 276 ) ( SetItem ( 2768 ) ( SetItem ( 2789 ) ( SetItem ( 2804 ) ( SetItem ( 2807 ) ( SetItem ( 2831 ) ( SetItem ( 2848 ) ( SetItem ( 2872 ) ( SetItem ( 289 ) ( SetItem ( 2892 ) ( SetItem ( 2931 ) ( SetItem ( 2959 ) ( SetItem ( 297 ) ( SetItem ( 2977 ) ( SetItem ( 2990 ) ( SetItem ( 3029 ) ( SetItem ( 3038 ) ( SetItem ( 3060 ) ( SetItem ( 3080 ) ( SetItem ( 310 ) ( SetItem ( 3112 ) ( SetItem ( 3118 ) ( SetItem ( 3153 ) ( SetItem ( 3167 ) ( SetItem ( 318 ) ( SetItem ( 3185 ) ( SetItem ( 3195 ) ( SetItem ( 3213 ) ( SetItem ( 3229 ) ( SetItem ( 3236 ) ( SetItem ( 326 ) ( SetItem ( 3272 ) ( SetItem ( 3296 ) ( SetItem ( 3325 ) ( SetItem ( 334 ) ( SetItem ( 3350 ) ( SetItem ( 3355 ) ( SetItem ( 350 ) ( SetItem ( 358 ) ( SetItem ( 397 ) ( SetItem ( 421 ) ( SetItem ( 429 ) ( SetItem ( 442 ) ( SetItem ( 500 ) ( SetItem ( 530 ) ( SetItem ( 540 ) ( SetItem ( 554 ) ( SetItem ( 582 ) ( SetItem ( 690 ) ( SetItem ( 716 ) ( SetItem ( 736 ) ( SetItem ( 784 ) ( SetItem ( 801 ) ( SetItem ( 807 ) ( SetItem ( 903 ) SetItem ( 999 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 74 ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\xbf\xe9=\xef" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003" ) - - - ( 0 => 27 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32278 ) ) +Int -75 ) ) ) - - - ( 0 => 4 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbf\xe9=\xef\x11a\x00fW\x80c\xbf\xe9=\xef\x14a\x01^W\x80c\xd6\xa2\xecv\x14a\x01fW\x80c\xe2\f\x9fq\x14a\x01\xa5W\x80c\xfav&\xd4\x14a\x01\xadW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c(V\x1b\xe0\x14a\x00\xf2W\x80c>^<#\x14a\x00\xfcW\x80c?r\x86\xf4\x14a\x01\x04W\x80cf\xd9\xa9\xa0\x14a\x01\fW\x80c\x85\"l\x81\x14a\x01!W[`\x00\x80\xfd[a\x00\xdca\x01\xbaV[`@Qa\x00\xe9\x91\x90a\t\xf4V[`@Q\x80\x91\x03\x90\xf3[a\x00\xfaa\x02\x1cV[\x00[a\x00\xdca\x03'V[a\x00\xdca\x03\x87V[a\x01\x14a\x03\xe7V[`@Qa\x00\xe9\x91\x90a\nAV[a\x01)a\x04\xd6V[`@Qa\x00\xe9\x91\x90a\x0bLV[a\x01\x14a\x05\xa6V[a\x01)a\x06\x8cV[a\x01Na\x07\\V[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xfaa\x08\x89V[a\x01\x8d\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe9V[a\x00\xdca\t\x88V[`\x07Ta\x01N\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4W[PPPPP\x90P\x90V[`\x00`@Qa\x02*\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02FW=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qcu\xa1+G`\xe0\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91cu\xa1+G\x91a\x02\xb2\x91\x87\x91\x86\x91\x88\x91\x01a\x0b\xaeV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x02\xccW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x02\xe0W=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01`\x00\x87a>\x80\xf1`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>`\x00Q\x91P[P\x80`\xc8\x14a\x03!Wa\x03!a\x0b\xdeV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\x0bV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\x19\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05E\x90a\x0b\xf4V[\x80\x15a\x05\x92W\x80`\x1f\x10a\x05gWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x92V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05uW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xfaV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06tW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x066W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xcaV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xcf\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xfb\x90a\x0b\xf4V[\x80\x15a\x07HW\x80`\x1f\x10a\x07\x1dWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07HV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07+W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xb0V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07~WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08\x84W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\f\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f.V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08&\x91a\f_V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08cW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08hV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08\x80\x91\x90a\f{V[\x91PP[\x91\x90PV[`\x00`@Qa\x08\x97\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08\xb3W=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qc!F\x02\xdb`\xe2\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\x85\x18\x0bl\x91a\t\x1d\x91\x87\x91\x87\x91\x01a\f\xa4V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tKW=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01\x86a>\x80\xfa`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>PP`\x00Q`\xc8\x81\x14a\x03!Wa\x03!a\x0b\xdeV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[`\x94\x80a\f\xd1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n5W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\x10V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\n\xe5W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\n\xd0W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\n\xa6V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\niV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0b\x0fW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xf7V[\x83\x81\x11\x15a\x03!WPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x0b8\x81` \x86\x01` \x86\x01a\n\xf4V[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xa1W`?\x19\x88\x86\x03\x01\x84Ra\x0b\x8f\x85\x83Qa\x0b V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0bsV[P\x92\x97\x96PPPPPPPV[`\x01\x80`\xa0\x1b\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\x00a\x0b\xd5``\x83\x01\x84a\x0b V[\x95\x94PPPPPV[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x08W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f(WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\fQ\x81`\x04\x85\x01` \x87\x01a\n\xf4V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\fq\x81\x84` \x87\x01a\n\xf4V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x8dW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\x9dW`\x00\x80\xfd[\x93\x92PPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\f\xc8\x90\x83\x01\x84a\x0b V[\x94\x93PPPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 J(\xce\x92\x1b\x1c\x8b\\\xbe\xa1\xd6s\xd6\x00.\x1f\x03|SZ\x8c\xb9\x14\xbel\xd6\x14\x11\x101:\x80dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x8cW\x80c\xbf\xe9=\xef\x11a\x00fW\x80c\xbf\xe9=\xef\x14a\x01^W\x80c\xd6\xa2\xecv\x14a\x01fW\x80c\xe2\f\x9fq\x14a\x01\xa5W\x80c\xfav&\xd4\x14a\x01\xadW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x016W\x80c\xb5P\x8a\xa9\x14a\x01>W\x80c\xbaAO\xa6\x14a\x01FW`\x00\x80\xfd[\x80c\x1e\xd7\x83\x1c\x14a\x00\xd4W\x80c(V\x1b\xe0\x14a\x00\xf2W\x80c>^<#\x14a\x00\xfcW\x80c?r\x86\xf4\x14a\x01\x04W\x80cf\xd9\xa9\xa0\x14a\x01\fW\x80c\x85\"l\x81\x14a\x01!W[`\x00\x80\xfd[a\x00\xdca\x01\xbaV[`@Qa\x00\xe9\x91\x90a\t\xf4V[`@Q\x80\x91\x03\x90\xf3[a\x00\xfaa\x02\x1cV[\x00[a\x00\xdca\x03'V[a\x00\xdca\x03\x87V[a\x01\x14a\x03\xe7V[`@Qa\x00\xe9\x91\x90a\nAV[a\x01)a\x04\xd6V[`@Qa\x00\xe9\x91\x90a\x0bLV[a\x01\x14a\x05\xa6V[a\x01)a\x06\x8cV[a\x01Na\x07\\V[`@Q\x90\x15\x15\x81R` \x01a\x00\xe9V[a\x00\xfaa\x08\x89V[a\x01\x8d\x7f\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe9V[a\x00\xdca\t\x88V[`\x07Ta\x01N\x90`\xff\x16\x81V[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4W[PPPPP\x90P\x90V[`\x00`@Qa\x02*\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02FW=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qcu\xa1+G`\xe0\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91cu\xa1+G\x91a\x02\xb2\x91\x87\x91\x86\x91\x88\x91\x01a\x0b\xaeV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x02\xccW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x02\xe0W=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01`\x00\x87a>\x80\xf1`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>`\x00Q\x91P[P\x80`\xc8\x14a\x03!Wa\x03!a\x0b\xdeV[PPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\x0bV[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x05\x19\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05E\x90a\x0b\xf4V[\x80\x15a\x05\x92W\x80`\x1f\x10a\x05gWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\x92V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05uW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xfaV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06tW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x066W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\xcaV[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xcf\x90a\x0b\xf4V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xfb\x90a\x0b\xf4V[\x80\x15a\x07HW\x80`\x1f\x10a\x07\x1dWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07HV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07+W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06\xb0V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x07~WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08\x84W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x08\f\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\f.V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x08&\x91a\f_V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08cW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08hV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08\x80\x91\x90a\f{V[\x91PP[\x91\x90PV[`\x00`@Qa\x08\x97\x90a\t\xe8V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x08\xb3W=`\x00\x80>=`\x00\xfd[P`@\x80Q`\x04\x80\x82R`$\x82\x01\x83R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x99K\x9dW`\xe0\x1b\x17\x90R\x91Qc!F\x02\xdb`\xe2\x1b\x81R\x92\x93P\x83\x92\x90\x91`\x00\x91sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\x85\x18\x0bl\x91a\t\x1d\x91\x87\x91\x87\x91\x01a\f\xa4V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tKW=`\x00\x80>=`\x00\xfd[PPPP`\x00\x80\x83Q` \x85\x01\x86a>\x80\xfa`\x01\x81\x03a\x03\x10W` =\x03a\x03\x10W` `\x00\x80>PP`\x00Q`\xc8\x81\x14a\x03!Wa\x03!a\x0b\xdeV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\x12W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x01\xf4WPPPPP\x90P\x90V[`\x94\x80a\f\xd1\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\n5W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\x10V[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\n\xe5W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\n\xd0W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\n\xa6V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\niV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0b\x0fW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xf7V[\x83\x81\x11\x15a\x03!WPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x0b8\x81` \x86\x01` \x86\x01a\n\xf4V[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0b\xa1W`?\x19\x88\x86\x03\x01\x84Ra\x0b\x8f\x85\x83Qa\x0b V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0bsV[P\x92\x97\x96PPPPPPPV[`\x01\x80`\xa0\x1b\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R`\x00a\x0b\xd5``\x83\x01\x84a\x0b V[\x95\x94PPPPPV[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\f\x08W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\f(WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\fQ\x81`\x04\x85\x01` \x87\x01a\n\xf4V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\fq\x81\x84` \x87\x01a\n\xf4V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\f\x8dW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\f\x9dW`\x00\x80\xfd[\x93\x92PPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\f\xc8\x90\x83\x01\x84a\x0b V[\x94\x93PPPPV\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`w\x80`\x1d`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x99K\x9dW\x14`-W[`\x00\x80\xfd[`\xc8`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xf3\xfe\xa2dipfsX\"\x12 e\xa0\x8dv\xe3K\xbf\xc1q\x13\x8c\x83#\xb5\x10\xdb\x8a(~d\x12\xd6\x06\xe5vZ\t\xc9(\x8d\xd8zdsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 J(\xce\x92\x1b\x1c\x8b\\\xbe\xa1\xd6s\xd6\x00.\x1f\x03|SZ\x8c\xb9\x14\xbel\xd6\x14\x11\x101:\x80dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - ( SetItem ( 10007 ) ( SetItem ( 10035 ) ( SetItem ( 10053 ) ( SetItem ( 1030 ) ( SetItem ( 1054 ) ( SetItem ( 1074 ) ( SetItem ( 1082 ) ( SetItem ( 113 ) ( SetItem ( 1150 ) ( SetItem ( 1159 ) ( SetItem ( 1217 ) ( SetItem ( 1247 ) ( SetItem ( 1257 ) ( SetItem ( 1271 ) ( SetItem ( 1299 ) ( SetItem ( 1378 ) ( SetItem ( 1398 ) ( SetItem ( 1459 ) ( SetItem ( 1479 ) ( SetItem ( 1486 ) ( SetItem ( 151 ) ( SetItem ( 1582 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1692 ) ( SetItem ( 1720 ) ( SetItem ( 1807 ) ( SetItem ( 1827 ) ( SetItem ( 1898 ) ( SetItem ( 1922 ) ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"M\x88\x1c\xd5" - - - 0 - - - ( 0 : ( 395 : ( 1300765909 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" - - - 1702 - - - #gas ( ( ( VGAS:Int +Int -32408 ) /Int 64 ) ) - - - 25 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32408 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 10007 => 108 ) ) ( SetItem ( ( 10035 => 113 ) ) ( SetItem ( ( 10053 => 121 ) ) ( SetItem ( ( 1030 => 123 ) ) ( SetItem ( ( 1054 => 137 ) ) ( SetItem ( ( 1074 => 142 ) ) ( SetItem ( ( 1082 => 16 ) ) ( SetItem ( ( 113 => 162 ) ) ( SetItem ( ( 1150 => 176 ) ) ( SetItem ( ( 1159 => 181 ) ) ( SetItem ( ( 1217 => 212 ) ) ( SetItem ( ( 1247 => 221 ) ) ( SetItem ( ( 1257 => 249 ) ) ( SetItem ( ( 1271 => 267 ) ) ( SetItem ( ( 1299 => 291 ) ) ( SetItem ( ( 1378 => 315 ) ) ( SetItem ( ( 1398 => 322 ) ) ( SetItem ( ( 1459 => 343 ) ) ( SetItem ( ( 1479 => 366 ) ) ( SetItem ( ( 1486 => 394 ) ) ( SetItem ( ( 151 => 406 ) ) ( SetItem ( ( 1582 => 419 ) ) ( SetItem ( ( 16 => 438 ) ) ( SetItem ( ( 1678 => 461 ) ) ( SetItem ( ( 1692 => 473 ) ) ( SetItem ( ( 1720 => 48 ) ) ( SetItem ( ( 1807 => 485 ) ) ( SetItem ( ( 1827 => 526 ) ) ( SetItem ( ( 1898 => 563 ) ) ( SetItem ( ( 1922 => 572 ) ) ( ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 592 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"M\x88\x1c\xd5" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( 0 => 30 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32408 ) ) +Int -171 ) ) ) - - - ( 0 => 20 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( #halt - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] => CALL ( ( ( ( VGAS:Int +Int -32408 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32408 ) ) ) +Int -127324 ) 645326474426547203313410069153905908525362434349 0 128 36 128 0 - ~> #pc [ CALL ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" => b"" ) - - - EVMC_SUCCESS - - - ( ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - ( SetItem ( 10007 ) ( SetItem ( 10035 ) ( SetItem ( 10053 ) ( SetItem ( 1030 ) ( SetItem ( 1054 ) ( SetItem ( 1074 ) ( SetItem ( 1082 ) ( SetItem ( 113 ) ( SetItem ( 1150 ) ( SetItem ( 1159 ) ( SetItem ( 1217 ) ( SetItem ( 1247 ) ( SetItem ( 1257 ) ( SetItem ( 1271 ) ( SetItem ( 1299 ) ( SetItem ( 1378 ) ( SetItem ( 1398 ) ( SetItem ( 1459 ) ( SetItem ( 1479 ) ( SetItem ( 1486 ) ( SetItem ( 151 ) ( SetItem ( 1582 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1692 ) ( SetItem ( 1720 ) ( SetItem ( 1807 ) ( SetItem ( 1827 ) ( SetItem ( 1898 ) ( SetItem ( 1922 ) ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"M\x88\x1c\xd5" - - - 0 - - - ( 0 : ( 395 : ( 1300765909 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" - - - 1702 - - - #gas ( ( ( VGAS:Int +Int -32408 ) /Int 64 ) ) - - - 25 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32408 ) ) ) - - - false - - - 0 - - ) => .List ) - - - ( ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) => .List ) - - - _TOUCHEDACCOUNTS_CELL |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 108 => 10007 ) ) ( SetItem ( ( 113 => 10035 ) ) ( SetItem ( ( 121 => 10053 ) ) ( SetItem ( ( 123 => 1030 ) ) ( SetItem ( ( 137 => 1054 ) ) ( SetItem ( ( 142 => 1074 ) ) ( SetItem ( ( 16 => 1082 ) ) ( SetItem ( ( 162 => 113 ) ) ( SetItem ( ( 176 => 1150 ) ) ( SetItem ( ( 181 => 1159 ) ) ( SetItem ( ( 212 => 1217 ) ) ( SetItem ( ( 221 => 1247 ) ) ( SetItem ( ( 249 => 1257 ) ) ( SetItem ( ( 267 => 1271 ) ) ( SetItem ( ( 291 => 1299 ) ) ( SetItem ( ( 315 => 1378 ) ) ( SetItem ( ( 322 => 1398 ) ) ( SetItem ( ( 343 => 1459 ) ) ( SetItem ( ( 366 => 1479 ) ) ( SetItem ( ( 394 => 1486 ) ) ( SetItem ( ( 406 => 151 ) ) ( SetItem ( ( 419 => 1582 ) ) ( SetItem ( ( 438 => 16 ) ) ( SetItem ( ( 461 => 1678 ) ) ( SetItem ( ( 473 => 1692 ) ) ( SetItem ( ( 48 => 1720 ) ) ( SetItem ( ( 485 => 1807 ) ) ( SetItem ( ( 526 => 1827 ) ) ( SetItem ( ( 563 => 1898 ) ) ( SetItem ( ( 572 => 1922 ) ) ( SetItem ( 592 ) => ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 491460923342184218035706888008750043977755113263 => 728815563385977040452943777879061427756277306518 ) - - - ( 728815563385977040452943777879061427756277306518 => CALLER_ID:Int ) - - - ( b"" => b"M\x88\x1c\xd5" ) - - - 0 - - - ( .WordStack => ( 164 : ( 3273568480 : ( 645326474426547203313410069153905908525362434349 : ( 491460923342184218035706888008750043977755113263 : ( 395 : ( 1300765909 : .WordStack ) ) ) ) ) ) ) - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" => b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x1e\xb0\xe0FAIL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( 30 => 1810 ) - - - #gas ( ( ( #allBut64th ( ( VGAS:Int +Int -32408 ) ) => ( ( ( ( VGAS:Int +Int -32408 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32408 ) ) ) -Int Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32408 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32408 ) ) ) +Int -127324 ) , ( ( ( ( VGAS:Int +Int -32408 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32408 ) ) ) +Int -127324 ) , 100 ) ) ) +Int ( -171 => -127424 ) ) ) - - - ( 20 => 25 ) - - - ( 0 => #gas ( Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32408 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32408 ) ) ) +Int -127324 ) , ( ( ( ( VGAS:Int +Int -32408 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32408 ) ) ) +Int -127324 ) , 100 ) ) ) - - - false - - - ( 1 => 0 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( SetItem ( 491460923342184218035706888008750043977755113263 ) ( SetItem ( 728815563385977040452943777879061427756277306518 ) => ( SetItem ( 645326474426547203313410069153905908525362434349 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - 491460923342184218035706888008750043977755113263 - - - 0 - - - ( b"" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - .Map - - - .Map - - - 1 - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - ( SetItem ( 10007 ) ( SetItem ( 10035 ) ( SetItem ( 10053 ) ( SetItem ( 1030 ) ( SetItem ( 1054 ) ( SetItem ( 1074 ) ( SetItem ( 1082 ) ( SetItem ( 113 ) ( SetItem ( 1150 ) ( SetItem ( 1159 ) ( SetItem ( 1217 ) ( SetItem ( 1247 ) ( SetItem ( 1257 ) ( SetItem ( 1271 ) ( SetItem ( 1299 ) ( SetItem ( 1378 ) ( SetItem ( 1398 ) ( SetItem ( 1459 ) ( SetItem ( 1479 ) ( SetItem ( 1486 ) ( SetItem ( 151 ) ( SetItem ( 1582 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1692 ) ( SetItem ( 1720 ) ( SetItem ( 1807 ) ( SetItem ( 1827 ) ( SetItem ( 1898 ) ( SetItem ( 1922 ) ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xdc\xf0BG" - - - 0 - - - ( 0 : ( 395 : ( 3706733127 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" - - - 4821 - - - #gas ( ( ( VGAS:Int +Int -32429 ) /Int 64 ) ) - - - 25 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32429 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 10007 => 108 ) ) ( SetItem ( ( 10035 => 113 ) ) ( SetItem ( ( 10053 => 121 ) ) ( SetItem ( ( 1030 => 123 ) ) ( SetItem ( ( 1054 => 137 ) ) ( SetItem ( ( 1074 => 142 ) ) ( SetItem ( ( 1082 => 16 ) ) ( SetItem ( ( 113 => 162 ) ) ( SetItem ( ( 1150 => 176 ) ) ( SetItem ( ( 1159 => 181 ) ) ( SetItem ( ( 1217 => 212 ) ) ( SetItem ( ( 1247 => 221 ) ) ( SetItem ( ( 1257 => 249 ) ) ( SetItem ( ( 1271 => 267 ) ) ( SetItem ( ( 1299 => 291 ) ) ( SetItem ( ( 1378 => 315 ) ) ( SetItem ( ( 1398 => 322 ) ) ( SetItem ( ( 1459 => 343 ) ) ( SetItem ( ( 1479 => 366 ) ) ( SetItem ( ( 1486 => 394 ) ) ( SetItem ( ( 151 => 406 ) ) ( SetItem ( ( 1582 => 419 ) ) ( SetItem ( ( 16 => 438 ) ) ( SetItem ( ( 1678 => 461 ) ) ( SetItem ( ( 1692 => 473 ) ) ( SetItem ( ( 1720 => 48 ) ) ( SetItem ( ( 1807 => 485 ) ) ( SetItem ( ( 1827 => 526 ) ) ( SetItem ( ( 1898 => 563 ) ) ( SetItem ( ( 1922 => 572 ) ) ( ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 592 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\xdc\xf0BG" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( 0 => 30 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32429 ) ) +Int -171 ) ) ) - - - ( 0 => 20 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - ( SetItem ( 10007 ) ( SetItem ( 10035 ) ( SetItem ( 10053 ) ( SetItem ( 1030 ) ( SetItem ( 1054 ) ( SetItem ( 1074 ) ( SetItem ( 1082 ) ( SetItem ( 113 ) ( SetItem ( 1150 ) ( SetItem ( 1159 ) ( SetItem ( 1217 ) ( SetItem ( 1247 ) ( SetItem ( 1257 ) ( SetItem ( 1271 ) ( SetItem ( 1299 ) ( SetItem ( 1378 ) ( SetItem ( 1398 ) ( SetItem ( 1459 ) ( SetItem ( 1479 ) ( SetItem ( 1486 ) ( SetItem ( 151 ) ( SetItem ( 1582 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1692 ) ( SetItem ( 1720 ) ( SetItem ( 1807 ) ( SetItem ( 1827 ) ( SetItem ( 1898 ) ( SetItem ( 1922 ) ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xf9\xf4\xca\x02" - - - 0 - - - ( 0 : ( 395 : ( 4193569282 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003" - - - 5184 - - - #gas ( ( ( VGAS:Int +Int -32440 ) /Int 64 ) ) - - - 21 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32440 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 10007 => 105 ) ) ( SetItem ( ( 10035 => 110 ) ) ( SetItem ( ( 10053 => 123 ) ) ( SetItem ( ( 1030 => 132 ) ) ( SetItem ( ( 1054 => 146 ) ) ( SetItem ( ( 1074 => 151 ) ) ( SetItem ( ( 1082 => 16 ) ) ( SetItem ( ( 113 => 172 ) ) ( SetItem ( ( 1150 => 224 ) ) ( SetItem ( ( 1159 => 233 ) ) ( SetItem ( ( 1217 => 274 ) ) ( SetItem ( ( 1247 => 331 ) ) ( SetItem ( ( 1257 => 343 ) ) ( SetItem ( ( 1271 => 361 ) ) ( SetItem ( ( 1299 => 377 ) ) ( SetItem ( ( 1378 => 384 ) ) ( SetItem ( ( 1398 => 401 ) ) ( SetItem ( ( 1459 => 429 ) ) ( SetItem ( ( 1479 => 447 ) ) ( SetItem ( ( 1486 => 48 ) ) ( SetItem ( ( 151 => 86 ) ) ( ( SetItem ( 1582 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1692 ) ( SetItem ( 1720 ) ( SetItem ( 1807 ) ( SetItem ( 1827 ) ( SetItem ( 1898 ) ( SetItem ( 1922 ) ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 91 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\xf9\xf4\xca\x02" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003" ) - - - ( 0 => 30 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32440 ) ) +Int -147 ) ) ) - - - ( 0 => 16 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - ( SetItem ( 10007 ) ( SetItem ( 10035 ) ( SetItem ( 10053 ) ( SetItem ( 1030 ) ( SetItem ( 1054 ) ( SetItem ( 1074 ) ( SetItem ( 1082 ) ( SetItem ( 113 ) ( SetItem ( 1150 ) ( SetItem ( 1159 ) ( SetItem ( 1217 ) ( SetItem ( 1247 ) ( SetItem ( 1257 ) ( SetItem ( 1271 ) ( SetItem ( 1299 ) ( SetItem ( 1378 ) ( SetItem ( 1398 ) ( SetItem ( 1459 ) ( SetItem ( 1479 ) ( SetItem ( 1486 ) ( SetItem ( 151 ) ( SetItem ( 1582 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1692 ) ( SetItem ( 1720 ) ( SetItem ( 1807 ) ( SetItem ( 1827 ) ( SetItem ( 1898 ) ( SetItem ( 1922 ) ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\xd3\x0b\xcc\xea" - - - 0 - - - ( 0 : ( 395 : ( 3540765930 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" - - - 4522 - - - #gas ( ( ( VGAS:Int +Int -32452 ) /Int 64 ) ) - - - 25 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32452 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 10007 => 108 ) ) ( SetItem ( ( 10035 => 113 ) ) ( SetItem ( ( 10053 => 121 ) ) ( SetItem ( ( 1030 => 123 ) ) ( SetItem ( ( 1054 => 137 ) ) ( SetItem ( ( 1074 => 142 ) ) ( SetItem ( ( 1082 => 16 ) ) ( SetItem ( ( 113 => 162 ) ) ( SetItem ( ( 1150 => 176 ) ) ( SetItem ( ( 1159 => 181 ) ) ( SetItem ( ( 1217 => 212 ) ) ( SetItem ( ( 1247 => 221 ) ) ( SetItem ( ( 1257 => 249 ) ) ( SetItem ( ( 1271 => 267 ) ) ( SetItem ( ( 1299 => 291 ) ) ( SetItem ( ( 1378 => 315 ) ) ( SetItem ( ( 1398 => 322 ) ) ( SetItem ( ( 1459 => 343 ) ) ( SetItem ( ( 1479 => 366 ) ) ( SetItem ( ( 1486 => 394 ) ) ( SetItem ( ( 151 => 406 ) ) ( SetItem ( ( 1582 => 419 ) ) ( SetItem ( ( 16 => 438 ) ) ( SetItem ( ( 1678 => 461 ) ) ( SetItem ( ( 1692 => 473 ) ) ( SetItem ( ( 1720 => 48 ) ) ( SetItem ( ( 1807 => 485 ) ) ( SetItem ( ( 1827 => 526 ) ) ( SetItem ( ( 1898 => 563 ) ) ( SetItem ( ( 1922 => 572 ) ) ( ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 592 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\xd3\x0b\xcc\xea" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( 0 => 30 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32452 ) ) +Int -171 ) ) ) - - - ( 0 => 20 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - ( SetItem ( 10007 ) ( SetItem ( 10035 ) ( SetItem ( 10053 ) ( SetItem ( 1030 ) ( SetItem ( 1054 ) ( SetItem ( 1074 ) ( SetItem ( 1082 ) ( SetItem ( 113 ) ( SetItem ( 1150 ) ( SetItem ( 1159 ) ( SetItem ( 1217 ) ( SetItem ( 1247 ) ( SetItem ( 1257 ) ( SetItem ( 1271 ) ( SetItem ( 1299 ) ( SetItem ( 1378 ) ( SetItem ( 1398 ) ( SetItem ( 1459 ) ( SetItem ( 1479 ) ( SetItem ( 1486 ) ( SetItem ( 151 ) ( SetItem ( 1582 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1692 ) ( SetItem ( 1720 ) ( SetItem ( 1807 ) ( SetItem ( 1827 ) ( SetItem ( 1898 ) ( SetItem ( 1922 ) ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\x8e:\xde\xc1" - - - 0 - - - ( 0 : ( 395 : ( 2386222785 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" - - - 2851 - - - #gas ( ( ( VGAS:Int +Int -32408 ) /Int 64 ) ) - - - 25 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32408 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 10007 => 108 ) ) ( SetItem ( ( 10035 => 113 ) ) ( SetItem ( ( 10053 => 121 ) ) ( SetItem ( ( 1030 => 123 ) ) ( SetItem ( ( 1054 => 137 ) ) ( SetItem ( ( 1074 => 142 ) ) ( SetItem ( ( 1082 => 16 ) ) ( SetItem ( ( 113 => 162 ) ) ( SetItem ( ( 1150 => 176 ) ) ( SetItem ( ( 1159 => 181 ) ) ( SetItem ( ( 1217 => 212 ) ) ( SetItem ( ( 1247 => 221 ) ) ( SetItem ( ( 1257 => 249 ) ) ( SetItem ( ( 1271 => 267 ) ) ( SetItem ( ( 1299 => 291 ) ) ( SetItem ( ( 1378 => 315 ) ) ( SetItem ( ( 1398 => 322 ) ) ( SetItem ( ( 1459 => 343 ) ) ( SetItem ( ( 1479 => 366 ) ) ( SetItem ( ( 1486 => 394 ) ) ( SetItem ( ( 151 => 406 ) ) ( SetItem ( ( 1582 => 419 ) ) ( SetItem ( ( 16 => 438 ) ) ( SetItem ( ( 1678 => 461 ) ) ( SetItem ( ( 1692 => 473 ) ) ( SetItem ( ( 1720 => 48 ) ) ( SetItem ( ( 1807 => 485 ) ) ( SetItem ( ( 1827 => 526 ) ) ( SetItem ( ( 1898 => 563 ) ) ( SetItem ( ( 1922 => 572 ) ) ( ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 592 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\x8e:\xde\xc1" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( 0 => 30 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32408 ) ) +Int -171 ) ) ) - - - ( 0 => 20 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - ( SetItem ( 10007 ) ( SetItem ( 10035 ) ( SetItem ( 10053 ) ( SetItem ( 1030 ) ( SetItem ( 1054 ) ( SetItem ( 1074 ) ( SetItem ( 1082 ) ( SetItem ( 113 ) ( SetItem ( 1150 ) ( SetItem ( 1159 ) ( SetItem ( 1217 ) ( SetItem ( 1247 ) ( SetItem ( 1257 ) ( SetItem ( 1271 ) ( SetItem ( 1299 ) ( SetItem ( 1378 ) ( SetItem ( 1398 ) ( SetItem ( 1459 ) ( SetItem ( 1479 ) ( SetItem ( 1486 ) ( SetItem ( 151 ) ( SetItem ( 1582 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1692 ) ( SetItem ( 1720 ) ( SetItem ( 1807 ) ( SetItem ( 1827 ) ( SetItem ( 1898 ) ( SetItem ( 1922 ) ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\x80M\xe4%" - - - 0 - - - ( 0 : ( 395 : ( 2152588325 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" - - - 2396 - - - #gas ( ( ( VGAS:Int +Int -32496 ) /Int 64 ) ) - - - 25 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32496 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 10007 => 108 ) ) ( SetItem ( ( 10035 => 113 ) ) ( SetItem ( ( 10053 => 121 ) ) ( SetItem ( ( 1030 => 123 ) ) ( SetItem ( ( 1054 => 137 ) ) ( SetItem ( ( 1074 => 142 ) ) ( SetItem ( ( 1082 => 16 ) ) ( SetItem ( ( 113 => 162 ) ) ( SetItem ( ( 1150 => 176 ) ) ( SetItem ( ( 1159 => 181 ) ) ( SetItem ( ( 1217 => 212 ) ) ( SetItem ( ( 1247 => 221 ) ) ( SetItem ( ( 1257 => 249 ) ) ( SetItem ( ( 1271 => 267 ) ) ( SetItem ( ( 1299 => 291 ) ) ( SetItem ( ( 1378 => 315 ) ) ( SetItem ( ( 1398 => 322 ) ) ( SetItem ( ( 1459 => 343 ) ) ( SetItem ( ( 1479 => 366 ) ) ( SetItem ( ( 1486 => 394 ) ) ( SetItem ( ( 151 => 406 ) ) ( SetItem ( ( 1582 => 419 ) ) ( SetItem ( ( 16 => 438 ) ) ( SetItem ( ( 1678 => 461 ) ) ( SetItem ( ( 1692 => 473 ) ) ( SetItem ( ( 1720 => 48 ) ) ( SetItem ( ( 1807 => 485 ) ) ( SetItem ( ( 1827 => 526 ) ) ( SetItem ( ( 1898 => 563 ) ) ( SetItem ( ( 1922 => 572 ) ) ( ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 592 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\x80M\xe4%" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" ) - - - ( 0 => 30 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32496 ) ) +Int -171 ) ) ) - - - ( 0 => 20 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( #end EVMC_REVERT => #halt ) - ~> #pc [ REVERT ] - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" - - - EVMC_REVERT - - - .List - - - .List - - - _TOUCHEDACCOUNTS_CELL |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) - - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - ( SetItem ( 10007 ) ( SetItem ( 10035 ) ( SetItem ( 10053 ) ( SetItem ( 1030 ) ( SetItem ( 1054 ) ( SetItem ( 1074 ) ( SetItem ( 1082 ) ( SetItem ( 113 ) ( SetItem ( 1150 ) ( SetItem ( 1159 ) ( SetItem ( 1217 ) ( SetItem ( 1247 ) ( SetItem ( 1257 ) ( SetItem ( 1271 ) ( SetItem ( 1299 ) ( SetItem ( 1378 ) ( SetItem ( 1398 ) ( SetItem ( 1459 ) ( SetItem ( 1479 ) ( SetItem ( 1486 ) ( SetItem ( 151 ) ( SetItem ( 1582 ) ( SetItem ( 16 ) ( SetItem ( 1678 ) ( SetItem ( 1692 ) ( SetItem ( 1720 ) ( SetItem ( 1807 ) ( SetItem ( 1827 ) ( SetItem ( 1898 ) ( SetItem ( 1922 ) ( SetItem ( 1981 ) ( SetItem ( 1998 ) ( SetItem ( 2023 ) ( SetItem ( 2059 ) ( SetItem ( 2167 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2253 ) ( SetItem ( 2262 ) ( SetItem ( 2338 ) ( SetItem ( 2358 ) ( SetItem ( 2370 ) ( SetItem ( 2372 ) ( SetItem ( 2386 ) ( SetItem ( 2414 ) ( SetItem ( 2493 ) ( SetItem ( 2513 ) ( SetItem ( 2579 ) ( SetItem ( 2615 ) ( SetItem ( 2619 ) ( SetItem ( 2655 ) ( SetItem ( 2686 ) ( SetItem ( 2730 ) ( SetItem ( 2764 ) ( SetItem ( 2778 ) ( SetItem ( 2807 ) ( SetItem ( 2827 ) ( SetItem ( 2841 ) ( SetItem ( 2869 ) ( SetItem ( 2948 ) ( SetItem ( 2968 ) ( SetItem ( 3034 ) ( SetItem ( 304 ) ( SetItem ( 3070 ) ( SetItem ( 3147 ) ( SetItem ( 3167 ) ( SetItem ( 3228 ) ( SetItem ( 3281 ) ( SetItem ( 3307 ) ( SetItem ( 3327 ) ( SetItem ( 3390 ) ( SetItem ( 3410 ) ( SetItem ( 3416 ) ( SetItem ( 3452 ) ( SetItem ( 3560 ) ( SetItem ( 3622 ) ( SetItem ( 3646 ) ( SetItem ( 3660 ) ( SetItem ( 3688 ) ( SetItem ( 371 ) ( SetItem ( 376 ) ( SetItem ( 3767 ) ( SetItem ( 3787 ) ( SetItem ( 3848 ) ( SetItem ( 3868 ) ( SetItem ( 3882 ) ( SetItem ( 390 ) ( SetItem ( 3910 ) ( SetItem ( 395 ) ( SetItem ( 397 ) ( SetItem ( 3989 ) ( SetItem ( 4025 ) ( SetItem ( 405 ) ( SetItem ( 4056 ) ( SetItem ( 4100 ) ( SetItem ( 413 ) ( SetItem ( 4134 ) ( SetItem ( 4148 ) ( SetItem ( 4177 ) ( SetItem ( 4197 ) ( SetItem ( 4231 ) ( SetItem ( 426 ) ( SetItem ( 435 ) ( SetItem ( 4373 ) ( SetItem ( 4399 ) ( SetItem ( 443 ) ( SetItem ( 4460 ) ( SetItem ( 4465 ) ( SetItem ( 4489 ) ( SetItem ( 4493 ) ( SetItem ( 4498 ) ( SetItem ( 451 ) ( SetItem ( 4512 ) ( SetItem ( 4540 ) ( SetItem ( 459 ) ( SetItem ( 4627 ) ( SetItem ( 4647 ) ( SetItem ( 467 ) ( SetItem ( 4721 ) ( SetItem ( 475 ) ( SetItem ( 4797 ) ( SetItem ( 4811 ) ( SetItem ( 483 ) ( SetItem ( 4839 ) ( SetItem ( 4935 ) ( SetItem ( 496 ) ( SetItem ( 4961 ) ( SetItem ( 4981 ) ( SetItem ( 504 ) ( SetItem ( 5064 ) ( SetItem ( 512 ) ( SetItem ( 5160 ) ( SetItem ( 5174 ) ( SetItem ( 520 ) ( SetItem ( 5202 ) ( SetItem ( 5304 ) ( SetItem ( 5324 ) ( SetItem ( 533 ) ( SetItem ( 5402 ) ( SetItem ( 541 ) ( SetItem ( 5442 ) ( SetItem ( 5469 ) ( SetItem ( 549 ) ( SetItem ( 5567 ) ( SetItem ( 557 ) ( SetItem ( 5587 ) ( SetItem ( 565 ) ( SetItem ( 5666 ) ( SetItem ( 5702 ) ( SetItem ( 5717 ) ( SetItem ( 5728 ) ( SetItem ( 573 ) ( SetItem ( 5762 ) ( SetItem ( 5772 ) ( SetItem ( 581 ) ( SetItem ( 5883 ) ( SetItem ( 589 ) ( SetItem ( 5938 ) ( SetItem ( 5993 ) ( SetItem ( 6009 ) ( SetItem ( 605 ) ( SetItem ( 6122 ) ( SetItem ( 613 ) ( SetItem ( 6177 ) ( SetItem ( 621 ) ( SetItem ( 6232 ) ( SetItem ( 6248 ) ( SetItem ( 6275 ) ( SetItem ( 629 ) ( SetItem ( 6314 ) ( SetItem ( 6339 ) ( SetItem ( 6349 ) ( SetItem ( 6357 ) ( SetItem ( 6363 ) ( SetItem ( 6367 ) ( SetItem ( 637 ) ( SetItem ( 6373 ) ( SetItem ( 645 ) ( SetItem ( 6527 ) ( SetItem ( 6553 ) ( SetItem ( 658 ) ( SetItem ( 6614 ) ( SetItem ( 6619 ) ( SetItem ( 6624 ) ( SetItem ( 6641 ) ( SetItem ( 6654 ) ( SetItem ( 6667 ) ( SetItem ( 6680 ) ( SetItem ( 6698 ) ( SetItem ( 672 ) ( SetItem ( 6721 ) ( SetItem ( 6728 ) ( SetItem ( 6756 ) ( SetItem ( 6793 ) ( SetItem ( 6805 ) ( SetItem ( 6845 ) ( SetItem ( 6906 ) ( SetItem ( 6948 ) ( SetItem ( 6969 ) ( SetItem ( 6984 ) ( SetItem ( 6987 ) ( SetItem ( 700 ) ( SetItem ( 7011 ) ( SetItem ( 7028 ) ( SetItem ( 7052 ) ( SetItem ( 7072 ) ( SetItem ( 7111 ) ( SetItem ( 7139 ) ( SetItem ( 7157 ) ( SetItem ( 7170 ) ( SetItem ( 7231 ) ( SetItem ( 7250 ) ( SetItem ( 7311 ) ( SetItem ( 7329 ) ( SetItem ( 7345 ) ( SetItem ( 7365 ) ( SetItem ( 7397 ) ( SetItem ( 7403 ) ( SetItem ( 7438 ) ( SetItem ( 7452 ) ( SetItem ( 7470 ) ( SetItem ( 7480 ) ( SetItem ( 7502 ) ( SetItem ( 7520 ) ( SetItem ( 7544 ) ( SetItem ( 7564 ) ( SetItem ( 7582 ) ( SetItem ( 7622 ) ( SetItem ( 7647 ) ( SetItem ( 7664 ) ( SetItem ( 7675 ) ( SetItem ( 7694 ) ( SetItem ( 7711 ) ( SetItem ( 7753 ) ( SetItem ( 7771 ) ( SetItem ( 7779 ) ( SetItem ( 7821 ) ( SetItem ( 7863 ) ( SetItem ( 7877 ) ( SetItem ( 789 ) ( SetItem ( 7919 ) ( SetItem ( 7941 ) ( SetItem ( 7973 ) ( SetItem ( 7997 ) ( SetItem ( 8029 ) ( SetItem ( 8089 ) ( SetItem ( 809 ) ( SetItem ( 8094 ) ( SetItem ( 8102 ) ( SetItem ( 8104 ) ( SetItem ( 8118 ) ( SetItem ( 8123 ) ( SetItem ( 8143 ) ( SetItem ( 8157 ) ( SetItem ( 8162 ) ( SetItem ( 8193 ) ( SetItem ( 8202 ) ( SetItem ( 8230 ) ( SetItem ( 8248 ) ( SetItem ( 8272 ) ( SetItem ( 8296 ) ( SetItem ( 8303 ) ( SetItem ( 8324 ) ( SetItem ( 8347 ) ( SetItem ( 8375 ) ( SetItem ( 8387 ) ( SetItem ( 8400 ) ( SetItem ( 8419 ) ( SetItem ( 8442 ) ( SetItem ( 8454 ) ( SetItem ( 8466 ) ( SetItem ( 8507 ) ( SetItem ( 8544 ) ( SetItem ( 8553 ) ( SetItem ( 8573 ) ( SetItem ( 8651 ) ( SetItem ( 8664 ) ( SetItem ( 867 ) ( SetItem ( 8692 ) ( SetItem ( 8730 ) ( SetItem ( 8743 ) ( SetItem ( 8772 ) ( SetItem ( 8797 ) ( SetItem ( 8802 ) ( SetItem ( 8808 ) ( SetItem ( 8810 ) ( SetItem ( 8873 ) ( SetItem ( 8892 ) ( SetItem ( 8968 ) ( SetItem ( 9000 ) ( SetItem ( 9060 ) ( SetItem ( 9065 ) ( SetItem ( 9073 ) ( SetItem ( 9075 ) ( SetItem ( 9089 ) ( SetItem ( 9094 ) ( SetItem ( 9114 ) ( SetItem ( 9128 ) ( SetItem ( 9133 ) ( SetItem ( 9164 ) ( SetItem ( 9173 ) ( SetItem ( 9201 ) ( SetItem ( 9219 ) ( SetItem ( 9243 ) ( SetItem ( 9267 ) ( SetItem ( 9274 ) ( SetItem ( 9295 ) ( SetItem ( 9318 ) ( SetItem ( 9346 ) ( SetItem ( 9358 ) ( SetItem ( 936 ) ( SetItem ( 9371 ) ( SetItem ( 9390 ) ( SetItem ( 9413 ) ( SetItem ( 9425 ) ( SetItem ( 9437 ) ( SetItem ( 9478 ) ( SetItem ( 9515 ) ( SetItem ( 9524 ) ( SetItem ( 9544 ) ( SetItem ( 962 ) ( SetItem ( 9622 ) ( SetItem ( 9654 ) ( SetItem ( 9692 ) ( SetItem ( 9697 ) ( SetItem ( 9711 ) ( SetItem ( 9716 ) ( SetItem ( 9729 ) ( SetItem ( 9738 ) ( SetItem ( 9752 ) ( SetItem ( 9757 ) ( SetItem ( 9778 ) ( SetItem ( 982 ) ( SetItem ( 9830 ) ( SetItem ( 9839 ) ( SetItem ( 9880 ) ( SetItem ( 9937 ) ( SetItem ( 9949 ) ( SetItem ( 9967 ) ( SetItem ( 9983 ) SetItem ( 9990 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\x80M\xe4%" - - - 0 - - - ( 1 : ( 132 : ( 3072618433 : ( 491460923342184218035706888008750043977755113263 : ( 491460923342184218035706888008750043977755113263 : ( 395 : ( 2152588325 : .WordStack ) ) ) ) ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" - - - 2578 - - - #gas ( ( ( ( ( VGAS:Int +Int -32496 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32496 ) ) ) +Int -127905 ) ) - - - 25 - - - #gas ( Cgascap ( SHANGHAI , ( ( ( ( VGAS:Int +Int -32496 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32496 ) ) ) +Int -127571 ) , ( ( ( ( VGAS:Int +Int -32496 ) /Int 64 ) +Int #allBut64th ( ( VGAS:Int +Int -32496 ) ) ) +Int -127571 ) , 100 ) ) - - - false - - - 0 - - - - - .List - - - ( SetItem ( 491460923342184218035706888008750043977755113263 ) ( SetItem ( 645326474426547203313410069153905908525362434349 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - ... - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - 491460923342184218035706888008750043977755113263 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - ( 46308022326495007027972728677917914892729792999299745830475596687180801507328 |-> 1 ) - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01sW`\x005`\xe0\x1c\x80c\x8e:\xde\xc1\x11a\x00\xdeW\x80c\xbaAO\xa6\x11a\x00\x97W\x80c\xdc\xf0BG\x11a\x00qW\x80c\xdc\xf0BG\x14a\x02mW\x80c\xe2\f\x9fq\x14a\x02uW\x80c\xf9\xf4\xca\x02\x14a\x02}W\x80c\xfav&\xd4\x14a\x02\x85W`\x00\x80\xfd[\x80c\xbaAO\xa6\x14a\x02EW\x80c\xd3\x0b\xcc\xea\x14a\x02]W\x80c\xdc\x01\xaeE\x14a\x02eW`\x00\x80\xfd[\x80c\x8e:\xde\xc1\x14a\x02\x15W\x80c\x8f\xcc\xf7\x18\x14a\x02\x1dW\x80c\x91j\x17\xc6\x14a\x02%W\x80c\x97cc\xf4\x14a\x02-W\x80c\xae\xb5s\x1f\x14a\x025W\x80c\xb5P\x8a\xa9\x14a\x02=W`\x00\x80\xfd[\x80cM\x88\x1c\xd5\x11a\x010W\x80cM\x88\x1c\xd5\x14a\x01\xcbW\x80cT\xe2-\xbb\x14a\x01\xd3W\x80cf\xd9\xa9\xa0\x14a\x01\xdbW\x80ciK7\x07\x14a\x01\xf0W\x80c\x80M\xe4%\x14a\x01\xf8W\x80c\x85\"l\x81\x14a\x02\x00W`\x00\x80\xfd[\x80c\x01\xa0tr\x14a\x01xW\x80c\x15p\xff\xfb\x14a\x01\x8dW\x80c\x1e\xd7\x83\x1c\x14a\x01\x95W\x80c6J\x91i\x14a\x01\xb3W\x80c>^<#\x14a\x01\xbbW\x80c?r\x86\xf4\x14a\x01\xc3W[`\x00\x80\xfd[a\x01\x8ba\x01\x866`\x04a\x1a\x18V[a\x02\x92V[\x00[a\x01\x8ba\x04:V[a\x01\x9da\x04\x87V[`@Qa\x01\xaa\x91\x90a\x1aHV[`@Q\x80\x91\x03\x90\xf3[a\x01\x8ba\x04\xe9V[a\x01\x9da\x05\xceV[a\x01\x9da\x06.V[a\x01\x8ba\x06\x8eV[a\x01\x8ba\x07\x82V[a\x01\xe3a\x07\xe7V[`@Qa\x01\xaa\x91\x90a\x1a\x95V[a\x01\x8ba\x08\xd6V[a\x01\x8ba\tDV[a\x02\x08a\n;V[`@Qa\x01\xaa\x91\x90a\x1b\xa0V[a\x01\x8ba\x0b\x0bV[a\x01\x8ba\f\x9cV[a\x01\xe3a\rXV[a\x01\x8ba\x0e>V[a\x01\x8ba\x0f\x1cV[a\x02\x08a\x0f\x95V[a\x02Ma\x10eV[`@Q\x90\x15\x15\x81R` \x01a\x01\xaaV[a\x01\x8ba\x11\x92V[a\x01\x8ba\x12qV[a\x01\x8ba\x12\xbdV[a\x01\x9da\x13\xc8V[a\x01\x8ba\x14(V[`\x07Ta\x02M\x90`\xff\x16\x81V[`\x00`@Qa\x02\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x03\">\xab`\xe1\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\x06D}V\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\x15W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03)W=`\x00\x80>=`\x00\xfd[PP`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xf2\x8d\xce\xb3\x91Pc\x1d\xedks`\xe1\x1b\x90a\x03c\x90\x86\x90`$\x01a\x1c\x02V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16`\x01`\x01`\xe0\x1b\x03\x19\x94\x85\x16\x17\x90RQ`\xe0\x84\x90\x1b\x90\x92\x16\x82Ra\x03\xa8\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xc2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xd6W=`\x00\x80>=`\x00\xfd[PP`@Qc\x0b\x7fB\xbb`\xe3\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc[\xfa\x15\xd8\x91Pa\x04\x06\x90\x85\x90`\x04\x01a\x1c\x02V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x04\x1eW`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x042W=`\x00\x80>=`\x00\xfd[PPPPPPV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7fThis should be at depth 2\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1W[PPPPP\x90P\x90V[`\x00`@Qa\x04\xf7\x90a\x19\xfeV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\x13W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05bW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05vW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\x13\xce+\xc7`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x05\xc7W=`\x00\x80>=`\x00\xfd[PPPPPV[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x06\x9c\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x06\xb8W=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\x0fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07#W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91Pa\x07j\x90`\x04\x01` \x80\x82R`\x04\x90\x82\x01Rc\x11\x90RS`\xe2\x1b`@\x82\x01R``\x01\x90V[`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[0`\x01`\x01`\xa0\x1b\x03\x16c\x15p\xff\xfb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07\xbdW`\x00\x80\xfd[PZ\xf1\x92PPP\x80\x15a\x07\xceWP`\x01[P`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x04~\x90a\x1cRV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xb5W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08wW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x0bV[PPPP\x90P\x90V[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\"W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t6W=`\x00\x80>=`\x00\xfd[PPPPa\tBa\x16`V[V[`\x00`@Qa\tR\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\tnW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\t\xbdW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\t\xd1W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\n\x13W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n7\x91\x90a\x1c\x8fV[PPV[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\n~\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\n\xaa\x90a\x1c\xb1V[\x80\x15a\n\xf7W\x80`\x1f\x10a\n\xccWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\n\xf7V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\n\xdaW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\n_V[`\x00`@Qa\x0b\x19\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0b5W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0b\x84W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0b\x98W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16c\xb7$o\xc1`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0b\xdaW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0b\xfe\x91\x90a\x1c\x8fV[P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x05\xb3W`\x00\x80\xfd[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90a\f\xd1\x90`\x04\x01a\x1cRV[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\f\xebW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\f\xffW=`\x00\x80>=`\x00\xfd[PPPP0`\x01`\x01`\xa0\x1b\x03\x16cT\xe2-\xbb`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\rRW=`\x00\x80>=`\x00\xfd[PPPPV[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x0e&W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\r\xe8W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\r|V[`\x00`@Qa\x0eL\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0ehW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e\xb7W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0e\xcbW=`\x00\x80>=`\x00\xfd[PPPP\x80`\x01`\x01`\xa0\x1b\x03\x16cAg\x16\x8d`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x0f\x08W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\f_W=`\x00\x80>=`\x00\xfd[`\x00`@Qa\x0f*\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x0fFW=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\fKW`\x00\x80\xfd[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08\xcdW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0f\xd8\x90a\x1c\xb1V[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x10\x04\x90a\x1c\xb1V[\x80\x15a\x10QW\x80`\x1f\x10a\x10&Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x10QV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x104W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0f\xb9V[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x10\x87WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x11\x8dW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x11\x15\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x11/\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x11lW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x11qV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x11\x89\x91\x90a\x1c\x8fV[\x91PP[\x91\x90PV[`\x00`@Qa\x11\xa0\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x11\xbcW=`\x00\x80>=`\x00\xfd[P`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rc\x11\x90RS`\xe2\x1b`\x04\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x12\x13W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x12'W=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\t`$\x82\x01Rh!:\xba\x1030\xb4\xb6\x17`\xb9\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[`\x00\x80Q` a'\x91\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c\xf4\x84H\x14`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\r>W`\x00\x80\xfd[`\x00`@Qa\x12\xcb\x90a\x19\xf1V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x12\xe7W=`\x00\x80>=`\x00\xfd[P`@\x80Q\x80\x82\x01\x82R`\x12\x81RqRevert Reason Here`p\x1b` \x82\x01R\x90Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R\x91\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91c\xf2\x8d\xce\xb3\x91a\x13G\x91`\x04\x01a\x1c?V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x13aW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x13uW=`\x00\x80>=`\x00\xfd[PP`@Qc\xf7\xa3\x03\x81`\xe0\x1b\x81R` `\x04\x82\x01R`\x12`$\x82\x01RqRevert Reason Here`p\x1b`D\x82\x01R`\x01`\x01`\xa0\x1b\x03\x84\x16\x92Pc\xf7\xa3\x03\x81\x91P`d\x01a\x07jV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04\xdfW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x04\xc1WPPPPP\x90P\x90V[`\x00`@Qa\x146\x90a\x1a\x0bV[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x14RW=`\x00\x80>=`\x00\xfd[P`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x14\xb8W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x14\xccW=`\x00\x80>=`\x00\xfd[PP`@Qc4R\xef\xc9`\xe2\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P`\x01`\x01`\xa0\x1b\x03\x84\x16\x91Pc\xd1K\xbf$\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x15\x1aW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a\x1dNV[\x90Pa\x15]\x81`@Q\x80` \x01`@R\x80`\x00\x81RPa\x16\x82V[`@Qc\xf2\x8d\xce\xb3`\xe0\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xf2\x8d\xce\xb3\x90`d\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x15\xbfW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x15\xd3W=`\x00\x80>=`\x00\xfd[PP`@Qcu'\x95\xa1`\xe1\x1b\x81R`\x01`\x04\x82\x01R`\x00\x92P\x82\x91P`\x01`\x01`\xa0\x1b\x03\x85\x16\x90c\xeaO+B\x90`$\x01`@\x80Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x16\"W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16F\x91\x90a\x1d\xfbV[\x91P\x91Pa\x16U\x82`\x00a\x17yV[a\rR\x81`\x00a\x17yV[`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x00`$\x82\x01R`D\x01a\x04~V[a\x16\x8c\x82\x82a\x18XV[a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x16\xfb\x90` \x80\x82R`#\x90\x82\x01R\x7fError: a == b not satisfied [byt`@\x82\x01Rbes]`\xe8\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x82`@Qa\x172\x91\x90a\x1e\x1fV[`@Q\x80\x91\x03\x90\xa1\x7f\xd2n\x16\xca\xd4T\x87\x05\xe4\xc9\xe2\xd9O\x98\xee\x91\xc2\x89\x08^\xe4%YO\xd5c_\xa2\x96L\xcf\x18\x81`@Qa\x17i\x91\x90a\x1ecV[`@Q\x80\x91\x03\x90\xa1a\n7a\x18\xe5V[\x80\x82\x14a\n7W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x17\xea\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x82`@Qa\x18!\x91\x90a\x1e\x8dV[`@Q\x80\x91\x03\x90\xa1\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x81`@Qa\x17i\x91\x90a\x1e\xc5V[\x80Q\x82Q`\x01\x91\x90\x03a\x18\xdbW`\x00[\x83Q\x81\x10\x15a\x18\xd5W\x82\x81\x81Q\x81\x10a\x18\x83Wa\x18\x83a\x1e\xefV[` \x01\x01Q`\xf8\x1c`\xf8\x1b`\x01`\x01`\xf8\x1b\x03\x19\x16\x84\x82\x81Q\x81\x10a\x18\xaaWa\x18\xaaa\x1e\xefV[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16\x14a\x18\xc3W`\x00\x91P[\x80a\x18\xcd\x81a\x1f\x05V[\x91PPa\x18hV[Pa\x18\xdfV[P`\x00[\x92\x91PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x19\xe0W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x7f\x92\x91` \x01a\x1c\xebV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x19\x99\x91a\x1d\x1cV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x19\xd6W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x19\xdbV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x02\x8e\x80a\x1f-\x839\x01\x90V[a\x03\xcb\x80a!\xbb\x839\x01\x90V[a\x02\x0b\x80a%\x86\x839\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1a*W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x1aAW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x1a\x89W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x1adV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x1b9W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x1b$W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x1a\xfaV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x1a\xbdV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x1bcW\x81\x81\x01Q\x83\x82\x01R` \x01a\x1bKV[\x83\x81\x11\x15a\rRWPP`\x00\x91\x01RV[`\x00\x81Q\x80\x84Ra\x1b\x8c\x81` \x86\x01` \x86\x01a\x1bHV[`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x1b\xf5W`?\x19\x88\x86\x03\x01\x84Ra\x1b\xe3\x85\x83Qa\x1btV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x1b\xc7V[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x90\x91\x16\x81R`@` \x82\x01\x81\x90R`\x11\x90\x82\x01Rp\x05E$\x14\xe54dU$\xf5t\xe4U%4\x84\x95`|\x1b``\x82\x01R`\x80\x01\x90V[` \x81R`\x00a\x1aA` \x83\x01\x84a\x1btV[` \x81R`\x00a\x18\xdf` \x83\x01`\x19\x81R\x7fThis should be at depth 1\x00\x00\x00\x00\x00\x00\x00` \x82\x01R`@\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\x1c\xa1W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x1aAW`\x00\x80\xfd[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x1c\xc5W`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x1c\xe5WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x1d\x0e\x81`\x04\x85\x01` \x87\x01a\x1bHV[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x1d.\x81\x84` \x87\x01a\x1bHV[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00` \x82\x84\x03\x12\x15a\x1d`W`\x00\x80\xfd[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x1dxW`\x00\x80\xfd[\x81\x84\x01\x91P\x84`\x1f\x83\x01\x12a\x1d\x8cW`\x00\x80\xfd[\x81Q\x81\x81\x11\x15a\x1d\x9eWa\x1d\x9ea\x1d8V[`@Q`\x1f\x82\x01`\x1f\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x1d\xc6Wa\x1d\xc6a\x1d8V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x1d\xdfW`\x00\x80\xfd[a\x1d\xf0\x83` \x83\x01` \x88\x01a\x1bHV[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x1e\x0eW`\x00\x80\xfd[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x82\x81\x03` \x84\x01Ra\x1e[\x81\x85a\x1btV[\x94\x93PPPPV[`@\x81R`\x00a\x1eI`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b` \x82\x01R`@\x01\x90V[\x90P\x82` \x83\x01R\x92\x91PPV[`@\x81R`\x00a\x1e\xb7`@\x83\x01`\n\x81Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b` \x82\x01R`@\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x01\x82\x01a\x1f%WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`@Qa\x00\x1d\x90a\x00_V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x009W=`\x00\x80>=`\x00\xfd[P`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\x00lV[a\x02\x8e\x80a\x01=\x839\x01\x90V[`\xc3\x80a\x00z`\x009`\x00\xf3\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\x046\x10`(W`\x005`\xe0\x1c\x80c\x13\xce+\xc7\x14`-W[`\x00\x80\xfd[`3`5V[\x00[`\x00\x80T`@\x80QcAg\x16\x8d`\xe0\x1b\x81R\x90Q`\x01`\x01`\xa0\x1b\x03\x90\x92\x16\x92cAg\x16\x8d\x92`\x04\x80\x84\x01\x93\x82\x90\x03\x01\x81\x86\x80;\x15\x80\x15`tW`\x00\x80\xfd[PZ\xfa\x15\x80\x15`\x87W=`\x00\x80>=`\x00\xfd[PPPPV\xfe\xa2dipfsX\"\x12 \xbd\x12\x91\xf1PB\x8b\xc9\xe0\xf8nV6\xee3dN\x92\x11\x0e\xd3B4\x96\xcc\xc2\xaf\x92]\xd70\x8adsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x02n\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00LW`\x005`\xe0\x1c\x80cAg\x16\x8d\x14a\x00QW\x80c[\xfa\x15\xd8\x14a\x00[W\x80c\xb7$o\xc1\x14a\x00nW\x80c\xf7\xa3\x03\x81\x14a\x00\x82W[`\x00\x80\xfd[a\x00Y`\x00\x80\xfd[\x00[a\x00Ya\x00i6`\x04a\x01\"V[a\x00\x95V[`@\x80Q`\x01\x81R\x90Q\x90\x81\x90\x03` \x01\x90\xf3[a\x00Ya\x00\x906`\x04a\x01\x83V[a\x00\xbdV[\x82\x82\x82`@Qc\x1d\xedks`\xe1\x1b\x81R`\x04\x01a\x00\xb4\x93\x92\x91\x90a\x01\xeeV[`@Q\x80\x91\x03\x90\xfd[\x81\x81`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x00\xb4\x92\x91\x90a\x02\x1cV[`\x00\x80\x83`\x1f\x84\x01\x12a\x00\xebW`\x00\x80\xfd[P\x815g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\x03W`\x00\x80\xfd[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x01\x1bW`\x00\x80\xfd[\x92P\x92\x90PV[`\x00\x80`\x00`@\x84\x86\x03\x12\x15a\x017W`\x00\x80\xfd[\x835`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x01NW`\x00\x80\xfd[\x92P` \x84\x015g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01jW`\x00\x80\xfd[a\x01v\x86\x82\x87\x01a\x00\xd9V[\x94\x97\x90\x96P\x93\x94PPPPV[`\x00\x80` \x83\x85\x03\x12\x15a\x01\x96W`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x01\xadW`\x00\x80\xfd[a\x01\xb9\x85\x82\x86\x01a\x00\xd9V[\x90\x96\x90\x95P\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\x00\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1f\x90\x91\x01`\x1f\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xa0\x1b\x03\x84\x16\x81R`@` \x82\x01\x81\x90R`\x00\x90a\x02\x13\x90\x83\x01\x84\x86a\x01\xc5V[\x95\x94PPPPPV[` \x81R`\x00a\x020` \x83\x01\x84\x86a\x01\xc5V[\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 #\xac\xfb*L@\xe1\x1flJWe\xb1@|H\xb4\xa5\xee\r\xf2\xd8\n\x1c\x82\x87aW\x84n\x91$dsolcC\x00\x08\r\x003`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[Pa\x01\xeb\x80a\x00 `\x009`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x006W`\x005`\xe0\x1c\x80c\xd1K\xbf$\x14a\x00;W\x80c\xeaO+B\x14a\x00dW[`\x00\x80\xfd[a\x00Na\x00I6`\x04a\x017V[a\x00\x8cV[`@Qa\x00[\x91\x90a\x01`V[`@Q\x80\x91\x03\x90\xf3[a\x00wa\x00r6`\x04a\x017V[a\x00\xf2V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x00[V[``\x81\x15a\x00\xc9W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Qc\xde\xad\xbe\xef`\xe0\x1b` \x82\x01R`$\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\x00\x80\x82\x15a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x05`$\x82\x01Rd\"\xb997\xb9`\xd9\x1b`D\x82\x01R`d\x01a\x00\xc0V[P`\x01\x92`\x02\x92P\x90PV[`\x00` \x82\x84\x03\x12\x15a\x01IW`\x00\x80\xfd[\x815\x80\x15\x15\x81\x14a\x01YW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x01\x8dW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01qV[\x81\x81\x11\x15a\x01\x9fW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV\xfe\xa2dipfsX\"\x12 \xd1\x8d)i\x1d\x85\xd2/\x99\xd9j\x8bN\x19\x08z\x1d\x90\x89\x9f\xa6\xdb0\x1eG\x97'\xaaW&\xfd\xcddsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 i\xcb{o\xd7|\n5\xd7Qw~\x1aeu\xeb\xcf\xd1\"/2\xd8\x99kzHF-\xdb\xe3\xc0\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xa98[\xe1\x02\xac>\xac)t\x83\xddb3\xd6+>\x14\x96\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xa98[\xe1\x02\xac>\xac)t\x83\xddb3\xd6+>\x14\x96\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x85\"l\x81\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01qW\x80c\xe2\f\x9fq\x14a\x01\x89W\x80c\xfav&\xd4\x14a\x01\x91W\x80c\xfdP\xa0\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x85\"l\x81\x14a\x01LW\x80c\x91j\x17\xc6\x14a\x01aW\x80c\xb5P\x8a\xa9\x14a\x01iW`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xc8W\x80c?r\x86\xf4\x14a\x01\x1fW\x80cM\x9f\xeb5\x14a\x01'W\x80cf\xd9\xa9\xa0\x14a\x01/W\x80cv\f\x01\xa7\x14a\x01DW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xefW\x80c\x1e\xd7\x83\x1c\x14a\x00\xf9W\x80c>^<#\x14a\x01\x17W[`\x00\x80\xfd[a\x00\xf7a\x01\xa6V[\x00[a\x01\x01a\x01\xf1V[`@Qa\x01\x0e\x91\x90a\r,V[`@Q\x80\x91\x03\x90\xf3[a\x01\x01a\x02SV[a\x01\x01a\x02\xb3V[a\x00\xf7a\x03\x13V[a\x017a\x04MV[`@Qa\x01\x0e\x91\x90a\ryV[a\x00\xf7a\x05=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rb\x82\xb4)`\xe8\x1b`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03eW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03yW=`\x00\x80>=`\x00\xfd[PP`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xcaf\x9f\xa7\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xcbW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xdfW=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x043W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04GW=`\x00\x80>=`\x00\xfd[PPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x1bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04\xddW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04qV[PPPP\x90P\x90V[`\x1bT`@\x80Qc\x06f\x1a\xbd`\xe0\x1b\x81R\x90Qa\x05\xb2\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c\x06f\x1a\xbd\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xfa\x15\x80\x15a\x05\x87W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xab\x91\x90a\x0e\xd2V[`\x00a\n\xe8V[`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06\x16W=`\x00\x80>=`\x00\xfd[PPPPa\x06\x9b`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x06f\x1a\xbd`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06pW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x94\x91\x90a\x0e\xd2V[`\x01a\n\xe8V[V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xe0\x90a\x0e\xebV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\f\x90a\x0e\xebV[\x80\x15a\x07YW\x80`\x1f\x10a\x07.Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07YV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07a\n/V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\nG\x91\x90a\x0frV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xcaf\x9f\xa7\x90`$\x01a\x03\xb1V[\x80\x82\x14a\f\x0fW\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0bY\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f\x0fa\f\x13V[PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\r\x0eW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xad\x92\x91` \x01a\x0f%V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xc7\x91a\x0fVV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\r\x04W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\r\tV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x9b\x80a\x0f\x9c\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rmW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rHV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0e\x1dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e\x08W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\xdeV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xa1V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0eGW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0e/V[\x83\x81\x11\x15a\x04GWPP`\x00\x91\x01RV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0e\xc5W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xa6\x81\x89\x89\x01\x8a\x85\x01a\x0e,V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\x7fV[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\xe4W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xffW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0f\x1fWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0fH\x81`\x04\x85\x01` \x87\x01a\x0e,V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0fh\x81\x84` \x87\x01a\x0e,V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\x84W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\x94W`\x00\x80\xfd[\x93\x92PPPV\xfe`\xa0`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P3`\x80R`\x80Qa\x01fa\x005`\x009`\x00\x81\x81`g\x01R`\xb6\x01Ra\x01f`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 w$\xca\xfehX\xd3\x12\xaf\xe4}\xb0\xd1\x87d\x9f\xb5\x9fr\xfe\xc5\xa9\x1eX\x93\xcd\x9c\xce&~\x1a dsolcC\x00\x08\r\x003" - - - ( SetItem ( 102 ) ( SetItem ( 1075 ) ( SetItem ( 1095 ) ( SetItem ( 1101 ) ( SetItem ( 1137 ) ( SetItem ( 1245 ) ( SetItem ( 1307 ) ( SetItem ( 1331 ) ( SetItem ( 1340 ) ( SetItem ( 140 ) ( SetItem ( 1415 ) ( SetItem ( 1451 ) ( SetItem ( 1458 ) ( SetItem ( 1538 ) ( SetItem ( 1558 ) ( SetItem ( 16 ) ( SetItem ( 1648 ) ( SetItem ( 1684 ) ( SetItem ( 1691 ) ( SetItem ( 1693 ) ( SetItem ( 1729 ) ( SetItem ( 1760 ) ( SetItem ( 1804 ) ( SetItem ( 1838 ) ( SetItem ( 1852 ) ( SetItem ( 1881 ) ( SetItem ( 1901 ) ( SetItem ( 1937 ) ( SetItem ( 200 ) ( SetItem ( 2045 ) ( SetItem ( 2107 ) ( SetItem ( 2131 ) ( SetItem ( 2167 ) ( SetItem ( 2198 ) ( SetItem ( 2242 ) ( SetItem ( 2276 ) ( SetItem ( 2290 ) ( SetItem ( 2319 ) ( SetItem ( 2339 ) ( SetItem ( 234 ) ( SetItem ( 2373 ) ( SetItem ( 239 ) ( SetItem ( 247 ) ( SetItem ( 249 ) ( SetItem ( 2515 ) ( SetItem ( 2541 ) ( SetItem ( 257 ) ( SetItem ( 2602 ) ( SetItem ( 2607 ) ( SetItem ( 2631 ) ( SetItem ( 2635 ) ( SetItem ( 2640 ) ( SetItem ( 270 ) ( SetItem ( 2736 ) ( SetItem ( 279 ) ( SetItem ( 2792 ) ( SetItem ( 287 ) ( SetItem ( 2905 ) ( SetItem ( 295 ) ( SetItem ( 303 ) ( SetItem ( 3087 ) ( SetItem ( 3091 ) ( SetItem ( 311 ) ( SetItem ( 324 ) ( SetItem ( 3245 ) ( SetItem ( 3271 ) ( SetItem ( 332 ) ( SetItem ( 3332 ) ( SetItem ( 3337 ) ( SetItem ( 3342 ) ( SetItem ( 3359 ) ( SetItem ( 3372 ) ( SetItem ( 340 ) ( SetItem ( 3400 ) ( SetItem ( 3437 ) ( SetItem ( 3449 ) ( SetItem ( 3489 ) ( SetItem ( 353 ) ( SetItem ( 3550 ) ( SetItem ( 3592 ) ( SetItem ( 361 ) ( SetItem ( 3613 ) ( SetItem ( 3628 ) ( SetItem ( 3631 ) ( SetItem ( 3655 ) ( SetItem ( 3672 ) ( SetItem ( 369 ) ( SetItem ( 3711 ) ( SetItem ( 3750 ) ( SetItem ( 377 ) ( SetItem ( 3781 ) ( SetItem ( 3794 ) ( SetItem ( 3812 ) ( SetItem ( 3819 ) ( SetItem ( 3839 ) ( SetItem ( 3871 ) ( SetItem ( 3877 ) ( SetItem ( 3912 ) ( SetItem ( 3926 ) ( SetItem ( 393 ) ( SetItem ( 3944 ) ( SetItem ( 3954 ) ( SetItem ( 3972 ) ( SetItem ( 3988 ) ( SetItem ( 401 ) ( SetItem ( 4012 ) ( SetItem ( 4065 ) ( SetItem ( 4114 ) ( SetItem ( 4119 ) ( SetItem ( 4128 ) ( SetItem ( 4138 ) ( SetItem ( 414 ) ( SetItem ( 4147 ) ( SetItem ( 4186 ) ( SetItem ( 4210 ) ( SetItem ( 4218 ) ( SetItem ( 422 ) ( SetItem ( 4220 ) ( SetItem ( 4292 ) ( SetItem ( 4307 ) ( SetItem ( 4314 ) ( SetItem ( 434 ) ( SetItem ( 4346 ) ( SetItem ( 462 ) ( SetItem ( 497 ) ( SetItem ( 555 ) ( SetItem ( 585 ) ( SetItem ( 595 ) ( SetItem ( 691 ) ( SetItem ( 787 ) ( SetItem ( 869 ) ( SetItem ( 889 ) ( SetItem ( 945 ) ( SetItem ( 971 ) SetItem ( 991 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\n\x92T\xe4" - - - 0 - - - ( 247 : ( 177362148 : .WordStack ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\xa0`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P3`\x80R`\x80Qa\x01fa\x005`\x009`\x00\x81\x81`g\x01R`\xb6\x01Ra\x01f`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003" - - - 444 - - - #gas ( ( ( VGAS:Int +Int -32341 ) /Int 64 ) ) - - - 17 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32341 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x85\"l\x81\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01qW\x80c\xe2\f\x9fq\x14a\x01\x89W\x80c\xfav&\xd4\x14a\x01\x91W\x80c\xfdP\xa0\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x85\"l\x81\x14a\x01LW\x80c\x91j\x17\xc6\x14a\x01aW\x80c\xb5P\x8a\xa9\x14a\x01iW`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xc8W\x80c?r\x86\xf4\x14a\x01\x1fW\x80cM\x9f\xeb5\x14a\x01'W\x80cf\xd9\xa9\xa0\x14a\x01/W\x80cv\f\x01\xa7\x14a\x01DW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xefW\x80c\x1e\xd7\x83\x1c\x14a\x00\xf9W\x80c>^<#\x14a\x01\x17W[`\x00\x80\xfd[a\x00\xf7a\x01\xa6V[\x00[a\x01\x01a\x01\xf1V[`@Qa\x01\x0e\x91\x90a\r,V[`@Q\x80\x91\x03\x90\xf3[a\x01\x01a\x02SV[a\x01\x01a\x02\xb3V[a\x00\xf7a\x03\x13V[a\x017a\x04MV[`@Qa\x01\x0e\x91\x90a\ryV[a\x00\xf7a\x05=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rb\x82\xb4)`\xe8\x1b`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03eW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03yW=`\x00\x80>=`\x00\xfd[PP`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xcaf\x9f\xa7\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xcbW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xdfW=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x043W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04GW=`\x00\x80>=`\x00\xfd[PPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x1bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04\xddW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04qV[PPPP\x90P\x90V[`\x1bT`@\x80Qc\x06f\x1a\xbd`\xe0\x1b\x81R\x90Qa\x05\xb2\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c\x06f\x1a\xbd\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xfa\x15\x80\x15a\x05\x87W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xab\x91\x90a\x0e\xd2V[`\x00a\n\xe8V[`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06\x16W=`\x00\x80>=`\x00\xfd[PPPPa\x06\x9b`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x06f\x1a\xbd`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06pW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x94\x91\x90a\x0e\xd2V[`\x01a\n\xe8V[V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xe0\x90a\x0e\xebV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\f\x90a\x0e\xebV[\x80\x15a\x07YW\x80`\x1f\x10a\x07.Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07YV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07a\n/V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\nG\x91\x90a\x0frV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xcaf\x9f\xa7\x90`$\x01a\x03\xb1V[\x80\x82\x14a\f\x0fW\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0bY\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f\x0fa\f\x13V[PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\r\x0eW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xad\x92\x91` \x01a\x0f%V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xc7\x91a\x0fVV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\r\x04W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\r\tV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x9b\x80a\x0f\x9c\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rmW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rHV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0e\x1dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e\x08W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\xdeV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xa1V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0eGW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0e/V[\x83\x81\x11\x15a\x04GWPP`\x00\x91\x01RV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0e\xc5W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xa6\x81\x89\x89\x01\x8a\x85\x01a\x0e,V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\x7fV[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\xe4W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xffW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0f\x1fWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0fH\x81`\x04\x85\x01` \x87\x01a\x0e,V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0fh\x81\x84` \x87\x01a\x0e,V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\x84W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\x94W`\x00\x80\xfd[\x93\x92PPPV\xfe`\xa0`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P3`\x80R`\x80Qa\x01fa\x005`\x009`\x00\x81\x81`g\x01R`\xb6\x01Ra\x01f`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 w$\xca\xfehX\xd3\x12\xaf\xe4}\xb0\xd1\x87d\x9f\xb5\x9fr\xfe\xc5\xa9\x1eX\x93\xcd\x9c\xce&~\x1a dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x85\"l\x81\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01qW\x80c\xe2\f\x9fq\x14a\x01\x89W\x80c\xfav&\xd4\x14a\x01\x91W\x80c\xfdP\xa0\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x85\"l\x81\x14a\x01LW\x80c\x91j\x17\xc6\x14a\x01aW\x80c\xb5P\x8a\xa9\x14a\x01iW`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xc8W\x80c?r\x86\xf4\x14a\x01\x1fW\x80cM\x9f\xeb5\x14a\x01'W\x80cf\xd9\xa9\xa0\x14a\x01/W\x80cv\f\x01\xa7\x14a\x01DW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xefW\x80c\x1e\xd7\x83\x1c\x14a\x00\xf9W\x80c>^<#\x14a\x01\x17W[`\x00\x80\xfd[a\x00\xf7a\x01\xa6V[\x00[a\x01\x01a\x01\xf1V[`@Qa\x01\x0e\x91\x90a\r,V[`@Q\x80\x91\x03\x90\xf3[a\x01\x01a\x02SV[a\x01\x01a\x02\xb3V[a\x00\xf7a\x03\x13V[a\x017a\x04MV[`@Qa\x01\x0e\x91\x90a\ryV[a\x00\xf7a\x05=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rb\x82\xb4)`\xe8\x1b`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03eW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03yW=`\x00\x80>=`\x00\xfd[PP`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xcaf\x9f\xa7\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xcbW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xdfW=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x043W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04GW=`\x00\x80>=`\x00\xfd[PPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x1bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04\xddW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04qV[PPPP\x90P\x90V[`\x1bT`@\x80Qc\x06f\x1a\xbd`\xe0\x1b\x81R\x90Qa\x05\xb2\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c\x06f\x1a\xbd\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xfa\x15\x80\x15a\x05\x87W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xab\x91\x90a\x0e\xd2V[`\x00a\n\xe8V[`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06\x16W=`\x00\x80>=`\x00\xfd[PPPPa\x06\x9b`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x06f\x1a\xbd`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06pW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x94\x91\x90a\x0e\xd2V[`\x01a\n\xe8V[V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xe0\x90a\x0e\xebV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\f\x90a\x0e\xebV[\x80\x15a\x07YW\x80`\x1f\x10a\x07.Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07YV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07a\n/V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\nG\x91\x90a\x0frV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xcaf\x9f\xa7\x90`$\x01a\x03\xb1V[\x80\x82\x14a\f\x0fW\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0bY\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f\x0fa\f\x13V[PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\r\x0eW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xad\x92\x91` \x01a\x0f%V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xc7\x91a\x0fVV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\r\x04W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\r\tV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x9b\x80a\x0f\x9c\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rmW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rHV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0e\x1dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e\x08W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\xdeV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xa1V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0eGW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0e/V[\x83\x81\x11\x15a\x04GWPP`\x00\x91\x01RV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0e\xc5W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xa6\x81\x89\x89\x01\x8a\x85\x01a\x0e,V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\x7fV[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\xe4W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xffW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0f\x1fWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0fH\x81`\x04\x85\x01` \x87\x01a\x0e,V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0fh\x81\x84` \x87\x01a\x0e,V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\x84W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\x94W`\x00\x80\xfd[\x93\x92PPPV\xfe`\xa0`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P3`\x80R`\x80Qa\x01fa\x005`\x009`\x00\x81\x81`g\x01R`\xb6\x01Ra\x01f`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 w$\xca\xfehX\xd3\x12\xaf\xe4}\xb0\xd1\x87d\x9f\xb5\x9fr\xfe\xc5\xa9\x1eX\x93\xcd\x9c\xce&~\x1a dsolcC\x00\x08\r\x003" => b"`\xa0`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P3`\x80R`\x80Qa\x01fa\x005`\x009`\x00\x81\x81`g\x01R`\xb6\x01Ra\x01f`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 102 => 118 ) ) ( SetItem ( ( 1075 => 123 ) ) ( SetItem ( ( 1095 => 132 ) ) ( SetItem ( ( 1101 => 142 ) ) ( SetItem ( ( 1137 => 151 ) ) ( SetItem ( ( 1245 => 16 ) ) ( SetItem ( ( 1307 => 190 ) ) ( SetItem ( ( 1331 => 214 ) ) ( SetItem ( ( 1340 => 222 ) ) ( SetItem ( ( 140 => 224 ) ) ( SetItem ( ( 1415 => 296 ) ) ( SetItem ( ( 1451 => 311 ) ) ( SetItem ( ( 1458 => 318 ) ) ( SetItem ( ( 1538 => 350 ) ) ( ( SetItem ( 1558 ) ( SetItem ( 16 ) ( SetItem ( 1648 ) ( SetItem ( 1684 ) ( SetItem ( 1691 ) ( SetItem ( 1693 ) ( SetItem ( 1729 ) ( SetItem ( 1760 ) ( SetItem ( 1804 ) ( SetItem ( 1838 ) ( SetItem ( 1852 ) ( SetItem ( 1881 ) ( SetItem ( 1901 ) ( SetItem ( 1937 ) ( SetItem ( 200 ) ( SetItem ( 2045 ) ( SetItem ( 2107 ) ( SetItem ( 2131 ) ( SetItem ( 2167 ) ( SetItem ( 2198 ) ( SetItem ( 2242 ) ( SetItem ( 2276 ) ( SetItem ( 2290 ) ( SetItem ( 2319 ) ( SetItem ( 2339 ) ( SetItem ( 234 ) ( SetItem ( 2373 ) ( SetItem ( 239 ) ( SetItem ( 247 ) ( SetItem ( 249 ) ( SetItem ( 2515 ) ( SetItem ( 2541 ) ( SetItem ( 257 ) ( SetItem ( 2602 ) ( SetItem ( 2607 ) ( SetItem ( 2631 ) ( SetItem ( 2635 ) ( SetItem ( 2640 ) ( SetItem ( 270 ) ( SetItem ( 2736 ) ( SetItem ( 279 ) ( SetItem ( 2792 ) ( SetItem ( 287 ) ( SetItem ( 2905 ) ( SetItem ( 295 ) ( SetItem ( 303 ) ( SetItem ( 3087 ) ( SetItem ( 3091 ) ( SetItem ( 311 ) ( SetItem ( 324 ) ( SetItem ( 3245 ) ( SetItem ( 3271 ) ( SetItem ( 332 ) ( SetItem ( 3332 ) ( SetItem ( 3337 ) ( SetItem ( 3342 ) ( SetItem ( 3359 ) ( SetItem ( 3372 ) ( SetItem ( 340 ) ( SetItem ( 3400 ) ( SetItem ( 3437 ) ( SetItem ( 3449 ) ( SetItem ( 3489 ) ( SetItem ( 353 ) ( SetItem ( 3550 ) ( SetItem ( 3592 ) ( SetItem ( 361 ) ( SetItem ( 3613 ) ( SetItem ( 3628 ) ( SetItem ( 3631 ) ( SetItem ( 3655 ) ( SetItem ( 3672 ) ( SetItem ( 369 ) ( SetItem ( 3711 ) ( SetItem ( 3750 ) ( SetItem ( 377 ) ( SetItem ( 3781 ) ( SetItem ( 3794 ) ( SetItem ( 3812 ) ( SetItem ( 3819 ) ( SetItem ( 3839 ) ( SetItem ( 3871 ) ( SetItem ( 3877 ) ( SetItem ( 3912 ) ( SetItem ( 3926 ) ( SetItem ( 393 ) ( SetItem ( 3944 ) ( SetItem ( 3954 ) ( SetItem ( 3972 ) ( SetItem ( 3988 ) ( SetItem ( 401 ) ( SetItem ( 4012 ) ( SetItem ( 4065 ) ( SetItem ( 4114 ) ( SetItem ( 4119 ) ( SetItem ( 4128 ) ( SetItem ( 4138 ) ( SetItem ( 414 ) ( SetItem ( 4147 ) ( SetItem ( 4186 ) ( SetItem ( 4210 ) ( SetItem ( 4218 ) ( SetItem ( 422 ) ( SetItem ( 4220 ) ( SetItem ( 4292 ) ( SetItem ( 4307 ) ( SetItem ( 4314 ) ( SetItem ( 434 ) ( SetItem ( 4346 ) ( SetItem ( 462 ) ( SetItem ( 497 ) ( SetItem ( 555 ) ( SetItem ( 585 ) ( SetItem ( 595 ) ( SetItem ( 691 ) ( SetItem ( 787 ) ( SetItem ( 869 ) ( SetItem ( 889 ) ( SetItem ( 945 ) ( SetItem ( 971 ) SetItem ( 991 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 69 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\n\x92T\xe4" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xa98[\xe1\x02\xac>\xac)t\x83\xddb3\xd6+>\x14\x96\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xa98[\xe1\x02\xac>\xac)t\x83\xddb3\xd6+>\x14\x96\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003" ) - - - ( 0 => 51 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32341 ) ) +Int -164 ) ) ) - - - ( 0 => 12 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x85\"l\x81\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01qW\x80c\xe2\f\x9fq\x14a\x01\x89W\x80c\xfav&\xd4\x14a\x01\x91W\x80c\xfdP\xa0\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x85\"l\x81\x14a\x01LW\x80c\x91j\x17\xc6\x14a\x01aW\x80c\xb5P\x8a\xa9\x14a\x01iW`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xc8W\x80c?r\x86\xf4\x14a\x01\x1fW\x80cM\x9f\xeb5\x14a\x01'W\x80cf\xd9\xa9\xa0\x14a\x01/W\x80cv\f\x01\xa7\x14a\x01DW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xefW\x80c\x1e\xd7\x83\x1c\x14a\x00\xf9W\x80c>^<#\x14a\x01\x17W[`\x00\x80\xfd[a\x00\xf7a\x01\xa6V[\x00[a\x01\x01a\x01\xf1V[`@Qa\x01\x0e\x91\x90a\r,V[`@Q\x80\x91\x03\x90\xf3[a\x01\x01a\x02SV[a\x01\x01a\x02\xb3V[a\x00\xf7a\x03\x13V[a\x017a\x04MV[`@Qa\x01\x0e\x91\x90a\ryV[a\x00\xf7a\x05=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rb\x82\xb4)`\xe8\x1b`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03eW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03yW=`\x00\x80>=`\x00\xfd[PP`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xcaf\x9f\xa7\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xcbW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xdfW=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x043W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04GW=`\x00\x80>=`\x00\xfd[PPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x1bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04\xddW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04qV[PPPP\x90P\x90V[`\x1bT`@\x80Qc\x06f\x1a\xbd`\xe0\x1b\x81R\x90Qa\x05\xb2\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c\x06f\x1a\xbd\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xfa\x15\x80\x15a\x05\x87W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xab\x91\x90a\x0e\xd2V[`\x00a\n\xe8V[`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06\x16W=`\x00\x80>=`\x00\xfd[PPPPa\x06\x9b`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x06f\x1a\xbd`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06pW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x94\x91\x90a\x0e\xd2V[`\x01a\n\xe8V[V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xe0\x90a\x0e\xebV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\f\x90a\x0e\xebV[\x80\x15a\x07YW\x80`\x1f\x10a\x07.Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07YV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07a\n/V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\nG\x91\x90a\x0frV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xcaf\x9f\xa7\x90`$\x01a\x03\xb1V[\x80\x82\x14a\f\x0fW\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0bY\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f\x0fa\f\x13V[PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\r\x0eW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xad\x92\x91` \x01a\x0f%V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xc7\x91a\x0fVV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\r\x04W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\r\tV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x9b\x80a\x0f\x9c\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rmW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rHV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0e\x1dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e\x08W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\xdeV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xa1V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0eGW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0e/V[\x83\x81\x11\x15a\x04GWPP`\x00\x91\x01RV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0e\xc5W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xa6\x81\x89\x89\x01\x8a\x85\x01a\x0e,V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\x7fV[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\xe4W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xffW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0f\x1fWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0fH\x81`\x04\x85\x01` \x87\x01a\x0e,V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0fh\x81\x84` \x87\x01a\x0e,V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\x84W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\x94W`\x00\x80\xfd[\x93\x92PPPV\xfe`\xa0`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P3`\x80R`\x80Qa\x01fa\x005`\x009`\x00\x81\x81`g\x01R`\xb6\x01Ra\x01f`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 w$\xca\xfehX\xd3\x12\xaf\xe4}\xb0\xd1\x87d\x9f\xb5\x9fr\xfe\xc5\xa9\x1eX\x93\xcd\x9c\xce&~\x1a dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x85\"l\x81\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01qW\x80c\xe2\f\x9fq\x14a\x01\x89W\x80c\xfav&\xd4\x14a\x01\x91W\x80c\xfdP\xa0\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x85\"l\x81\x14a\x01LW\x80c\x91j\x17\xc6\x14a\x01aW\x80c\xb5P\x8a\xa9\x14a\x01iW`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xc8W\x80c?r\x86\xf4\x14a\x01\x1fW\x80cM\x9f\xeb5\x14a\x01'W\x80cf\xd9\xa9\xa0\x14a\x01/W\x80cv\f\x01\xa7\x14a\x01DW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xefW\x80c\x1e\xd7\x83\x1c\x14a\x00\xf9W\x80c>^<#\x14a\x01\x17W[`\x00\x80\xfd[a\x00\xf7a\x01\xa6V[\x00[a\x01\x01a\x01\xf1V[`@Qa\x01\x0e\x91\x90a\r,V[`@Q\x80\x91\x03\x90\xf3[a\x01\x01a\x02SV[a\x01\x01a\x02\xb3V[a\x00\xf7a\x03\x13V[a\x017a\x04MV[`@Qa\x01\x0e\x91\x90a\ryV[a\x00\xf7a\x05=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rb\x82\xb4)`\xe8\x1b`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03eW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03yW=`\x00\x80>=`\x00\xfd[PP`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xcaf\x9f\xa7\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xcbW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xdfW=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x043W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04GW=`\x00\x80>=`\x00\xfd[PPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x1bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04\xddW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04qV[PPPP\x90P\x90V[`\x1bT`@\x80Qc\x06f\x1a\xbd`\xe0\x1b\x81R\x90Qa\x05\xb2\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c\x06f\x1a\xbd\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xfa\x15\x80\x15a\x05\x87W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xab\x91\x90a\x0e\xd2V[`\x00a\n\xe8V[`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06\x16W=`\x00\x80>=`\x00\xfd[PPPPa\x06\x9b`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x06f\x1a\xbd`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06pW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x94\x91\x90a\x0e\xd2V[`\x01a\n\xe8V[V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xe0\x90a\x0e\xebV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\f\x90a\x0e\xebV[\x80\x15a\x07YW\x80`\x1f\x10a\x07.Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07YV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07a\n/V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\nG\x91\x90a\x0frV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xcaf\x9f\xa7\x90`$\x01a\x03\xb1V[\x80\x82\x14a\f\x0fW\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0bY\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f\x0fa\f\x13V[PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\r\x0eW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xad\x92\x91` \x01a\x0f%V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xc7\x91a\x0fVV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\r\x04W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\r\tV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x9b\x80a\x0f\x9c\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rmW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rHV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0e\x1dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e\x08W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\xdeV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xa1V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0eGW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0e/V[\x83\x81\x11\x15a\x04GWPP`\x00\x91\x01RV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0e\xc5W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xa6\x81\x89\x89\x01\x8a\x85\x01a\x0e,V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\x7fV[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\xe4W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xffW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0f\x1fWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0fH\x81`\x04\x85\x01` \x87\x01a\x0e,V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0fh\x81\x84` \x87\x01a\x0e,V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\x84W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\x94W`\x00\x80\xfd[\x93\x92PPPV\xfe`\xa0`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P3`\x80R`\x80Qa\x01fa\x005`\x009`\x00\x81\x81`g\x01R`\xb6\x01Ra\x01f`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 w$\xca\xfehX\xd3\x12\xaf\xe4}\xb0\xd1\x87d\x9f\xb5\x9fr\xfe\xc5\xa9\x1eX\x93\xcd\x9c\xce&~\x1a dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( #checkCall 728815563385977040452943777879061427756277306518 0 - ~> #call 728815563385977040452943777879061427756277306518 491460923342184218035706888008750043977755113263 491460923342184218035706888008750043977755113263 0 0 b"\xd0\x9d\xe0\x8a" false => #end EVMC_SUCCESS - ~> #pc [ STOP ] - ~> #execute ) - ~> #return 160 0 - ~> #pc [ CALL ] - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" => b"" ) - - - EVMC_SUCCESS - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x85\"l\x81\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01qW\x80c\xe2\f\x9fq\x14a\x01\x89W\x80c\xfav&\xd4\x14a\x01\x91W\x80c\xfdP\xa0\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x85\"l\x81\x14a\x01LW\x80c\x91j\x17\xc6\x14a\x01aW\x80c\xb5P\x8a\xa9\x14a\x01iW`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xc8W\x80c?r\x86\xf4\x14a\x01\x1fW\x80cM\x9f\xeb5\x14a\x01'W\x80cf\xd9\xa9\xa0\x14a\x01/W\x80cv\f\x01\xa7\x14a\x01DW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xefW\x80c\x1e\xd7\x83\x1c\x14a\x00\xf9W\x80c>^<#\x14a\x01\x17W[`\x00\x80\xfd[a\x00\xf7a\x01\xa6V[\x00[a\x01\x01a\x01\xf1V[`@Qa\x01\x0e\x91\x90a\r,V[`@Q\x80\x91\x03\x90\xf3[a\x01\x01a\x02SV[a\x01\x01a\x02\xb3V[a\x00\xf7a\x03\x13V[a\x017a\x04MV[`@Qa\x01\x0e\x91\x90a\ryV[a\x00\xf7a\x05=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rb\x82\xb4)`\xe8\x1b`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03eW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03yW=`\x00\x80>=`\x00\xfd[PP`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xcaf\x9f\xa7\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xcbW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xdfW=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x043W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04GW=`\x00\x80>=`\x00\xfd[PPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x1bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04\xddW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04qV[PPPP\x90P\x90V[`\x1bT`@\x80Qc\x06f\x1a\xbd`\xe0\x1b\x81R\x90Qa\x05\xb2\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c\x06f\x1a\xbd\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xfa\x15\x80\x15a\x05\x87W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xab\x91\x90a\x0e\xd2V[`\x00a\n\xe8V[`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06\x16W=`\x00\x80>=`\x00\xfd[PPPPa\x06\x9b`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x06f\x1a\xbd`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06pW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x94\x91\x90a\x0e\xd2V[`\x01a\n\xe8V[V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xe0\x90a\x0e\xebV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\f\x90a\x0e\xebV[\x80\x15a\x07YW\x80`\x1f\x10a\x07.Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07YV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07a\n/V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\nG\x91\x90a\x0frV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xcaf\x9f\xa7\x90`$\x01a\x03\xb1V[\x80\x82\x14a\f\x0fW\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0bY\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f\x0fa\f\x13V[PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\r\x0eW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xad\x92\x91` \x01a\x0f%V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xc7\x91a\x0fVV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\r\x04W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\r\tV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x9b\x80a\x0f\x9c\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rmW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rHV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0e\x1dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e\x08W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\xdeV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xa1V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0eGW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0e/V[\x83\x81\x11\x15a\x04GWPP`\x00\x91\x01RV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0e\xc5W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xa6\x81\x89\x89\x01\x8a\x85\x01a\x0e,V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\x7fV[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\xe4W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xffW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0f\x1fWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0fH\x81`\x04\x85\x01` \x87\x01a\x0e,V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0fh\x81\x84` \x87\x01a\x0e,V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\x84W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\x94W`\x00\x80\xfd[\x93\x92PPPV\xfe`\xa0`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P3`\x80R`\x80Qa\x01fa\x005`\x009`\x00\x81\x81`g\x01R`\xb6\x01Ra\x01f`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 w$\xca\xfehX\xd3\x12\xaf\xe4}\xb0\xd1\x87d\x9f\xb5\x9fr\xfe\xc5\xa9\x1eX\x93\xcd\x9c\xce&~\x1a dsolcC\x00\x08\r\x003" - - - ( SetItem ( 102 ) ( SetItem ( 1075 ) ( SetItem ( 1095 ) ( SetItem ( 1101 ) ( SetItem ( 1137 ) ( SetItem ( 1245 ) ( SetItem ( 1307 ) ( SetItem ( 1331 ) ( SetItem ( 1340 ) ( SetItem ( 140 ) ( SetItem ( 1415 ) ( SetItem ( 1451 ) ( SetItem ( 1458 ) ( SetItem ( 1538 ) ( SetItem ( 1558 ) ( SetItem ( 16 ) ( SetItem ( 1648 ) ( SetItem ( 1684 ) ( SetItem ( 1691 ) ( SetItem ( 1693 ) ( SetItem ( 1729 ) ( SetItem ( 1760 ) ( SetItem ( 1804 ) ( SetItem ( 1838 ) ( SetItem ( 1852 ) ( SetItem ( 1881 ) ( SetItem ( 1901 ) ( SetItem ( 1937 ) ( SetItem ( 200 ) ( SetItem ( 2045 ) ( SetItem ( 2107 ) ( SetItem ( 2131 ) ( SetItem ( 2167 ) ( SetItem ( 2198 ) ( SetItem ( 2242 ) ( SetItem ( 2276 ) ( SetItem ( 2290 ) ( SetItem ( 2319 ) ( SetItem ( 2339 ) ( SetItem ( 234 ) ( SetItem ( 2373 ) ( SetItem ( 239 ) ( SetItem ( 247 ) ( SetItem ( 249 ) ( SetItem ( 2515 ) ( SetItem ( 2541 ) ( SetItem ( 257 ) ( SetItem ( 2602 ) ( SetItem ( 2607 ) ( SetItem ( 2631 ) ( SetItem ( 2635 ) ( SetItem ( 2640 ) ( SetItem ( 270 ) ( SetItem ( 2736 ) ( SetItem ( 279 ) ( SetItem ( 2792 ) ( SetItem ( 287 ) ( SetItem ( 2905 ) ( SetItem ( 295 ) ( SetItem ( 303 ) ( SetItem ( 3087 ) ( SetItem ( 3091 ) ( SetItem ( 311 ) ( SetItem ( 324 ) ( SetItem ( 3245 ) ( SetItem ( 3271 ) ( SetItem ( 332 ) ( SetItem ( 3332 ) ( SetItem ( 3337 ) ( SetItem ( 3342 ) ( SetItem ( 3359 ) ( SetItem ( 3372 ) ( SetItem ( 340 ) ( SetItem ( 3400 ) ( SetItem ( 3437 ) ( SetItem ( 3449 ) ( SetItem ( 3489 ) ( SetItem ( 353 ) ( SetItem ( 3550 ) ( SetItem ( 3592 ) ( SetItem ( 361 ) ( SetItem ( 3613 ) ( SetItem ( 3628 ) ( SetItem ( 3631 ) ( SetItem ( 3655 ) ( SetItem ( 3672 ) ( SetItem ( 369 ) ( SetItem ( 3711 ) ( SetItem ( 3750 ) ( SetItem ( 377 ) ( SetItem ( 3781 ) ( SetItem ( 3794 ) ( SetItem ( 3812 ) ( SetItem ( 3819 ) ( SetItem ( 3839 ) ( SetItem ( 3871 ) ( SetItem ( 3877 ) ( SetItem ( 3912 ) ( SetItem ( 3926 ) ( SetItem ( 393 ) ( SetItem ( 3944 ) ( SetItem ( 3954 ) ( SetItem ( 3972 ) ( SetItem ( 3988 ) ( SetItem ( 401 ) ( SetItem ( 4012 ) ( SetItem ( 4065 ) ( SetItem ( 4114 ) ( SetItem ( 4119 ) ( SetItem ( 4128 ) ( SetItem ( 4138 ) ( SetItem ( 414 ) ( SetItem ( 4147 ) ( SetItem ( 4186 ) ( SetItem ( 4210 ) ( SetItem ( 4218 ) ( SetItem ( 422 ) ( SetItem ( 4220 ) ( SetItem ( 4292 ) ( SetItem ( 4307 ) ( SetItem ( 4314 ) ( SetItem ( 434 ) ( SetItem ( 4346 ) ( SetItem ( 462 ) ( SetItem ( 497 ) ( SetItem ( 555 ) ( SetItem ( 585 ) ( SetItem ( 595 ) ( SetItem ( 691 ) ( SetItem ( 787 ) ( SetItem ( 869 ) ( SetItem ( 889 ) ( SetItem ( 945 ) ( SetItem ( 971 ) SetItem ( 991 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Account - - - b"v\f\x01\xa7" - - - 0 - - - ( 164 : ( 3500007562 : ( 491460923342184218035706888008750043977755113263 : ( 247 : ( 1980498343 : .WordStack ) ) ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x9d\xe0\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - - - 1541 - - - #gas ( ( ( VGAS:Int -Int Cgascap ( SHANGHAI , ( VGAS:Int +Int -7882 ) , ( VGAS:Int +Int -7882 ) , 100 ) ) +Int -7982 ) ) - - - 6 - - - #gas ( Cgascap ( SHANGHAI , ( VGAS:Int +Int -7882 ) , ( VGAS:Int +Int -7882 ) , 100 ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 491460923342184218035706888008750043977755113263 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xa98[\xe1\x02\xac>\xac)t\x83\xddb3\xd6+>\x14\x96\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xa98[\xe1\x02\xac>\xac)t\x83\xddb3\xd6+>\x14\x96\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x85\"l\x81\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01qW\x80c\xe2\f\x9fq\x14a\x01\x89W\x80c\xfav&\xd4\x14a\x01\x91W\x80c\xfdP\xa0\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x85\"l\x81\x14a\x01LW\x80c\x91j\x17\xc6\x14a\x01aW\x80c\xb5P\x8a\xa9\x14a\x01iW`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xc8W\x80c?r\x86\xf4\x14a\x01\x1fW\x80cM\x9f\xeb5\x14a\x01'W\x80cf\xd9\xa9\xa0\x14a\x01/W\x80cv\f\x01\xa7\x14a\x01DW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xefW\x80c\x1e\xd7\x83\x1c\x14a\x00\xf9W\x80c>^<#\x14a\x01\x17W[`\x00\x80\xfd[a\x00\xf7a\x01\xa6V[\x00[a\x01\x01a\x01\xf1V[`@Qa\x01\x0e\x91\x90a\r,V[`@Q\x80\x91\x03\x90\xf3[a\x01\x01a\x02SV[a\x01\x01a\x02\xb3V[a\x00\xf7a\x03\x13V[a\x017a\x04MV[`@Qa\x01\x0e\x91\x90a\ryV[a\x00\xf7a\x05=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rb\x82\xb4)`\xe8\x1b`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03eW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03yW=`\x00\x80>=`\x00\xfd[PP`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xcaf\x9f\xa7\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xcbW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xdfW=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x043W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04GW=`\x00\x80>=`\x00\xfd[PPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x1bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04\xddW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04qV[PPPP\x90P\x90V[`\x1bT`@\x80Qc\x06f\x1a\xbd`\xe0\x1b\x81R\x90Qa\x05\xb2\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c\x06f\x1a\xbd\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xfa\x15\x80\x15a\x05\x87W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xab\x91\x90a\x0e\xd2V[`\x00a\n\xe8V[`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06\x16W=`\x00\x80>=`\x00\xfd[PPPPa\x06\x9b`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x06f\x1a\xbd`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06pW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x94\x91\x90a\x0e\xd2V[`\x01a\n\xe8V[V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xe0\x90a\x0e\xebV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\f\x90a\x0e\xebV[\x80\x15a\x07YW\x80`\x1f\x10a\x07.Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07YV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07a\n/V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\nG\x91\x90a\x0frV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xcaf\x9f\xa7\x90`$\x01a\x03\xb1V[\x80\x82\x14a\f\x0fW\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0bY\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f\x0fa\f\x13V[PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\r\x0eW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xad\x92\x91` \x01a\x0f%V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xc7\x91a\x0fVV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\r\x04W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\r\tV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x9b\x80a\x0f\x9c\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rmW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rHV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0e\x1dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e\x08W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\xdeV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xa1V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0eGW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0e/V[\x83\x81\x11\x15a\x04GWPP`\x00\x91\x01RV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0e\xc5W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xa6\x81\x89\x89\x01\x8a\x85\x01a\x0e,V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\x7fV[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\xe4W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xffW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0f\x1fWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0fH\x81`\x04\x85\x01` \x87\x01a\x0e,V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0fh\x81\x84` \x87\x01a\x0e,V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\x84W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\x94W`\x00\x80\xfd[\x93\x92PPPV\xfe`\xa0`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P3`\x80R`\x80Qa\x01fa\x005`\x009`\x00\x81\x81`g\x01R`\xb6\x01Ra\x01f`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 w$\xca\xfehX\xd3\x12\xaf\xe4}\xb0\xd1\x87d\x9f\xb5\x9fr\xfe\xc5\xa9\x1eX\x93\xcd\x9c\xce&~\x1a dsolcC\x00\x08\r\x003" - - - ( 27 |-> 491460923342184218035706888008750043977755113263 ) - - - .Map - - - 2 - - ) ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) - - - ( ( 491460923342184218035706888008750043977755113263 |-> SetItem ( 0 ) ) - ( 728815563385977040452943777879061427756277306518 |-> SetItem ( 27 ) ) ) - - } ) ) - - - _TOUCHEDACCOUNTS_CELL |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x85\"l\x81\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01qW\x80c\xe2\f\x9fq\x14a\x01\x89W\x80c\xfav&\xd4\x14a\x01\x91W\x80c\xfdP\xa0\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x85\"l\x81\x14a\x01LW\x80c\x91j\x17\xc6\x14a\x01aW\x80c\xb5P\x8a\xa9\x14a\x01iW`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xc8W\x80c?r\x86\xf4\x14a\x01\x1fW\x80cM\x9f\xeb5\x14a\x01'W\x80cf\xd9\xa9\xa0\x14a\x01/W\x80cv\f\x01\xa7\x14a\x01DW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xefW\x80c\x1e\xd7\x83\x1c\x14a\x00\xf9W\x80c>^<#\x14a\x01\x17W[`\x00\x80\xfd[a\x00\xf7a\x01\xa6V[\x00[a\x01\x01a\x01\xf1V[`@Qa\x01\x0e\x91\x90a\r,V[`@Q\x80\x91\x03\x90\xf3[a\x01\x01a\x02SV[a\x01\x01a\x02\xb3V[a\x00\xf7a\x03\x13V[a\x017a\x04MV[`@Qa\x01\x0e\x91\x90a\ryV[a\x00\xf7a\x05=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rb\x82\xb4)`\xe8\x1b`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03eW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03yW=`\x00\x80>=`\x00\xfd[PP`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xcaf\x9f\xa7\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xcbW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xdfW=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x043W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04GW=`\x00\x80>=`\x00\xfd[PPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x1bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04\xddW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04qV[PPPP\x90P\x90V[`\x1bT`@\x80Qc\x06f\x1a\xbd`\xe0\x1b\x81R\x90Qa\x05\xb2\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c\x06f\x1a\xbd\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xfa\x15\x80\x15a\x05\x87W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xab\x91\x90a\x0e\xd2V[`\x00a\n\xe8V[`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06\x16W=`\x00\x80>=`\x00\xfd[PPPPa\x06\x9b`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x06f\x1a\xbd`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06pW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x94\x91\x90a\x0e\xd2V[`\x01a\n\xe8V[V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xe0\x90a\x0e\xebV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\f\x90a\x0e\xebV[\x80\x15a\x07YW\x80`\x1f\x10a\x07.Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07YV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07a\n/V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\nG\x91\x90a\x0frV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xcaf\x9f\xa7\x90`$\x01a\x03\xb1V[\x80\x82\x14a\f\x0fW\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0bY\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f\x0fa\f\x13V[PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\r\x0eW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xad\x92\x91` \x01a\x0f%V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xc7\x91a\x0fVV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\r\x04W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\r\tV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x9b\x80a\x0f\x9c\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rmW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rHV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0e\x1dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e\x08W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\xdeV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xa1V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0eGW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0e/V[\x83\x81\x11\x15a\x04GWPP`\x00\x91\x01RV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0e\xc5W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xa6\x81\x89\x89\x01\x8a\x85\x01a\x0e,V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\x7fV[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\xe4W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xffW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0f\x1fWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0fH\x81`\x04\x85\x01` \x87\x01a\x0e,V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0fh\x81\x84` \x87\x01a\x0e,V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\x84W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\x94W`\x00\x80\xfd[\x93\x92PPPV\xfe`\xa0`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P3`\x80R`\x80Qa\x01fa\x005`\x009`\x00\x81\x81`g\x01R`\xb6\x01Ra\x01f`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 w$\xca\xfehX\xd3\x12\xaf\xe4}\xb0\xd1\x87d\x9f\xb5\x9fr\xfe\xc5\xa9\x1eX\x93\xcd\x9c\xce&~\x1a dsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xa98[\xe1\x02\xac>\xac)t\x83\xddb3\xd6+>\x14\x96\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xa98[\xe1\x02\xac>\xac)t\x83\xddb3\xd6+>\x14\x96\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 102 => 137 ) ) ( SetItem ( ( 1075 => 16 ) ) ( SetItem ( ( 1095 => 161 ) ) ( SetItem ( ( 1101 => 169 ) ) ( SetItem ( ( 1137 => 171 ) ) ( SetItem ( ( 1245 => 243 ) ) ( SetItem ( ( 1307 => 258 ) ) ( SetItem ( ( 1331 => 265 ) ) ( SetItem ( ( 1340 => 297 ) ) ( SetItem ( ( 140 => 65 ) ) ( SetItem ( ( 1415 => 70 ) ) ( SetItem ( ( 1451 => 79 ) ) ( SetItem ( ( 1458 => 89 ) ) ( ( SetItem ( 1538 ) ( SetItem ( 1558 ) ( SetItem ( 16 ) ( SetItem ( 1648 ) ( SetItem ( 1684 ) ( SetItem ( 1691 ) ( SetItem ( 1693 ) ( SetItem ( 1729 ) ( SetItem ( 1760 ) ( SetItem ( 1804 ) ( SetItem ( 1838 ) ( SetItem ( 1852 ) ( SetItem ( 1881 ) ( SetItem ( 1901 ) ( SetItem ( 1937 ) ( SetItem ( 200 ) ( SetItem ( 2045 ) ( SetItem ( 2107 ) ( SetItem ( 2131 ) ( SetItem ( 2167 ) ( SetItem ( 2198 ) ( SetItem ( 2242 ) ( SetItem ( 2276 ) ( SetItem ( 2290 ) ( SetItem ( 2319 ) ( SetItem ( 2339 ) ( SetItem ( 234 ) ( SetItem ( 2373 ) ( SetItem ( 239 ) ( SetItem ( 247 ) ( SetItem ( 249 ) ( SetItem ( 2515 ) ( SetItem ( 2541 ) ( SetItem ( 257 ) ( SetItem ( 2602 ) ( SetItem ( 2607 ) ( SetItem ( 2631 ) ( SetItem ( 2635 ) ( SetItem ( 2640 ) ( SetItem ( 270 ) ( SetItem ( 2736 ) ( SetItem ( 279 ) ( SetItem ( 2792 ) ( SetItem ( 287 ) ( SetItem ( 2905 ) ( SetItem ( 295 ) ( SetItem ( 303 ) ( SetItem ( 3087 ) ( SetItem ( 3091 ) ( SetItem ( 311 ) ( SetItem ( 324 ) ( SetItem ( 3245 ) ( SetItem ( 3271 ) ( SetItem ( 332 ) ( SetItem ( 3332 ) ( SetItem ( 3337 ) ( SetItem ( 3342 ) ( SetItem ( 3359 ) ( SetItem ( 3372 ) ( SetItem ( 340 ) ( SetItem ( 3400 ) ( SetItem ( 3437 ) ( SetItem ( 3449 ) ( SetItem ( 3489 ) ( SetItem ( 353 ) ( SetItem ( 3550 ) ( SetItem ( 3592 ) ( SetItem ( 361 ) ( SetItem ( 3613 ) ( SetItem ( 3628 ) ( SetItem ( 3631 ) ( SetItem ( 3655 ) ( SetItem ( 3672 ) ( SetItem ( 369 ) ( SetItem ( 3711 ) ( SetItem ( 3750 ) ( SetItem ( 377 ) ( SetItem ( 3781 ) ( SetItem ( 3794 ) ( SetItem ( 3812 ) ( SetItem ( 3819 ) ( SetItem ( 3839 ) ( SetItem ( 3871 ) ( SetItem ( 3877 ) ( SetItem ( 3912 ) ( SetItem ( 3926 ) ( SetItem ( 393 ) ( SetItem ( 3944 ) ( SetItem ( 3954 ) ( SetItem ( 3972 ) ( SetItem ( 3988 ) ( SetItem ( 401 ) ( SetItem ( 4012 ) ( SetItem ( 4065 ) ( SetItem ( 4114 ) ( SetItem ( 4119 ) ( SetItem ( 4128 ) ( SetItem ( 4138 ) ( SetItem ( 414 ) ( SetItem ( 4147 ) ( SetItem ( 4186 ) ( SetItem ( 4210 ) ( SetItem ( 4218 ) ( SetItem ( 422 ) ( SetItem ( 4220 ) ( SetItem ( 4292 ) ( SetItem ( 4307 ) ( SetItem ( 4314 ) ( SetItem ( 434 ) ( SetItem ( 4346 ) ( SetItem ( 462 ) ( SetItem ( 497 ) ( SetItem ( 555 ) ( SetItem ( 585 ) ( SetItem ( 595 ) ( SetItem ( 691 ) ( SetItem ( 787 ) ( SetItem ( 869 ) ( SetItem ( 889 ) ( SetItem ( 945 ) ( SetItem ( 971 ) SetItem ( 991 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 98 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Account => 728815563385977040452943777879061427756277306518 ) - - - ( b"v\f\x01\xa7" => b"\xd0\x9d\xe0\x8a" ) - - - 0 - - - ( ( 164 => 3500007562 ) : ( ( 3500007562 : ( 491460923342184218035706888008750043977755113263 : ( 247 : ( 1980498343 : .WordStack ) ) ) ) => .WordStack ) ) - - - ( b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x9d\xe0\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" => b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80" ) - - - ( 1541 => 170 ) - - - #gas ( ( ( ( VGAS:Int -Int Cgascap ( SHANGHAI , ( VGAS:Int +Int -7882 ) , ( VGAS:Int +Int -7882 ) , 100 ) ) => Cgascap ( SHANGHAI , ( VGAS:Int +Int -7882 ) , ( VGAS:Int +Int -7882 ) , 100 ) ) +Int ( -7982 => -20392 ) ) ) - - - ( 6 => 3 ) - - - ( #gas ( Cgascap ( SHANGHAI , ( VGAS:Int +Int -7882 ) , ( VGAS:Int +Int -7882 ) , 100 ) ) => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) - - - ( ( 491460923342184218035706888008750043977755113263 |-> SetItem ( 0 ) ) - ( 728815563385977040452943777879061427756277306518 |-> SetItem ( 27 ) ) ) - - - ... - - - - ( - - 491460923342184218035706888008750043977755113263 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xa98[\xe1\x02\xac>\xac)t\x83\xddb3\xd6+>\x14\x96\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xa98[\xe1\x02\xac>\xac)t\x83\xddb3\xd6+>\x14\x96\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003" - - - ( .Map => ( 0 |-> 1 ) ) - - - .Map - - - 1 - - - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xeaW`\x005`\xe0\x1c\x80c\x85\"l\x81\x11a\x00\x8cW\x80c\xbaAO\xa6\x11a\x00fW\x80c\xbaAO\xa6\x14a\x01qW\x80c\xe2\f\x9fq\x14a\x01\x89W\x80c\xfav&\xd4\x14a\x01\x91W\x80c\xfdP\xa0\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x85\"l\x81\x14a\x01LW\x80c\x91j\x17\xc6\x14a\x01aW\x80c\xb5P\x8a\xa9\x14a\x01iW`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xc8W\x80c?r\x86\xf4\x14a\x01\x1fW\x80cM\x9f\xeb5\x14a\x01'W\x80cf\xd9\xa9\xa0\x14a\x01/W\x80cv\f\x01\xa7\x14a\x01DW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xefW\x80c\x1e\xd7\x83\x1c\x14a\x00\xf9W\x80c>^<#\x14a\x01\x17W[`\x00\x80\xfd[a\x00\xf7a\x01\xa6V[\x00[a\x01\x01a\x01\xf1V[`@Qa\x01\x0e\x91\x90a\r,V[`@Q\x80\x91\x03\x90\xf3[a\x01\x01a\x02SV[a\x01\x01a\x02\xb3V[a\x00\xf7a\x03\x13V[a\x017a\x04MV[`@Qa\x01\x0e\x91\x90a\ryV[a\x00\xf7a\x05=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+W[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\x06\x18\xf5\x87`\xe5\x1b\x81Rb\x82\xb4)`\xe8\x1b`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xc3\x1e\xb0\xe0\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03eW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03yW=`\x00\x80>=`\x00\xfd[PP`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x92Pc\xcaf\x9f\xa7\x91P`$\x01[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xcbW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xdfW=`\x00\x80>=`\x00\xfd[PPPP`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x043W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04GW=`\x00\x80>=`\x00\xfd[PPPPV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x05\x1bW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x04\xddW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04qV[PPPP\x90P\x90V[`\x1bT`@\x80Qc\x06f\x1a\xbd`\xe0\x1b\x81R\x90Qa\x05\xb2\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c\x06f\x1a\xbd\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xfa\x15\x80\x15a\x05\x87W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xab\x91\x90a\x0e\xd2V[`\x00a\n\xe8V[`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\xd0\x9d\xe0\x8a`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06\x16W=`\x00\x80>=`\x00\xfd[PPPPa\x06\x9b`\x1b`\x00\x90T\x90a\x01\x00\n\x90\x04`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16c\x06f\x1a\xbd`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06pW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x94\x91\x90a\x0e\xd2V[`\x01a\n\xe8V[V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x053W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\xe0\x90a\x0e\xebV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x07\f\x90a\x0e\xebV[\x80\x15a\x07YW\x80`\x1f\x10a\x07.Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07YV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x07a\n/V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\nG\x91\x90a\x0frV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02IW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02+WPPPPP\x90P\x90V[`@Qc\xcaf\x9f\xa7`\xe0\x1b\x81R`\x00`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90c\xcaf\x9f\xa7\x90`$\x01a\x03\xb1V[\x80\x82\x14a\f\x0fW\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0bY\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\f\x0fa\f\x13V[PPV[sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\r\x0eW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xad\x92\x91` \x01a\x0f%V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\f\xc7\x91a\x0fVV[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\r\x04W`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\r\tV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[a\x01\x9b\x80a\x0f\x9c\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\rmW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\rHV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x0e\x1dW\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x0e\x08W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\xdeV[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\r\xa1V[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x0eGW\x81\x81\x01Q\x83\x82\x01R` \x01a\x0e/V[\x83\x81\x11\x15a\x04GWPP`\x00\x91\x01RV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0e\xc5W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0e\xa6\x81\x89\x89\x01\x8a\x85\x01a\x0e,V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e\x7fV[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\xe4W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xffW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0f\x1fWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0fH\x81`\x04\x85\x01` \x87\x01a\x0e,V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0fh\x81\x84` \x87\x01a\x0e,V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0f\x84W`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0f\x94W`\x00\x80\xfd[\x93\x92PPPV\xfe`\xa0`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P3`\x80R`\x80Qa\x01fa\x005`\x009`\x00\x81\x81`g\x01R`\xb6\x01Ra\x01f`\x00\xf3\xfe`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00AW`\x005`\xe0\x1c\x80c\x06f\x1a\xbd\x14a\x00FW\x80c\x8d\xa5\xcb[\x14a\x00bW\x80c\xd0\x9d\xe0\x8a\x14a\x00\xa1W[`\x00\x80\xfd[a\x00O`\x00T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\x89\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00YV[a\x00\xa9a\x00\xabV[\x00[3`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x14a\x00\xf3W`@Qb\x82\xb4)`\xe8\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x80T\x90\x80a\x01\x02\x83a\x01\tV[\x91\x90PUPV[`\x00`\x01\x82\x01a\x01)WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xd9}y\xce`\x05\xdf\xff\x95\xfc\x88\xf1\xbd\x8d\f\x96z\xfaR\xd3\xd9\"\xa5\xbd\x03=\xa4\xfa\xf8\x8f^\xc2dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 w$\xca\xfehX\xd3\x12\xaf\xe4}\xb0\xd1\x87d\x9f\xb5\x9fr\xfe\xc5\xa9\x1eX\x93\xcd\x9c\xce&~\x1a dsolcC\x00\x08\r\x003" - - - ( 27 |-> 491460923342184218035706888008750043977755113263 ) - - - .Map - - - 2 - - ) ) - - ... - - - ... - - [label(BASIC-BLOCK-18-TO-19)] - -endmodule diff --git a/tests/specs/kontrol/test-safetest-testwithdrawfuzz-uint96-0-spec.k b/tests/specs/kontrol/test-safetest-testwithdrawfuzz-uint96-0-spec.k deleted file mode 100644 index 1794ed4437..0000000000 --- a/tests/specs/kontrol/test-safetest-testwithdrawfuzz-uint96-0-spec.k +++ /dev/null @@ -1,307 +0,0 @@ -requires "verification.k" - -module TEST-SAFETEST-TESTWITHDRAWFUZZ-UINT96-0-SPEC - imports public VERIFICATION - - claim [BASIC-BLOCK-1-TO-3]: - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R`\x046\x10` W`\x005`\xe0\x1c\x80c<\xcf\xd6\x0b\x14`+W`\x00\x80\xfd[6`&W\x00[`\x00\x80\xfd[4\x80\x15`6W`\x00\x80\xfd[P`=`?V[\x00[`@Q3\x90G\x80\x15a\x08\xfc\x02\x91`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15`jW=`\x00\x80>=`\x00\xfd[PV\xfe\xa2dipfsX\"\x12 \x80P\xe5o[\xea\x1e#\x1c\x13o6\xe3\xb9\xb3\xd9T\t\x00\x98;\xf7%\x15]\x1c\xab\f\xd8\xdf\xe5dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R`\x046\x10a\x00\xc6W`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x7fW\x80c\xd0\xdaZ\n\x11a\x00YW\x80c\xd0\xdaZ\n\x14a\x01\xd1W\x80c\xd5\t\xb1l\x14a\x01\xf1W\x80c\xe2\f\x9fq\x14a\x02\x06W\x80c\xfav&\xd4\x14a\x02\x1bW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x82W\x80c\xb5P\x8a\xa9\x14a\x01\x97W\x80c\xbaAO\xa6\x14a\x01\xacW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xd2W\x80c\x1e\xd7\x83\x1c\x14a\x00\xe9W\x80c>^<#\x14a\x01\x14W\x80c?r\x86\xf4\x14a\x01)W\x80cf\xd9\xa9\xa0\x14a\x01>W\x80c\x85\"l\x81\x14a\x01`W`\x00\x80\xfd[6a\x00\xcdW\x00[`\x00\x80\xfd[4\x80\x15a\x00\xdeW`\x00\x80\xfd[Pa\x00\xe7a\x025V[\x00[4\x80\x15a\x00\xf5W`\x00\x80\xfd[Pa\x00\xfea\x02\x80V[`@Qa\x01\x0b\x91\x90a\f\xd1V[`@Q\x80\x91\x03\x90\xf3[4\x80\x15a\x01 W`\x00\x80\xfd[Pa\x00\xfea\x02\xe2V[4\x80\x15a\x015W`\x00\x80\xfd[Pa\x00\xfea\x03BV[4\x80\x15a\x01JW`\x00\x80\xfd[Pa\x01Sa\x03\xa2V[`@Qa\x01\x0b\x91\x90a\r\x1eV[4\x80\x15a\x01lW`\x00\x80\xfd[Pa\x01ua\x04\x91V[`@Qa\x01\x0b\x91\x90a\x0e\x01V[4\x80\x15a\x01\x8eW`\x00\x80\xfd[Pa\x01Sa\x05aV[4\x80\x15a\x01\xa3W`\x00\x80\xfd[Pa\x01ua\x06GV[4\x80\x15a\x01\xb8W`\x00\x80\xfd[Pa\x01\xc1a\x07\x17V[`@Q\x90\x15\x15\x81R` \x01a\x01\x0bV[4\x80\x15a\x01\xddW`\x00\x80\xfd[Pa\x00\xe7a\x01\xec6`\x04a\x0e{V[a\x08DV[4\x80\x15a\x01\xfdW`\x00\x80\xfd[Pa\x00\xe7a\t\x7fV[4\x80\x15a\x02\x12W`\x00\x80\xfd[Pa\x00\xfea\n7V[4\x80\x15a\x02'W`\x00\x80\xfd[P`\x07Ta\x01\xc1\x90`\xff\x16\x81V[`@Qa\x02A\x90a\f\xc5V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02]W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04pW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x042W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x03\xc6V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x04\xd4\x90a\x0e\xabV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x00\x90a\x0e\xabV[\x80\x15a\x05MW\x80`\x1f\x10a\x05\"Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05MV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x050W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xb5V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06/W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\xf1W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\x85V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\x8a\x90a\x0e\xabV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xb6\x90a\x0e\xabV[\x80\x15a\x07\x03W\x80`\x1f\x10a\x06\xd8Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\x03V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xe6W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06kV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x079WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08?W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x07\xc7\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0e\xe5V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x07\xe1\x91a\x0f\x16V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08\x1eW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08#V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08;\x91\x90a\x0f2V[\x91PP[\x91\x90PV[`@Qc&1\xf2\xb1`\xe1\x1b\x81Rg\x01cEx]\x8a\x00\x00`\x01`\x01``\x1b\x03\x83\x16\x11`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x08\xa1W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x08\xb5W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92P`\x01`\x01``\x1b\x03\x84\x16\x80\x15a\x08\xfc\x02\x92P\x90`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15a\x08\xfcW=`\x00\x80>=`\x00\xfd[P`\x1bT`@\x80Qc<\xcf\xd6\x0b`\xe0\x1b\x81R\x90QG\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c<\xcf\xd6\x0b\x91`\x04\x80\x83\x01\x92`\x00\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\tBW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tVW=`\x00\x80>=`\x00\xfd[PG\x92Pa\tz\x91Pa\tt\x90P`\x01`\x01``\x1b\x03\x85\x16\x84a\x0fTV[\x82a\n\x97V[PPPV[`\x1bT`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x90`\x00\x90g\r\xe0\xb6\xb3\xa7d\x00\x00\x90\x82\x81\x81\x81\x85\x88\x83\xf1\x93PPPP\x15\x80\x15a\t\xbcW=`\x00\x80>=`\x00\xfd[P`\x1bT`@\x80Qc<\xcf\xd6\x0b`\xe0\x1b\x81R\x90QG\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c<\xcf\xd6\x0b\x91`\x04\x80\x83\x01\x92`\x00\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\n\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x16W=`\x00\x80>=`\x00\xfd[PG\x92Pa\n3\x91Pa\tt\x90P\x83g\r\xe0\xb6\xb3\xa7d\x00\x00a\x0fTV[PPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[\x80\x82\x14a\n3W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x08\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\n3sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\f\xb4W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\fS\x92\x91` \x01a\x0e\xe5V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\fm\x91a\x0f\x16V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\f\xaaW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\f\xafV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xc1\x80a\x0f{\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x12W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\f\xedV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\r\xc2W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\r\xadW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\x83V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\rFV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\r\xecW\x81\x81\x01Q\x83\x82\x01R` \x01a\r\xd4V[\x83\x81\x11\x15a\r\xfbW`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0enW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0eO\x81\x89\x89\x01\x8a\x85\x01a\r\xd1V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e(V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\x8dW`\x00\x80\xfd[\x815`\x01`\x01``\x1b\x03\x81\x16\x81\x14a\x0e\xa4W`\x00\x80\xfd[\x93\x92PPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xbfW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0e\xdfWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x08\x81`\x04\x85\x01` \x87\x01a\r\xd1V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f(\x81\x84` \x87\x01a\r\xd1V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0fDW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0e\xa4W`\x00\x80\xfd[`\x00\x82\x19\x82\x11\x15a\x0fuWcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P\x01\x90V\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa3\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R`\x046\x10` W`\x005`\xe0\x1c\x80c<\xcf\xd6\x0b\x14`+W`\x00\x80\xfd[6`&W\x00[`\x00\x80\xfd[4\x80\x15`6W`\x00\x80\xfd[P`=`?V[\x00[`@Q3\x90G\x80\x15a\x08\xfc\x02\x91`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15`jW=`\x00\x80>=`\x00\xfd[PV\xfe\xa2dipfsX\"\x12 \x80P\xe5o[\xea\x1e#\x1c\x13o6\xe3\xb9\xb3\xd9T\t\x00\x98;\xf7%\x15]\x1c\xab\f\xd8\xdf\xe5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xba+j\xfd/\xa4\xff\xda\xa9\xbbC\xf94r\x8d\x15\xcb\xd4\x80\x19,\xa8\x07\xccNm\nj\xeb\xee\x1a\fdsolcC\x00\x08\r\x003" - - - ( SetItem ( 1074 ) ( SetItem ( 1136 ) ( SetItem ( 1160 ) ( SetItem ( 1169 ) ( SetItem ( 1205 ) ( SetItem ( 1236 ) ( SetItem ( maxSInt8 ) ( SetItem ( 1280 ) ( SetItem ( 1314 ) ( SetItem ( 1328 ) ( SetItem ( 1357 ) ( SetItem ( 1377 ) ( SetItem ( 1413 ) ( SetItem ( 1521 ) ( SetItem ( 1583 ) ( SetItem ( 1607 ) ( SetItem ( 1643 ) ( SetItem ( 1674 ) ( SetItem ( 1718 ) ( SetItem ( 1752 ) ( SetItem ( 1766 ) ( SetItem ( 1795 ) ( SetItem ( 1815 ) ( SetItem ( 1849 ) ( SetItem ( 198 ) ( SetItem ( 1991 ) ( SetItem ( 2017 ) ( SetItem ( 205 ) ( SetItem ( 2078 ) ( SetItem ( 2083 ) ( SetItem ( 210 ) ( SetItem ( 2107 ) ( SetItem ( 2111 ) ( SetItem ( 2116 ) ( SetItem ( 2209 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2300 ) ( SetItem ( 231 ) ( SetItem ( 233 ) ( SetItem ( 2370 ) ( SetItem ( 2390 ) ( SetItem ( 2420 ) ( SetItem ( 2426 ) ( SetItem ( 2431 ) ( SetItem ( 245 ) ( SetItem ( 2492 ) ( SetItem ( 254 ) ( SetItem ( 2562 ) ( SetItem ( 2582 ) ( SetItem ( 2611 ) ( SetItem ( 2615 ) ( SetItem ( 267 ) ( SetItem ( 2711 ) ( SetItem ( 276 ) ( SetItem ( 2824 ) ( SetItem ( 288 ) ( SetItem ( 297 ) ( SetItem ( 309 ) ( SetItem ( 3155 ) ( SetItem ( 318 ) ( SetItem ( 3181 ) ( SetItem ( 3242 ) ( SetItem ( 3247 ) ( SetItem ( 3252 ) ( SetItem ( 3269 ) ( SetItem ( 3281 ) ( SetItem ( 330 ) ( SetItem ( 3309 ) ( SetItem ( 3346 ) ( SetItem ( 3358 ) ( SetItem ( 339 ) ( SetItem ( 3398 ) ( SetItem ( 3459 ) ( SetItem ( 3501 ) ( SetItem ( 352 ) ( SetItem ( 3522 ) ( SetItem ( 3537 ) ( SetItem ( 3540 ) ( SetItem ( 3564 ) ( SetItem ( 3579 ) ( SetItem ( 3585 ) ( SetItem ( 3624 ) ( SetItem ( 364 ) ( SetItem ( 3663 ) ( SetItem ( 3694 ) ( SetItem ( 3707 ) ( SetItem ( 3725 ) ( SetItem ( 373 ) ( SetItem ( 3748 ) ( SetItem ( 3755 ) ( SetItem ( 3775 ) ( SetItem ( 3807 ) ( SetItem ( 3813 ) ( SetItem ( 3848 ) ( SetItem ( 386 ) ( SetItem ( 3862 ) ( SetItem ( 3880 ) ( SetItem ( 3890 ) ( SetItem ( 3908 ) ( SetItem ( 3924 ) ( SetItem ( 3957 ) ( SetItem ( 3978 ) ( SetItem ( 398 ) ( SetItem ( 4025 ) ( SetItem ( 4031 ) ( SetItem ( 4036 ) ( SetItem ( 4047 ) ( SetItem ( 4054 ) ( SetItem ( 4056 ) ( SetItem ( 407 ) ( SetItem ( 4099 ) ( SetItem ( 419 ) ( SetItem ( 428 ) ( SetItem ( 440 ) ( SetItem ( 449 ) ( SetItem ( 465 ) ( SetItem ( 477 ) ( SetItem ( 492 ) ( SetItem ( 497 ) ( SetItem ( 509 ) ( SetItem ( 518 ) ( SetItem ( 530 ) ( SetItem ( 539 ) ( SetItem ( 551 ) ( SetItem ( 565 ) ( SetItem ( 577 ) ( SetItem ( 605 ) ( SetItem ( 640 ) ( SetItem ( 698 ) ( SetItem ( 728 ) ( SetItem ( 738 ) ( SetItem ( 834 ) ( SetItem ( 89 ) ( SetItem ( 930 ) SetItem ( 966 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\n\x92T\xe4" - - - 0 - - - ( 231 : ( 177362148 : .WordStack ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa3\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R`\x046\x10` W`\x005`\xe0\x1c\x80c<\xcf\xd6\x0b\x14`+W`\x00\x80\xfd[6`&W\x00[`\x00\x80\xfd[4\x80\x15`6W`\x00\x80\xfd[P`=`?V[\x00[`@Q3\x90G\x80\x15a\x08\xfc\x02\x91`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15`jW=`\x00\x80>=`\x00\xfd[PV\xfe\xa2dipfsX\"\x12 \x80P\xe5o[\xea\x1e#\x1c\x13o6\xe3\xb9\xb3\xd9T\t\x00\x98;\xf7%\x15]\x1c\xab\f\xd8\xdf\xe5dsolcC\x00\x08\r\x003" - - - 587 - - - #gas ( ( ( VGAS:Int +Int -32270 ) /Int 64 ) ) - - - 11 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32270 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R`\x046\x10a\x00\xc6W`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x7fW\x80c\xd0\xdaZ\n\x11a\x00YW\x80c\xd0\xdaZ\n\x14a\x01\xd1W\x80c\xd5\t\xb1l\x14a\x01\xf1W\x80c\xe2\f\x9fq\x14a\x02\x06W\x80c\xfav&\xd4\x14a\x02\x1bW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x82W\x80c\xb5P\x8a\xa9\x14a\x01\x97W\x80c\xbaAO\xa6\x14a\x01\xacW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xd2W\x80c\x1e\xd7\x83\x1c\x14a\x00\xe9W\x80c>^<#\x14a\x01\x14W\x80c?r\x86\xf4\x14a\x01)W\x80cf\xd9\xa9\xa0\x14a\x01>W\x80c\x85\"l\x81\x14a\x01`W`\x00\x80\xfd[6a\x00\xcdW\x00[`\x00\x80\xfd[4\x80\x15a\x00\xdeW`\x00\x80\xfd[Pa\x00\xe7a\x025V[\x00[4\x80\x15a\x00\xf5W`\x00\x80\xfd[Pa\x00\xfea\x02\x80V[`@Qa\x01\x0b\x91\x90a\f\xd1V[`@Q\x80\x91\x03\x90\xf3[4\x80\x15a\x01 W`\x00\x80\xfd[Pa\x00\xfea\x02\xe2V[4\x80\x15a\x015W`\x00\x80\xfd[Pa\x00\xfea\x03BV[4\x80\x15a\x01JW`\x00\x80\xfd[Pa\x01Sa\x03\xa2V[`@Qa\x01\x0b\x91\x90a\r\x1eV[4\x80\x15a\x01lW`\x00\x80\xfd[Pa\x01ua\x04\x91V[`@Qa\x01\x0b\x91\x90a\x0e\x01V[4\x80\x15a\x01\x8eW`\x00\x80\xfd[Pa\x01Sa\x05aV[4\x80\x15a\x01\xa3W`\x00\x80\xfd[Pa\x01ua\x06GV[4\x80\x15a\x01\xb8W`\x00\x80\xfd[Pa\x01\xc1a\x07\x17V[`@Q\x90\x15\x15\x81R` \x01a\x01\x0bV[4\x80\x15a\x01\xddW`\x00\x80\xfd[Pa\x00\xe7a\x01\xec6`\x04a\x0e{V[a\x08DV[4\x80\x15a\x01\xfdW`\x00\x80\xfd[Pa\x00\xe7a\t\x7fV[4\x80\x15a\x02\x12W`\x00\x80\xfd[Pa\x00\xfea\n7V[4\x80\x15a\x02'W`\x00\x80\xfd[P`\x07Ta\x01\xc1\x90`\xff\x16\x81V[`@Qa\x02A\x90a\f\xc5V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02]W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04pW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x042W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x03\xc6V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x04\xd4\x90a\x0e\xabV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x00\x90a\x0e\xabV[\x80\x15a\x05MW\x80`\x1f\x10a\x05\"Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05MV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x050W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xb5V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06/W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\xf1W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\x85V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\x8a\x90a\x0e\xabV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xb6\x90a\x0e\xabV[\x80\x15a\x07\x03W\x80`\x1f\x10a\x06\xd8Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\x03V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xe6W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06kV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x079WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08?W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x07\xc7\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0e\xe5V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x07\xe1\x91a\x0f\x16V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08\x1eW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08#V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08;\x91\x90a\x0f2V[\x91PP[\x91\x90PV[`@Qc&1\xf2\xb1`\xe1\x1b\x81Rg\x01cEx]\x8a\x00\x00`\x01`\x01``\x1b\x03\x83\x16\x11`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x08\xa1W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x08\xb5W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92P`\x01`\x01``\x1b\x03\x84\x16\x80\x15a\x08\xfc\x02\x92P\x90`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15a\x08\xfcW=`\x00\x80>=`\x00\xfd[P`\x1bT`@\x80Qc<\xcf\xd6\x0b`\xe0\x1b\x81R\x90QG\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c<\xcf\xd6\x0b\x91`\x04\x80\x83\x01\x92`\x00\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\tBW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tVW=`\x00\x80>=`\x00\xfd[PG\x92Pa\tz\x91Pa\tt\x90P`\x01`\x01``\x1b\x03\x85\x16\x84a\x0fTV[\x82a\n\x97V[PPPV[`\x1bT`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x90`\x00\x90g\r\xe0\xb6\xb3\xa7d\x00\x00\x90\x82\x81\x81\x81\x85\x88\x83\xf1\x93PPPP\x15\x80\x15a\t\xbcW=`\x00\x80>=`\x00\xfd[P`\x1bT`@\x80Qc<\xcf\xd6\x0b`\xe0\x1b\x81R\x90QG\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c<\xcf\xd6\x0b\x91`\x04\x80\x83\x01\x92`\x00\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\n\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x16W=`\x00\x80>=`\x00\xfd[PG\x92Pa\n3\x91Pa\tt\x90P\x83g\r\xe0\xb6\xb3\xa7d\x00\x00a\x0fTV[PPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[\x80\x82\x14a\n3W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x08\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\n3sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\f\xb4W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\fS\x92\x91` \x01a\x0e\xe5V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\fm\x91a\x0f\x16V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\f\xaaW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\f\xafV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xc1\x80a\x0f{\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x12W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\f\xedV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\r\xc2W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\r\xadW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\x83V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\rFV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\r\xecW\x81\x81\x01Q\x83\x82\x01R` \x01a\r\xd4V[\x83\x81\x11\x15a\r\xfbW`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0enW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0eO\x81\x89\x89\x01\x8a\x85\x01a\r\xd1V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e(V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\x8dW`\x00\x80\xfd[\x815`\x01`\x01``\x1b\x03\x81\x16\x81\x14a\x0e\xa4W`\x00\x80\xfd[\x93\x92PPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xbfW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0e\xdfWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x08\x81`\x04\x85\x01` \x87\x01a\r\xd1V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f(\x81\x84` \x87\x01a\r\xd1V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0fDW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0e\xa4W`\x00\x80\xfd[`\x00\x82\x19\x82\x11\x15a\x0fuWcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P\x01\x90V\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa3\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R`\x046\x10` W`\x005`\xe0\x1c\x80c<\xcf\xd6\x0b\x14`+W`\x00\x80\xfd[6`&W\x00[`\x00\x80\xfd[4\x80\x15`6W`\x00\x80\xfd[P`=`?V[\x00[`@Q3\x90G\x80\x15a\x08\xfc\x02\x91`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15`jW=`\x00\x80>=`\x00\xfd[PV\xfe\xa2dipfsX\"\x12 \x80P\xe5o[\xea\x1e#\x1c\x13o6\xe3\xb9\xb3\xd9T\t\x00\x98;\xf7%\x15]\x1c\xab\f\xd8\xdf\xe5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xba+j\xfd/\xa4\xff\xda\xa9\xbbC\xf94r\x8d\x15\xcb\xd4\x80\x19,\xa8\x07\xccNm\nj\xeb\xee\x1a\fdsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R`\x046\x10a\x00\xc6W`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x7fW\x80c\xd0\xdaZ\n\x11a\x00YW\x80c\xd0\xdaZ\n\x14a\x01\xd1W\x80c\xd5\t\xb1l\x14a\x01\xf1W\x80c\xe2\f\x9fq\x14a\x02\x06W\x80c\xfav&\xd4\x14a\x02\x1bW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x82W\x80c\xb5P\x8a\xa9\x14a\x01\x97W\x80c\xbaAO\xa6\x14a\x01\xacW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xd2W\x80c\x1e\xd7\x83\x1c\x14a\x00\xe9W\x80c>^<#\x14a\x01\x14W\x80c?r\x86\xf4\x14a\x01)W\x80cf\xd9\xa9\xa0\x14a\x01>W\x80c\x85\"l\x81\x14a\x01`W`\x00\x80\xfd[6a\x00\xcdW\x00[`\x00\x80\xfd[4\x80\x15a\x00\xdeW`\x00\x80\xfd[Pa\x00\xe7a\x025V[\x00[4\x80\x15a\x00\xf5W`\x00\x80\xfd[Pa\x00\xfea\x02\x80V[`@Qa\x01\x0b\x91\x90a\f\xd1V[`@Q\x80\x91\x03\x90\xf3[4\x80\x15a\x01 W`\x00\x80\xfd[Pa\x00\xfea\x02\xe2V[4\x80\x15a\x015W`\x00\x80\xfd[Pa\x00\xfea\x03BV[4\x80\x15a\x01JW`\x00\x80\xfd[Pa\x01Sa\x03\xa2V[`@Qa\x01\x0b\x91\x90a\r\x1eV[4\x80\x15a\x01lW`\x00\x80\xfd[Pa\x01ua\x04\x91V[`@Qa\x01\x0b\x91\x90a\x0e\x01V[4\x80\x15a\x01\x8eW`\x00\x80\xfd[Pa\x01Sa\x05aV[4\x80\x15a\x01\xa3W`\x00\x80\xfd[Pa\x01ua\x06GV[4\x80\x15a\x01\xb8W`\x00\x80\xfd[Pa\x01\xc1a\x07\x17V[`@Q\x90\x15\x15\x81R` \x01a\x01\x0bV[4\x80\x15a\x01\xddW`\x00\x80\xfd[Pa\x00\xe7a\x01\xec6`\x04a\x0e{V[a\x08DV[4\x80\x15a\x01\xfdW`\x00\x80\xfd[Pa\x00\xe7a\t\x7fV[4\x80\x15a\x02\x12W`\x00\x80\xfd[Pa\x00\xfea\n7V[4\x80\x15a\x02'W`\x00\x80\xfd[P`\x07Ta\x01\xc1\x90`\xff\x16\x81V[`@Qa\x02A\x90a\f\xc5V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02]W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04pW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x042W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x03\xc6V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x04\xd4\x90a\x0e\xabV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x00\x90a\x0e\xabV[\x80\x15a\x05MW\x80`\x1f\x10a\x05\"Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05MV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x050W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xb5V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06/W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\xf1W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\x85V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\x8a\x90a\x0e\xabV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xb6\x90a\x0e\xabV[\x80\x15a\x07\x03W\x80`\x1f\x10a\x06\xd8Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\x03V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xe6W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06kV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x079WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08?W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x07\xc7\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0e\xe5V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x07\xe1\x91a\x0f\x16V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08\x1eW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08#V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08;\x91\x90a\x0f2V[\x91PP[\x91\x90PV[`@Qc&1\xf2\xb1`\xe1\x1b\x81Rg\x01cEx]\x8a\x00\x00`\x01`\x01``\x1b\x03\x83\x16\x11`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x08\xa1W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x08\xb5W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92P`\x01`\x01``\x1b\x03\x84\x16\x80\x15a\x08\xfc\x02\x92P\x90`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15a\x08\xfcW=`\x00\x80>=`\x00\xfd[P`\x1bT`@\x80Qc<\xcf\xd6\x0b`\xe0\x1b\x81R\x90QG\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c<\xcf\xd6\x0b\x91`\x04\x80\x83\x01\x92`\x00\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\tBW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tVW=`\x00\x80>=`\x00\xfd[PG\x92Pa\tz\x91Pa\tt\x90P`\x01`\x01``\x1b\x03\x85\x16\x84a\x0fTV[\x82a\n\x97V[PPPV[`\x1bT`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x90`\x00\x90g\r\xe0\xb6\xb3\xa7d\x00\x00\x90\x82\x81\x81\x81\x85\x88\x83\xf1\x93PPPP\x15\x80\x15a\t\xbcW=`\x00\x80>=`\x00\xfd[P`\x1bT`@\x80Qc<\xcf\xd6\x0b`\xe0\x1b\x81R\x90QG\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c<\xcf\xd6\x0b\x91`\x04\x80\x83\x01\x92`\x00\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\n\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x16W=`\x00\x80>=`\x00\xfd[PG\x92Pa\n3\x91Pa\tt\x90P\x83g\r\xe0\xb6\xb3\xa7d\x00\x00a\x0fTV[PPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[\x80\x82\x14a\n3W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x08\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\n3sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\f\xb4W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\fS\x92\x91` \x01a\x0e\xe5V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\fm\x91a\x0f\x16V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\f\xaaW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\f\xafV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xc1\x80a\x0f{\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x12W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\f\xedV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\r\xc2W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\r\xadW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\x83V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\rFV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\r\xecW\x81\x81\x01Q\x83\x82\x01R` \x01a\r\xd4V[\x83\x81\x11\x15a\r\xfbW`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0enW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0eO\x81\x89\x89\x01\x8a\x85\x01a\r\xd1V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e(V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\x8dW`\x00\x80\xfd[\x815`\x01`\x01``\x1b\x03\x81\x16\x81\x14a\x0e\xa4W`\x00\x80\xfd[\x93\x92PPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xbfW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0e\xdfWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x08\x81`\x04\x85\x01` \x87\x01a\r\xd1V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f(\x81\x84` \x87\x01a\r\xd1V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0fDW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0e\xa4W`\x00\x80\xfd[`\x00\x82\x19\x82\x11\x15a\x0fuWcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P\x01\x90V\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa3\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R`\x046\x10` W`\x005`\xe0\x1c\x80c<\xcf\xd6\x0b\x14`+W`\x00\x80\xfd[6`&W\x00[`\x00\x80\xfd[4\x80\x15`6W`\x00\x80\xfd[P`=`?V[\x00[`@Q3\x90G\x80\x15a\x08\xfc\x02\x91`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15`jW=`\x00\x80>=`\x00\xfd[PV\xfe\xa2dipfsX\"\x12 \x80P\xe5o[\xea\x1e#\x1c\x13o6\xe3\xb9\xb3\xd9T\t\x00\x98;\xf7%\x15]\x1c\xab\f\xd8\xdf\xe5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xba+j\xfd/\xa4\xff\xda\xa9\xbbC\xf94r\x8d\x15\xcb\xd4\x80\x19,\xa8\x07\xccNm\nj\xeb\xee\x1a\fdsolcC\x00\x08\r\x003" => b"`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa3\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R`\x046\x10` W`\x005`\xe0\x1c\x80c<\xcf\xd6\x0b\x14`+W`\x00\x80\xfd[6`&W\x00[`\x00\x80\xfd[4\x80\x15`6W`\x00\x80\xfd[P`=`?V[\x00[`@Q3\x90G\x80\x15a\x08\xfc\x02\x91`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15`jW=`\x00\x80>=`\x00\xfd[PV\xfe\xa2dipfsX\"\x12 \x80P\xe5o[\xea\x1e#\x1c\x13o6\xe3\xb9\xb3\xd9T\t\x00\x98;\xf7%\x15]\x1c\xab\f\xd8\xdf\xe5dsolcC\x00\x08\r\x003" ) - - - ( SetItem ( ( 1074 => 136 ) ) ( SetItem ( ( 1136 => 15 ) ) ( SetItem ( ( 1160 => 62 ) ) ( SetItem ( ( 1169 => 68 ) ) ( SetItem ( ( 1205 => 73 ) ) ( SetItem ( ( 1236 => 84 ) ) ( SetItem ( ( maxSInt8 => 91 ) ) ( ( SetItem ( 1280 ) ( SetItem ( 1314 ) ( SetItem ( 1328 ) ( SetItem ( 1357 ) ( SetItem ( 1377 ) ( SetItem ( 1413 ) ( SetItem ( 1521 ) ( SetItem ( 1583 ) ( SetItem ( 1607 ) ( SetItem ( 1643 ) ( SetItem ( 1674 ) ( SetItem ( 1718 ) ( SetItem ( 1752 ) ( SetItem ( 1766 ) ( SetItem ( 1795 ) ( SetItem ( 1815 ) ( SetItem ( 1849 ) ( SetItem ( 198 ) ( SetItem ( 1991 ) ( SetItem ( 2017 ) ( SetItem ( 205 ) ( SetItem ( 2078 ) ( SetItem ( 2083 ) ( SetItem ( 210 ) ( SetItem ( 2107 ) ( SetItem ( 2111 ) ( SetItem ( 2116 ) ( SetItem ( 2209 ) ( SetItem ( 222 ) ( SetItem ( 2229 ) ( SetItem ( 2300 ) ( SetItem ( 231 ) ( SetItem ( 233 ) ( SetItem ( 2370 ) ( SetItem ( 2390 ) ( SetItem ( 2420 ) ( SetItem ( 2426 ) ( SetItem ( 2431 ) ( SetItem ( 245 ) ( SetItem ( 2492 ) ( SetItem ( 254 ) ( SetItem ( 2562 ) ( SetItem ( 2582 ) ( SetItem ( 2611 ) ( SetItem ( 2615 ) ( SetItem ( 267 ) ( SetItem ( 2711 ) ( SetItem ( 276 ) ( SetItem ( 2824 ) ( SetItem ( 288 ) ( SetItem ( 297 ) ( SetItem ( 309 ) ( SetItem ( 3155 ) ( SetItem ( 318 ) ( SetItem ( 3181 ) ( SetItem ( 3242 ) ( SetItem ( 3247 ) ( SetItem ( 3252 ) ( SetItem ( 3269 ) ( SetItem ( 3281 ) ( SetItem ( 330 ) ( SetItem ( 3309 ) ( SetItem ( 3346 ) ( SetItem ( 3358 ) ( SetItem ( 339 ) ( SetItem ( 3398 ) ( SetItem ( 3459 ) ( SetItem ( 3501 ) ( SetItem ( 352 ) ( SetItem ( 3522 ) ( SetItem ( 3537 ) ( SetItem ( 3540 ) ( SetItem ( 3564 ) ( SetItem ( 3579 ) ( SetItem ( 3585 ) ( SetItem ( 3624 ) ( SetItem ( 364 ) ( SetItem ( 3663 ) ( SetItem ( 3694 ) ( SetItem ( 3707 ) ( SetItem ( 3725 ) ( SetItem ( 373 ) ( SetItem ( 3748 ) ( SetItem ( 3755 ) ( SetItem ( 3775 ) ( SetItem ( 3807 ) ( SetItem ( 3813 ) ( SetItem ( 3848 ) ( SetItem ( 386 ) ( SetItem ( 3862 ) ( SetItem ( 3880 ) ( SetItem ( 3890 ) ( SetItem ( 3908 ) ( SetItem ( 3924 ) ( SetItem ( 3957 ) ( SetItem ( 3978 ) ( SetItem ( 398 ) ( SetItem ( 4025 ) ( SetItem ( 4031 ) ( SetItem ( 4036 ) ( SetItem ( 4047 ) ( SetItem ( 4054 ) ( SetItem ( 4056 ) ( SetItem ( 407 ) ( SetItem ( 4099 ) ( SetItem ( 419 ) ( SetItem ( 428 ) ( SetItem ( 440 ) ( SetItem ( 449 ) ( SetItem ( 465 ) ( SetItem ( 477 ) ( SetItem ( 492 ) ( SetItem ( 497 ) ( SetItem ( 509 ) ( SetItem ( 518 ) ( SetItem ( 530 ) ( SetItem ( 539 ) ( SetItem ( 551 ) ( SetItem ( 565 ) ( SetItem ( 577 ) ( SetItem ( 605 ) ( SetItem ( 640 ) ( SetItem ( 698 ) ( SetItem ( 728 ) ( SetItem ( 738 ) ( SetItem ( 834 ) ( SetItem ( 89 ) ( SetItem ( 930 ) SetItem ( 966 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 93 ) ) ) ) ) ) ) ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\n\x92T\xe4" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R`\x046\x10` W`\x005`\xe0\x1c\x80c<\xcf\xd6\x0b\x14`+W`\x00\x80\xfd[6`&W\x00[`\x00\x80\xfd[4\x80\x15`6W`\x00\x80\xfd[P`=`?V[\x00[`@Q3\x90G\x80\x15a\x08\xfc\x02\x91`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15`jW=`\x00\x80>=`\x00\xfd[PV\xfe\xa2dipfsX\"\x12 \x80P\xe5o[\xea\x1e#\x1c\x13o6\xe3\xb9\xb3\xd9T\t\x00\x98;\xf7%\x15]\x1c\xab\f\xd8\xdf\xe5dsolcC\x00\x08\r\x003" ) - - - ( 0 => 28 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32270 ) ) +Int -87 ) ) ) - - - ( 0 => 6 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - .Map - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - .Map - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R`\x046\x10a\x00\xc6W`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x7fW\x80c\xd0\xdaZ\n\x11a\x00YW\x80c\xd0\xdaZ\n\x14a\x01\xd1W\x80c\xd5\t\xb1l\x14a\x01\xf1W\x80c\xe2\f\x9fq\x14a\x02\x06W\x80c\xfav&\xd4\x14a\x02\x1bW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x82W\x80c\xb5P\x8a\xa9\x14a\x01\x97W\x80c\xbaAO\xa6\x14a\x01\xacW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xd2W\x80c\x1e\xd7\x83\x1c\x14a\x00\xe9W\x80c>^<#\x14a\x01\x14W\x80c?r\x86\xf4\x14a\x01)W\x80cf\xd9\xa9\xa0\x14a\x01>W\x80c\x85\"l\x81\x14a\x01`W`\x00\x80\xfd[6a\x00\xcdW\x00[`\x00\x80\xfd[4\x80\x15a\x00\xdeW`\x00\x80\xfd[Pa\x00\xe7a\x025V[\x00[4\x80\x15a\x00\xf5W`\x00\x80\xfd[Pa\x00\xfea\x02\x80V[`@Qa\x01\x0b\x91\x90a\f\xd1V[`@Q\x80\x91\x03\x90\xf3[4\x80\x15a\x01 W`\x00\x80\xfd[Pa\x00\xfea\x02\xe2V[4\x80\x15a\x015W`\x00\x80\xfd[Pa\x00\xfea\x03BV[4\x80\x15a\x01JW`\x00\x80\xfd[Pa\x01Sa\x03\xa2V[`@Qa\x01\x0b\x91\x90a\r\x1eV[4\x80\x15a\x01lW`\x00\x80\xfd[Pa\x01ua\x04\x91V[`@Qa\x01\x0b\x91\x90a\x0e\x01V[4\x80\x15a\x01\x8eW`\x00\x80\xfd[Pa\x01Sa\x05aV[4\x80\x15a\x01\xa3W`\x00\x80\xfd[Pa\x01ua\x06GV[4\x80\x15a\x01\xb8W`\x00\x80\xfd[Pa\x01\xc1a\x07\x17V[`@Q\x90\x15\x15\x81R` \x01a\x01\x0bV[4\x80\x15a\x01\xddW`\x00\x80\xfd[Pa\x00\xe7a\x01\xec6`\x04a\x0e{V[a\x08DV[4\x80\x15a\x01\xfdW`\x00\x80\xfd[Pa\x00\xe7a\t\x7fV[4\x80\x15a\x02\x12W`\x00\x80\xfd[Pa\x00\xfea\n7V[4\x80\x15a\x02'W`\x00\x80\xfd[P`\x07Ta\x01\xc1\x90`\xff\x16\x81V[`@Qa\x02A\x90a\f\xc5V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02]W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04pW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x042W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x03\xc6V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x04\xd4\x90a\x0e\xabV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x00\x90a\x0e\xabV[\x80\x15a\x05MW\x80`\x1f\x10a\x05\"Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05MV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x050W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xb5V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06/W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\xf1W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\x85V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\x8a\x90a\x0e\xabV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xb6\x90a\x0e\xabV[\x80\x15a\x07\x03W\x80`\x1f\x10a\x06\xd8Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\x03V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xe6W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06kV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x079WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08?W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x07\xc7\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0e\xe5V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x07\xe1\x91a\x0f\x16V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08\x1eW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08#V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08;\x91\x90a\x0f2V[\x91PP[\x91\x90PV[`@Qc&1\xf2\xb1`\xe1\x1b\x81Rg\x01cEx]\x8a\x00\x00`\x01`\x01``\x1b\x03\x83\x16\x11`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x08\xa1W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x08\xb5W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92P`\x01`\x01``\x1b\x03\x84\x16\x80\x15a\x08\xfc\x02\x92P\x90`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15a\x08\xfcW=`\x00\x80>=`\x00\xfd[P`\x1bT`@\x80Qc<\xcf\xd6\x0b`\xe0\x1b\x81R\x90QG\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c<\xcf\xd6\x0b\x91`\x04\x80\x83\x01\x92`\x00\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\tBW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tVW=`\x00\x80>=`\x00\xfd[PG\x92Pa\tz\x91Pa\tt\x90P`\x01`\x01``\x1b\x03\x85\x16\x84a\x0fTV[\x82a\n\x97V[PPPV[`\x1bT`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x90`\x00\x90g\r\xe0\xb6\xb3\xa7d\x00\x00\x90\x82\x81\x81\x81\x85\x88\x83\xf1\x93PPPP\x15\x80\x15a\t\xbcW=`\x00\x80>=`\x00\xfd[P`\x1bT`@\x80Qc<\xcf\xd6\x0b`\xe0\x1b\x81R\x90QG\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c<\xcf\xd6\x0b\x91`\x04\x80\x83\x01\x92`\x00\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\n\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x16W=`\x00\x80>=`\x00\xfd[PG\x92Pa\n3\x91Pa\tt\x90P\x83g\r\xe0\xb6\xb3\xa7d\x00\x00a\x0fTV[PPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[\x80\x82\x14a\n3W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x08\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\n3sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\f\xb4W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\fS\x92\x91` \x01a\x0e\xe5V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\fm\x91a\x0f\x16V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\f\xaaW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\f\xafV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xc1\x80a\x0f{\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x12W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\f\xedV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\r\xc2W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\r\xadW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\x83V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\rFV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\r\xecW\x81\x81\x01Q\x83\x82\x01R` \x01a\r\xd4V[\x83\x81\x11\x15a\r\xfbW`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0enW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0eO\x81\x89\x89\x01\x8a\x85\x01a\r\xd1V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e(V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\x8dW`\x00\x80\xfd[\x815`\x01`\x01``\x1b\x03\x81\x16\x81\x14a\x0e\xa4W`\x00\x80\xfd[\x93\x92PPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xbfW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0e\xdfWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x08\x81`\x04\x85\x01` \x87\x01a\r\xd1V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f(\x81\x84` \x87\x01a\r\xd1V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0fDW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0e\xa4W`\x00\x80\xfd[`\x00\x82\x19\x82\x11\x15a\x0fuWcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P\x01\x90V\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa3\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R`\x046\x10` W`\x005`\xe0\x1c\x80c<\xcf\xd6\x0b\x14`+W`\x00\x80\xfd[6`&W\x00[`\x00\x80\xfd[4\x80\x15`6W`\x00\x80\xfd[P`=`?V[\x00[`@Q3\x90G\x80\x15a\x08\xfc\x02\x91`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15`jW=`\x00\x80>=`\x00\xfd[PV\xfe\xa2dipfsX\"\x12 \x80P\xe5o[\xea\x1e#\x1c\x13o6\xe3\xb9\xb3\xd9T\t\x00\x98;\xf7%\x15]\x1c\xab\f\xd8\xdf\xe5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xba+j\xfd/\xa4\xff\xda\xa9\xbbC\xf94r\x8d\x15\xcb\xd4\x80\x19,\xa8\x07\xccNm\nj\xeb\xee\x1a\fdsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R`\x046\x10a\x00\xc6W`\x005`\xe0\x1c\x80c\x91j\x17\xc6\x11a\x00\x7fW\x80c\xd0\xdaZ\n\x11a\x00YW\x80c\xd0\xdaZ\n\x14a\x01\xd1W\x80c\xd5\t\xb1l\x14a\x01\xf1W\x80c\xe2\f\x9fq\x14a\x02\x06W\x80c\xfav&\xd4\x14a\x02\x1bW`\x00\x80\xfd[\x80c\x91j\x17\xc6\x14a\x01\x82W\x80c\xb5P\x8a\xa9\x14a\x01\x97W\x80c\xbaAO\xa6\x14a\x01\xacW`\x00\x80\xfd[\x80c\n\x92T\xe4\x14a\x00\xd2W\x80c\x1e\xd7\x83\x1c\x14a\x00\xe9W\x80c>^<#\x14a\x01\x14W\x80c?r\x86\xf4\x14a\x01)W\x80cf\xd9\xa9\xa0\x14a\x01>W\x80c\x85\"l\x81\x14a\x01`W`\x00\x80\xfd[6a\x00\xcdW\x00[`\x00\x80\xfd[4\x80\x15a\x00\xdeW`\x00\x80\xfd[Pa\x00\xe7a\x025V[\x00[4\x80\x15a\x00\xf5W`\x00\x80\xfd[Pa\x00\xfea\x02\x80V[`@Qa\x01\x0b\x91\x90a\f\xd1V[`@Q\x80\x91\x03\x90\xf3[4\x80\x15a\x01 W`\x00\x80\xfd[Pa\x00\xfea\x02\xe2V[4\x80\x15a\x015W`\x00\x80\xfd[Pa\x00\xfea\x03BV[4\x80\x15a\x01JW`\x00\x80\xfd[Pa\x01Sa\x03\xa2V[`@Qa\x01\x0b\x91\x90a\r\x1eV[4\x80\x15a\x01lW`\x00\x80\xfd[Pa\x01ua\x04\x91V[`@Qa\x01\x0b\x91\x90a\x0e\x01V[4\x80\x15a\x01\x8eW`\x00\x80\xfd[Pa\x01Sa\x05aV[4\x80\x15a\x01\xa3W`\x00\x80\xfd[Pa\x01ua\x06GV[4\x80\x15a\x01\xb8W`\x00\x80\xfd[Pa\x01\xc1a\x07\x17V[`@Q\x90\x15\x15\x81R` \x01a\x01\x0bV[4\x80\x15a\x01\xddW`\x00\x80\xfd[Pa\x00\xe7a\x01\xec6`\x04a\x0e{V[a\x08DV[4\x80\x15a\x01\xfdW`\x00\x80\xfd[Pa\x00\xe7a\t\x7fV[4\x80\x15a\x02\x12W`\x00\x80\xfd[Pa\x00\xfea\n7V[4\x80\x15a\x02'W`\x00\x80\xfd[P`\x07Ta\x01\xc1\x90`\xff\x16\x81V[`@Qa\x02A\x90a\f\xc5V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02]W=`\x00\x80>=`\x00\xfd[P`\x1b\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaW[PPPPP\x90P\x90V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x04pW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x042W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x03\xc6V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x04\xd4\x90a\x0e\xabV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x00\x90a\x0e\xabV[\x80\x15a\x05MW\x80`\x1f\x10a\x05\"Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05MV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x050W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x04\xb5V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x06/W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\xf1W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x05\x85V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x04\x88W\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x06\x8a\x90a\x0e\xabV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xb6\x90a\x0e\xabV[\x80\x15a\x07\x03W\x80`\x1f\x10a\x06\xd8Wa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\x03V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xe6W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06kV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\x079WP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\x08?W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\x07\xc7\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x0e\xe5V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x07\xe1\x91a\x0f\x16V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\x08\x1eW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\x08#V[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\x08;\x91\x90a\x0f2V[\x91PP[\x91\x90PV[`@Qc&1\xf2\xb1`\xe1\x1b\x81Rg\x01cEx]\x8a\x00\x00`\x01`\x01``\x1b\x03\x83\x16\x11`\x04\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cLc\xe5b\x90`$\x01`\x00`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x08\xa1W`\x00\x80\xfd[PZ\xfa\x15\x80\x15a\x08\xb5W=`\x00\x80>=`\x00\xfd[PP`\x1bT`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x92P`\x01`\x01``\x1b\x03\x84\x16\x80\x15a\x08\xfc\x02\x92P\x90`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15a\x08\xfcW=`\x00\x80>=`\x00\xfd[P`\x1bT`@\x80Qc<\xcf\xd6\x0b`\xe0\x1b\x81R\x90QG\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c<\xcf\xd6\x0b\x91`\x04\x80\x83\x01\x92`\x00\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\tBW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\tVW=`\x00\x80>=`\x00\xfd[PG\x92Pa\tz\x91Pa\tt\x90P`\x01`\x01``\x1b\x03\x85\x16\x84a\x0fTV[\x82a\n\x97V[PPPV[`\x1bT`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x90`\x00\x90g\r\xe0\xb6\xb3\xa7d\x00\x00\x90\x82\x81\x81\x81\x85\x88\x83\xf1\x93PPPP\x15\x80\x15a\t\xbcW=`\x00\x80>=`\x00\xfd[P`\x1bT`@\x80Qc<\xcf\xd6\x0b`\xe0\x1b\x81R\x90QG\x92`\x01`\x01`\xa0\x1b\x03\x16\x91c<\xcf\xd6\x0b\x91`\x04\x80\x83\x01\x92`\x00\x92\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\n\x02W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\n\x16W=`\x00\x80>=`\x00\xfd[PG\x92Pa\n3\x91Pa\tt\x90P\x83g\r\xe0\xb6\xb3\xa7d\x00\x00a\x0fTV[PPV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02\xd8W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02\xbaWPPPPP\x90P\x90V[\x80\x82\x14a\n3W\x7fA0O\xac\xd92=u\xb1\x1b\xcd\xd6\t\xcb8\xef\xff\xfd\xb0W\x10\xf7\xca\xf0\xe9\xb1lm\x9dp\x9fP`@Qa\x0b\x08\x90` \x80\x82R`\"\x90\x82\x01R\x7fError: a == b not satisfied [uin`@\x82\x01Rat]`\xf0\x1b``\x82\x01R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x08\x13\x19Y\x9d`\xb2\x1b``\x82\x01R` \x81\x01\x84\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1`@\x80Q\x81\x81R`\n\x81\x83\x01Ri\x08\x08\x08\x08\x08\x14\x9aY\xda\x1d`\xb2\x1b``\x82\x01R` \x81\x01\x83\x90R\x90Q\x7f\xb2\xde/\xbe\x80\x1a\r\xf6\xc0\xcb\xdd\xfdD\x8b\xa3\xc4\x1dH\xa0@\xca5\xc5l\x81\x96\xef\x0f\xca\xe7!\xa8\x91\x81\x90\x03`\x80\x01\x90\xa1a\n3sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\f\xb4W`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x92\x82\x01\x92\x90\x92R`\x01``\x82\x01R`\x00\x91\x90\x7fp\xca\x10\xbb\xd0\xdb\xfd\x90 \xa9\xf4\xb14\x02\xc1l\xb1 p^\r\x1c\n\xea\xb1\x0f\xa3S\xaeXo\xc4\x90`\x80\x01`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\fS\x92\x91` \x01a\x0e\xe5V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\fm\x91a\x0f\x16V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\f\xaaW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\f\xafV[``\x91P[PPPP[`\x07\x80Ta\xff\x00\x19\x16a\x01\x00\x17\x90UV[`\xc1\x80a\x0f{\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\r\x12W\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\f\xedV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\r\xc2W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\r\xadW\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\r\x83V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\rFV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\r\xecW\x81\x81\x01Q\x83\x82\x01R` \x01a\r\xd4V[\x83\x81\x11\x15a\r\xfbW`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x0enW\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x0eO\x81\x89\x89\x01\x8a\x85\x01a\r\xd1V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0e(V[P\x92\x97\x96PPPPPPPV[`\x00` \x82\x84\x03\x12\x15a\x0e\x8dW`\x00\x80\xfd[\x815`\x01`\x01``\x1b\x03\x81\x16\x81\x14a\x0e\xa4W`\x00\x80\xfd[\x93\x92PPPV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x0e\xbfW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0e\xdfWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x0f\x08\x81`\x04\x85\x01` \x87\x01a\r\xd1V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x0f(\x81\x84` \x87\x01a\r\xd1V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0fDW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x0e\xa4W`\x00\x80\xfd[`\x00\x82\x19\x82\x11\x15a\x0fuWcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P\x01\x90V\xfe`\x80`@R4\x80\x15`\x0fW`\x00\x80\xfd[P`\xa3\x80a\x00\x1e`\x009`\x00\xf3\xfe`\x80`@R`\x046\x10` W`\x005`\xe0\x1c\x80c<\xcf\xd6\x0b\x14`+W`\x00\x80\xfd[6`&W\x00[`\x00\x80\xfd[4\x80\x15`6W`\x00\x80\xfd[P`=`?V[\x00[`@Q3\x90G\x80\x15a\x08\xfc\x02\x91`\x00\x81\x81\x81\x85\x88\x88\xf1\x93PPPP\x15\x80\x15`jW=`\x00\x80>=`\x00\xfd[PV\xfe\xa2dipfsX\"\x12 \x80P\xe5o[\xea\x1e#\x1c\x13o6\xe3\xb9\xb3\xd9T\t\x00\x98;\xf7%\x15]\x1c\xab\f\xd8\xdf\xe5dsolcC\x00\x08\r\x003\xa2dipfsX\"\x12 \xba+j\xfd/\xa4\xff\xda\xa9\xbbC\xf94r\x8d\x15\xcb\xd4\x80\x19,\xa8\x07\xccNm\nj\xeb\xee\x1a\fdsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01,W`\x005`\xe0\x1c\x80c\x87\xa8\xa8\x1b\x11a\x00\xadW\x80c\xbaAO\xa6\x11a\x00qW\x80c\xbaAO\xa6\x14a\x01\xdbW\x80c\xe2\f\x9fq\x14a\x01\xf3W\x80c\xe2\x92\xf8\xb5\x14a\x01\xfbW\x80c\xe9,\xa5\xbb\x14a\x02\x03W\x80c\xfav&\xd4\x14a\x02\x0bW`\x00\x80\xfd[\x80c\x87\xa8\xa8\x1b\x14a\x01\xb3W\x80c\x89\xa9\x9at\x14a\x01\xbbW\x80c\x91j\x17\xc6\x14a\x01\xc3W\x80c\x9bqn\x86\x14a\x01\xcbW\x80c\xb5P\x8a\xa9\x14a\x01\xd3W`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xf4W\x80c?r\x86\xf4\x14a\x01qW\x80cH\x08\x80s\x14a\x01yW\x80c\\-0.\x14a\x01\x81W\x80cf\xd9\xa9\xa0\x14a\x01\x89W\x80c\x85\"l\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x05\xf6\xff7\x14a\x011W\x80c\t\x84\x0b\xb5\x14a\x01;W\x80c\x1e\xd7\x83\x1c\x14a\x01CW\x80c$\x00z&\x14a\x01aW\x80c>^<#\x14a\x01iW[`\x00\x80\xfd[a\x019a\x02\x18V[\x00[a\x019a\x02\xb8V[a\x01Ka\x03\xfbV[`@Qa\x01X\x91\x90a\x0f6V[`@Q\x80\x91\x03\x90\xf3[a\x019a\x04]V[a\x01Ka\x04\xf5V[a\x01Ka\x05UV[a\x019a\x05\xb5V[a\x019a\x06\xf0V[a\x01\x91a\x07|V[`@Qa\x01X\x91\x90a\x0f\x83V[a\x01\xa6a\x08kV[`@Qa\x01X\x91\x90a\x10fV[a\x019a\t;V[a\x019a\t\xc9V[a\x01\x91a\n\x0bV[a\x019a\n\xf1V[a\x01\xa6a\x0byV[a\x01\xe3a\fIV[`@Q\x90\x15\x15\x81R` \x01a\x01XV[a\x01Ka\rvV[a\x019a\r\xd6V[a\x019a\x0e\x06V[`\x07Ta\x01\xe3\x90`\xff\x16\x81V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91Pa\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16cp\xca\x10\xbb`\xe0\x1b\x17\x90Ra\x0f\x08V[\x90P\x80`}\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[PV[`\x00`@Qa\x02\xc6\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xe2W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a\x13X\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c&l\xf1\t`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x031W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03EW=`\x00\x80>=`\x00\xfd[PP`@Qce\xbc\x94\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00\x92P\x82\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90ce\xbc\x94\x81\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x03\xa8W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x03\xd0\x91\x90\x81\x01\x90a\x11\xc8V[\x91P\x91P\x81Q`\x01\x14a\x03\xe5Wa\x03\xe5a\x11\x01V[\x80Q`\x01\x14a\x03\xf6Wa\x03\xf6a\x11\x01V[PPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045W[PPPPP\x90P\x90V[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`e`\x04\x82\x01R`\x17`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\xb4W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xd8\x91\x90a\x12,V[P`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`\x00`@Qa\x05\xc3\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\xdfW=`\x00\x80>=`\x00\xfd[P`@Qcp\xca\x10\xbb`\xe0\x1b\x81R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x06!\x90\x84\x90`\x00\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06;W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06OW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00`$\x82\x01\x81\x90R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06\xb5W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xd9\x91\x90a\x12,V[\x90Pazi\x81\x14a\x06\xecWa\x06\xeca\x11\x01V[PPV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x07.\x90`e\x90`\x17\x90`\x05\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07HW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07\\W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\fW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xa0V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x08\xae\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xda\x90a\x12EV[\x80\x15a\t'W\x80`\x1f\x10a\x08\xfcWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t'V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\nW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\x8fV[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`d`\x04\x82\x01R`\x17`$\x82\x01R`\x00\x90sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\t\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xb9\x91\x90a\x12,V[\x90P\x80\x15a\x02\xb5Wa\x02\xb5a\x11\x01V[`@Q`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90a\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[\x90P\x80a\nA\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xd9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\x9bW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n/V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91P`d\x01[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x06g\xf9\xd7`\xe4\x1b\x17\x90Ra\x0f\x08V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0b\xbc\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0b\xe8\x90a\x12EV[\x80\x15a\f5W\x80`\x1f\x10a\f\nWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\f5V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\f\x18W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0b\x9dV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\fkWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\rqW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\f\xf9\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x12\x7fV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x13\x91a\x12\xb0V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\rPW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\rUV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\rm\x91\x90a\x12\xccV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90`d\x01a\x0bJV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x0eE\x90`\x00\x90`\x03\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e_W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0esW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x00`\x04\x82\x01\x81\x90R`\x03`$\x83\x01R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0e\xd1W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0e\xf5\x91\x90a\x12,V[\x90Pazi\x81\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[`\x00\x80\x82` \x01\x83QZ`\x00\x80\x83\x85`\x00\x8b\x86\xf1PZ\x90\x03\x96\x95PPPPPPV[`b\x80a\x12\xf6\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0fwW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0fRV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10'W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\x12W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0f\xe8V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0f\xabV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10QW\x81\x81\x01Q\x83\x82\x01R` \x01a\x109V[\x83\x81\x11\x15a\x10`W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x10\xd3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x10\xb4\x81\x89\x89\x01\x8a\x85\x01a\x106V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\x8dV[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00\x82`\x1f\x83\x01\x12a\x11>W`\x00\x80\xfd[\x81Q` g\xff\xff\xff\xff\xff\xff\xff\xff\x80\x83\x11\x15a\x11[Wa\x11[a\x11\x17V[\x82`\x05\x1b`@Q`\x1f\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x84\x82\x11\x17\x15a\x11\x80Wa\x11\x80a\x11\x17V[`@R\x93\x84R\x85\x81\x01\x83\x01\x93\x83\x81\x01\x92P\x87\x85\x11\x15a\x11\x9eW`\x00\x80\xfd[\x83\x87\x01\x91P[\x84\x82\x10\x15a\x11\xbdW\x81Q\x83R\x91\x83\x01\x91\x90\x83\x01\x90a\x11\xa4V[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x11\xdbW`\x00\x80\xfd[\x82Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x11\xf3W`\x00\x80\xfd[a\x11\xff\x86\x83\x87\x01a\x11-V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a\x12\x15W`\x00\x80\xfd[Pa\x12\"\x85\x82\x86\x01a\x11-V[\x91PP\x92P\x92\x90PV[`\x00` \x82\x84\x03\x12\x15a\x12>W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x12YW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x12yWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x12\xa2\x81`\x04\x85\x01` \x87\x01a\x106V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x12\xc2\x81\x84` \x87\x01a\x106V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x12\xdeW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x12\xeeW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 \rS\xb9\xc7\n\xb4\xaeE\xda_\xc7\x01\x13}\xef1\xa5\xb8\x17\x94o\xae\xb6\x13\xc3\x9cF(\xb6\x97A\x04dsolcC\x00\x08\r\x003" - - - ( SetItem ( 1014 ) ( SetItem ( 1019 ) ( SetItem ( 1077 ) ( SetItem ( 1107 ) ( SetItem ( 1117 ) ( SetItem ( 113 ) ( SetItem ( 1204 ) ( SetItem ( 1240 ) ( SetItem ( 1269 ) ( SetItem ( 1365 ) ( SetItem ( 1461 ) ( SetItem ( 1475 ) ( SetItem ( 1503 ) ( SetItem ( 1569 ) ( SetItem ( 1595 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1717 ) ( SetItem ( 173 ) ( SetItem ( 1753 ) ( SetItem ( 1772 ) ( SetItem ( 1776 ) ( SetItem ( 1838 ) ( SetItem ( 1864 ) ( SetItem ( 1884 ) ( SetItem ( 1916 ) ( SetItem ( 1952 ) ( SetItem ( 2060 ) ( SetItem ( 2122 ) ( SetItem ( 2146 ) ( SetItem ( 2155 ) ( SetItem ( 2191 ) ( SetItem ( 2222 ) ( SetItem ( 2266 ) ( SetItem ( 2300 ) ( SetItem ( 2314 ) ( SetItem ( 2343 ) ( SetItem ( 2363 ) ( SetItem ( 244 ) ( SetItem ( 2453 ) ( SetItem ( 2489 ) ( SetItem ( 2505 ) ( SetItem ( 2552 ) ( SetItem ( 2571 ) ( SetItem ( 2607 ) ( SetItem ( 2715 ) ( SetItem ( 2777 ) ( SetItem ( 2801 ) ( SetItem ( 2890 ) ( SetItem ( 2937 ) ( SetItem ( 2973 ) ( SetItem ( 300 ) ( SetItem ( 3004 ) ( SetItem ( 3048 ) ( SetItem ( 305 ) ( SetItem ( 3082 ) ( SetItem ( 3096 ) ( SetItem ( 3125 ) ( SetItem ( 313 ) ( SetItem ( 3145 ) ( SetItem ( 315 ) ( SetItem ( 3179 ) ( SetItem ( 323 ) ( SetItem ( 331 ) ( SetItem ( 3321 ) ( SetItem ( 3347 ) ( SetItem ( 3408 ) ( SetItem ( 3413 ) ( SetItem ( 3437 ) ( SetItem ( 344 ) ( SetItem ( 3441 ) ( SetItem ( 3446 ) ( SetItem ( 353 ) ( SetItem ( 3542 ) ( SetItem ( 3590 ) ( SetItem ( 361 ) ( SetItem ( 3653 ) ( SetItem ( 3679 ) ( SetItem ( 369 ) ( SetItem ( 3699 ) ( SetItem ( 377 ) ( SetItem ( 3793 ) ( SetItem ( 3829 ) ( SetItem ( 3848 ) ( SetItem ( 385 ) ( SetItem ( 3882 ) ( SetItem ( 3894 ) ( SetItem ( 3922 ) ( SetItem ( 393 ) ( SetItem ( 3959 ) ( SetItem ( 3971 ) ( SetItem ( 401 ) ( SetItem ( 4011 ) ( SetItem ( 4072 ) ( SetItem ( 4114 ) ( SetItem ( 4135 ) ( SetItem ( 414 ) ( SetItem ( 4150 ) ( SetItem ( 4153 ) ( SetItem ( 4177 ) ( SetItem ( 4192 ) ( SetItem ( 4198 ) ( SetItem ( 422 ) ( SetItem ( 4237 ) ( SetItem ( 4276 ) ( SetItem ( 4307 ) ( SetItem ( 4320 ) ( SetItem ( 435 ) ( SetItem ( 4353 ) ( SetItem ( 4375 ) ( SetItem ( 4397 ) ( SetItem ( 4414 ) ( SetItem ( 443 ) ( SetItem ( 4443 ) ( SetItem ( 4480 ) ( SetItem ( 451 ) ( SetItem ( 4510 ) ( SetItem ( 4516 ) ( SetItem ( 4541 ) ( SetItem ( 4552 ) ( SetItem ( 4571 ) ( SetItem ( 459 ) ( SetItem ( 4595 ) ( SetItem ( 4607 ) ( SetItem ( 4629 ) ( SetItem ( 4642 ) ( SetItem ( 4652 ) ( SetItem ( 467 ) ( SetItem ( 4670 ) ( SetItem ( 4677 ) ( SetItem ( 4697 ) ( SetItem ( 4729 ) ( SetItem ( 4735 ) ( SetItem ( 475 ) ( SetItem ( 4770 ) ( SetItem ( 4784 ) ( SetItem ( 4802 ) ( SetItem ( 4812 ) ( SetItem ( 483 ) ( SetItem ( 4830 ) ( SetItem ( 4846 ) ( SetItem ( 4875 ) ( SetItem ( 499 ) ( SetItem ( 507 ) ( SetItem ( 515 ) ( SetItem ( 523 ) ( SetItem ( 536 ) ( SetItem ( 628 ) ( SetItem ( 675 ) ( SetItem ( 693 ) ( SetItem ( 696 ) ( SetItem ( 710 ) ( SetItem ( 738 ) ( SetItem ( 817 ) ( SetItem ( 837 ) ( SetItem ( 936 ) ( SetItem ( 976 ) SetItem ( 997 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"\t\x84\x0b\xb5" - - - 0 - - - ( 0 : ( 313 : ( 159648693 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003" - - - 720 - - - #gas ( ( ( VGAS:Int +Int -32294 ) /Int 64 ) ) - - - 8 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32294 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01,W`\x005`\xe0\x1c\x80c\x87\xa8\xa8\x1b\x11a\x00\xadW\x80c\xbaAO\xa6\x11a\x00qW\x80c\xbaAO\xa6\x14a\x01\xdbW\x80c\xe2\f\x9fq\x14a\x01\xf3W\x80c\xe2\x92\xf8\xb5\x14a\x01\xfbW\x80c\xe9,\xa5\xbb\x14a\x02\x03W\x80c\xfav&\xd4\x14a\x02\x0bW`\x00\x80\xfd[\x80c\x87\xa8\xa8\x1b\x14a\x01\xb3W\x80c\x89\xa9\x9at\x14a\x01\xbbW\x80c\x91j\x17\xc6\x14a\x01\xc3W\x80c\x9bqn\x86\x14a\x01\xcbW\x80c\xb5P\x8a\xa9\x14a\x01\xd3W`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xf4W\x80c?r\x86\xf4\x14a\x01qW\x80cH\x08\x80s\x14a\x01yW\x80c\\-0.\x14a\x01\x81W\x80cf\xd9\xa9\xa0\x14a\x01\x89W\x80c\x85\"l\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x05\xf6\xff7\x14a\x011W\x80c\t\x84\x0b\xb5\x14a\x01;W\x80c\x1e\xd7\x83\x1c\x14a\x01CW\x80c$\x00z&\x14a\x01aW\x80c>^<#\x14a\x01iW[`\x00\x80\xfd[a\x019a\x02\x18V[\x00[a\x019a\x02\xb8V[a\x01Ka\x03\xfbV[`@Qa\x01X\x91\x90a\x0f6V[`@Q\x80\x91\x03\x90\xf3[a\x019a\x04]V[a\x01Ka\x04\xf5V[a\x01Ka\x05UV[a\x019a\x05\xb5V[a\x019a\x06\xf0V[a\x01\x91a\x07|V[`@Qa\x01X\x91\x90a\x0f\x83V[a\x01\xa6a\x08kV[`@Qa\x01X\x91\x90a\x10fV[a\x019a\t;V[a\x019a\t\xc9V[a\x01\x91a\n\x0bV[a\x019a\n\xf1V[a\x01\xa6a\x0byV[a\x01\xe3a\fIV[`@Q\x90\x15\x15\x81R` \x01a\x01XV[a\x01Ka\rvV[a\x019a\r\xd6V[a\x019a\x0e\x06V[`\x07Ta\x01\xe3\x90`\xff\x16\x81V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91Pa\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16cp\xca\x10\xbb`\xe0\x1b\x17\x90Ra\x0f\x08V[\x90P\x80`}\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[PV[`\x00`@Qa\x02\xc6\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xe2W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a\x13X\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c&l\xf1\t`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x031W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03EW=`\x00\x80>=`\x00\xfd[PP`@Qce\xbc\x94\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00\x92P\x82\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90ce\xbc\x94\x81\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x03\xa8W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x03\xd0\x91\x90\x81\x01\x90a\x11\xc8V[\x91P\x91P\x81Q`\x01\x14a\x03\xe5Wa\x03\xe5a\x11\x01V[\x80Q`\x01\x14a\x03\xf6Wa\x03\xf6a\x11\x01V[PPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045W[PPPPP\x90P\x90V[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`e`\x04\x82\x01R`\x17`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\xb4W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xd8\x91\x90a\x12,V[P`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`\x00`@Qa\x05\xc3\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\xdfW=`\x00\x80>=`\x00\xfd[P`@Qcp\xca\x10\xbb`\xe0\x1b\x81R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x06!\x90\x84\x90`\x00\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06;W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06OW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00`$\x82\x01\x81\x90R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06\xb5W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xd9\x91\x90a\x12,V[\x90Pazi\x81\x14a\x06\xecWa\x06\xeca\x11\x01V[PPV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x07.\x90`e\x90`\x17\x90`\x05\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07HW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07\\W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\fW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xa0V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x08\xae\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xda\x90a\x12EV[\x80\x15a\t'W\x80`\x1f\x10a\x08\xfcWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t'V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\nW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\x8fV[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`d`\x04\x82\x01R`\x17`$\x82\x01R`\x00\x90sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\t\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xb9\x91\x90a\x12,V[\x90P\x80\x15a\x02\xb5Wa\x02\xb5a\x11\x01V[`@Q`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90a\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[\x90P\x80a\nA\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xd9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\x9bW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n/V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91P`d\x01[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x06g\xf9\xd7`\xe4\x1b\x17\x90Ra\x0f\x08V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0b\xbc\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0b\xe8\x90a\x12EV[\x80\x15a\f5W\x80`\x1f\x10a\f\nWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\f5V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\f\x18W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0b\x9dV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\fkWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\rqW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\f\xf9\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x12\x7fV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x13\x91a\x12\xb0V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\rPW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\rUV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\rm\x91\x90a\x12\xccV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90`d\x01a\x0bJV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x0eE\x90`\x00\x90`\x03\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e_W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0esW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x00`\x04\x82\x01\x81\x90R`\x03`$\x83\x01R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0e\xd1W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0e\xf5\x91\x90a\x12,V[\x90Pazi\x81\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[`\x00\x80\x82` \x01\x83QZ`\x00\x80\x83\x85`\x00\x8b\x86\xf1PZ\x90\x03\x96\x95PPPPPPV[`b\x80a\x12\xf6\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0fwW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0fRV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10'W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\x12W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0f\xe8V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0f\xabV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10QW\x81\x81\x01Q\x83\x82\x01R` \x01a\x109V[\x83\x81\x11\x15a\x10`W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x10\xd3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x10\xb4\x81\x89\x89\x01\x8a\x85\x01a\x106V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\x8dV[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00\x82`\x1f\x83\x01\x12a\x11>W`\x00\x80\xfd[\x81Q` g\xff\xff\xff\xff\xff\xff\xff\xff\x80\x83\x11\x15a\x11[Wa\x11[a\x11\x17V[\x82`\x05\x1b`@Q`\x1f\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x84\x82\x11\x17\x15a\x11\x80Wa\x11\x80a\x11\x17V[`@R\x93\x84R\x85\x81\x01\x83\x01\x93\x83\x81\x01\x92P\x87\x85\x11\x15a\x11\x9eW`\x00\x80\xfd[\x83\x87\x01\x91P[\x84\x82\x10\x15a\x11\xbdW\x81Q\x83R\x91\x83\x01\x91\x90\x83\x01\x90a\x11\xa4V[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x11\xdbW`\x00\x80\xfd[\x82Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x11\xf3W`\x00\x80\xfd[a\x11\xff\x86\x83\x87\x01a\x11-V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a\x12\x15W`\x00\x80\xfd[Pa\x12\"\x85\x82\x86\x01a\x11-V[\x91PP\x92P\x92\x90PV[`\x00` \x82\x84\x03\x12\x15a\x12>W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x12YW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x12yWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x12\xa2\x81`\x04\x85\x01` \x87\x01a\x106V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x12\xc2\x81\x84` \x87\x01a\x106V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x12\xdeW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x12\xeeW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 \rS\xb9\xc7\n\xb4\xaeE\xda_\xc7\x01\x13}\xef1\xa5\xb8\x17\x94o\xae\xb6\x13\xc3\x9cF(\xb6\x97A\x04dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01,W`\x005`\xe0\x1c\x80c\x87\xa8\xa8\x1b\x11a\x00\xadW\x80c\xbaAO\xa6\x11a\x00qW\x80c\xbaAO\xa6\x14a\x01\xdbW\x80c\xe2\f\x9fq\x14a\x01\xf3W\x80c\xe2\x92\xf8\xb5\x14a\x01\xfbW\x80c\xe9,\xa5\xbb\x14a\x02\x03W\x80c\xfav&\xd4\x14a\x02\x0bW`\x00\x80\xfd[\x80c\x87\xa8\xa8\x1b\x14a\x01\xb3W\x80c\x89\xa9\x9at\x14a\x01\xbbW\x80c\x91j\x17\xc6\x14a\x01\xc3W\x80c\x9bqn\x86\x14a\x01\xcbW\x80c\xb5P\x8a\xa9\x14a\x01\xd3W`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xf4W\x80c?r\x86\xf4\x14a\x01qW\x80cH\x08\x80s\x14a\x01yW\x80c\\-0.\x14a\x01\x81W\x80cf\xd9\xa9\xa0\x14a\x01\x89W\x80c\x85\"l\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x05\xf6\xff7\x14a\x011W\x80c\t\x84\x0b\xb5\x14a\x01;W\x80c\x1e\xd7\x83\x1c\x14a\x01CW\x80c$\x00z&\x14a\x01aW\x80c>^<#\x14a\x01iW[`\x00\x80\xfd[a\x019a\x02\x18V[\x00[a\x019a\x02\xb8V[a\x01Ka\x03\xfbV[`@Qa\x01X\x91\x90a\x0f6V[`@Q\x80\x91\x03\x90\xf3[a\x019a\x04]V[a\x01Ka\x04\xf5V[a\x01Ka\x05UV[a\x019a\x05\xb5V[a\x019a\x06\xf0V[a\x01\x91a\x07|V[`@Qa\x01X\x91\x90a\x0f\x83V[a\x01\xa6a\x08kV[`@Qa\x01X\x91\x90a\x10fV[a\x019a\t;V[a\x019a\t\xc9V[a\x01\x91a\n\x0bV[a\x019a\n\xf1V[a\x01\xa6a\x0byV[a\x01\xe3a\fIV[`@Q\x90\x15\x15\x81R` \x01a\x01XV[a\x01Ka\rvV[a\x019a\r\xd6V[a\x019a\x0e\x06V[`\x07Ta\x01\xe3\x90`\xff\x16\x81V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91Pa\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16cp\xca\x10\xbb`\xe0\x1b\x17\x90Ra\x0f\x08V[\x90P\x80`}\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[PV[`\x00`@Qa\x02\xc6\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xe2W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a\x13X\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c&l\xf1\t`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x031W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03EW=`\x00\x80>=`\x00\xfd[PP`@Qce\xbc\x94\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00\x92P\x82\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90ce\xbc\x94\x81\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x03\xa8W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x03\xd0\x91\x90\x81\x01\x90a\x11\xc8V[\x91P\x91P\x81Q`\x01\x14a\x03\xe5Wa\x03\xe5a\x11\x01V[\x80Q`\x01\x14a\x03\xf6Wa\x03\xf6a\x11\x01V[PPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045W[PPPPP\x90P\x90V[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`e`\x04\x82\x01R`\x17`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\xb4W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xd8\x91\x90a\x12,V[P`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`\x00`@Qa\x05\xc3\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\xdfW=`\x00\x80>=`\x00\xfd[P`@Qcp\xca\x10\xbb`\xe0\x1b\x81R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x06!\x90\x84\x90`\x00\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06;W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06OW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00`$\x82\x01\x81\x90R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06\xb5W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xd9\x91\x90a\x12,V[\x90Pazi\x81\x14a\x06\xecWa\x06\xeca\x11\x01V[PPV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x07.\x90`e\x90`\x17\x90`\x05\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07HW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07\\W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\fW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xa0V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x08\xae\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xda\x90a\x12EV[\x80\x15a\t'W\x80`\x1f\x10a\x08\xfcWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t'V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\nW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\x8fV[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`d`\x04\x82\x01R`\x17`$\x82\x01R`\x00\x90sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\t\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xb9\x91\x90a\x12,V[\x90P\x80\x15a\x02\xb5Wa\x02\xb5a\x11\x01V[`@Q`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90a\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[\x90P\x80a\nA\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xd9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\x9bW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n/V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91P`d\x01[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x06g\xf9\xd7`\xe4\x1b\x17\x90Ra\x0f\x08V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0b\xbc\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0b\xe8\x90a\x12EV[\x80\x15a\f5W\x80`\x1f\x10a\f\nWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\f5V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\f\x18W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0b\x9dV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\fkWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\rqW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\f\xf9\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x12\x7fV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x13\x91a\x12\xb0V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\rPW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\rUV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\rm\x91\x90a\x12\xccV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90`d\x01a\x0bJV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x0eE\x90`\x00\x90`\x03\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e_W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0esW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x00`\x04\x82\x01\x81\x90R`\x03`$\x83\x01R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0e\xd1W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0e\xf5\x91\x90a\x12,V[\x90Pazi\x81\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[`\x00\x80\x82` \x01\x83QZ`\x00\x80\x83\x85`\x00\x8b\x86\xf1PZ\x90\x03\x96\x95PPPPPPV[`b\x80a\x12\xf6\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0fwW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0fRV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10'W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\x12W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0f\xe8V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0f\xabV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10QW\x81\x81\x01Q\x83\x82\x01R` \x01a\x109V[\x83\x81\x11\x15a\x10`W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x10\xd3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x10\xb4\x81\x89\x89\x01\x8a\x85\x01a\x106V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\x8dV[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00\x82`\x1f\x83\x01\x12a\x11>W`\x00\x80\xfd[\x81Q` g\xff\xff\xff\xff\xff\xff\xff\xff\x80\x83\x11\x15a\x11[Wa\x11[a\x11\x17V[\x82`\x05\x1b`@Q`\x1f\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x84\x82\x11\x17\x15a\x11\x80Wa\x11\x80a\x11\x17V[`@R\x93\x84R\x85\x81\x01\x83\x01\x93\x83\x81\x01\x92P\x87\x85\x11\x15a\x11\x9eW`\x00\x80\xfd[\x83\x87\x01\x91P[\x84\x82\x10\x15a\x11\xbdW\x81Q\x83R\x91\x83\x01\x91\x90\x83\x01\x90a\x11\xa4V[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x11\xdbW`\x00\x80\xfd[\x82Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x11\xf3W`\x00\x80\xfd[a\x11\xff\x86\x83\x87\x01a\x11-V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a\x12\x15W`\x00\x80\xfd[Pa\x12\"\x85\x82\x86\x01a\x11-V[\x91PP\x92P\x92\x90PV[`\x00` \x82\x84\x03\x12\x15a\x12>W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x12YW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x12yWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x12\xa2\x81`\x04\x85\x01` \x87\x01a\x106V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x12\xc2\x81\x84` \x87\x01a\x106V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x12\xdeW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x12\xeeW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 \rS\xb9\xc7\n\xb4\xaeE\xda_\xc7\x01\x13}\xef1\xa5\xb8\x17\x94o\xae\xb6\x13\xc3\x9cF(\xb6\x97A\x04dsolcC\x00\x08\r\x003" => b"`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003" ) - - - ( ( SetItem ( 1014 ) ( SetItem ( 1019 ) ( SetItem ( 1077 ) ( SetItem ( 1107 ) ( SetItem ( 1117 ) ( SetItem ( 113 ) ( SetItem ( 1204 ) ( SetItem ( 1240 ) ( SetItem ( 1269 ) ( SetItem ( 1365 ) ( SetItem ( 1461 ) ( SetItem ( 1475 ) ( SetItem ( 1503 ) ( SetItem ( 1569 ) ( SetItem ( 1595 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1717 ) ( SetItem ( 173 ) ( SetItem ( 1753 ) ( SetItem ( 1772 ) ( SetItem ( 1776 ) ( SetItem ( 1838 ) ( SetItem ( 1864 ) ( SetItem ( 1884 ) ( SetItem ( 1916 ) ( SetItem ( 1952 ) ( SetItem ( 2060 ) ( SetItem ( 2122 ) ( SetItem ( 2146 ) ( SetItem ( 2155 ) ( SetItem ( 2191 ) ( SetItem ( 2222 ) ( SetItem ( 2266 ) ( SetItem ( 2300 ) ( SetItem ( 2314 ) ( SetItem ( 2343 ) ( SetItem ( 2363 ) ( SetItem ( 244 ) ( SetItem ( 2453 ) ( SetItem ( 2489 ) ( SetItem ( 2505 ) ( SetItem ( 2552 ) ( SetItem ( 2571 ) ( SetItem ( 2607 ) ( SetItem ( 2715 ) ( SetItem ( 2777 ) ( SetItem ( 2801 ) ( SetItem ( 2890 ) ( SetItem ( 2937 ) ( SetItem ( 2973 ) ( SetItem ( 300 ) ( SetItem ( 3004 ) ( SetItem ( 3048 ) ( SetItem ( 305 ) ( SetItem ( 3082 ) ( SetItem ( 3096 ) ( SetItem ( 3125 ) ( SetItem ( 313 ) ( SetItem ( 3145 ) ( SetItem ( 315 ) ( SetItem ( 3179 ) ( SetItem ( 323 ) ( SetItem ( 331 ) ( SetItem ( 3321 ) ( SetItem ( 3347 ) ( SetItem ( 3408 ) ( SetItem ( 3413 ) ( SetItem ( 3437 ) ( SetItem ( 344 ) ( SetItem ( 3441 ) ( SetItem ( 3446 ) ( SetItem ( 353 ) ( SetItem ( 3542 ) ( SetItem ( 3590 ) ( SetItem ( 361 ) ( SetItem ( 3653 ) ( SetItem ( 3679 ) ( SetItem ( 369 ) ( SetItem ( 3699 ) ( SetItem ( 377 ) ( SetItem ( 3793 ) ( SetItem ( 3829 ) ( SetItem ( 3848 ) ( SetItem ( 385 ) ( SetItem ( 3882 ) ( SetItem ( 3894 ) ( SetItem ( 3922 ) ( SetItem ( 393 ) ( SetItem ( 3959 ) ( SetItem ( 3971 ) ( SetItem ( 401 ) ( SetItem ( 4011 ) ( SetItem ( 4072 ) ( SetItem ( 4114 ) ( SetItem ( 4135 ) ( SetItem ( 414 ) ( SetItem ( 4150 ) ( SetItem ( 4153 ) ( SetItem ( 4177 ) ( SetItem ( 4192 ) ( SetItem ( 4198 ) ( SetItem ( 422 ) ( SetItem ( 4237 ) ( SetItem ( 4276 ) ( SetItem ( 4307 ) ( SetItem ( 4320 ) ( SetItem ( 435 ) ( SetItem ( 4353 ) ( SetItem ( 4375 ) ( SetItem ( 4397 ) ( SetItem ( 4414 ) ( SetItem ( 443 ) ( SetItem ( 4443 ) ( SetItem ( 4480 ) ( SetItem ( 451 ) ( SetItem ( 4510 ) ( SetItem ( 4516 ) ( SetItem ( 4541 ) ( SetItem ( 4552 ) ( SetItem ( 4571 ) ( SetItem ( 459 ) ( SetItem ( 4595 ) ( SetItem ( 4607 ) ( SetItem ( 4629 ) ( SetItem ( 4642 ) ( SetItem ( 4652 ) ( SetItem ( 467 ) ( SetItem ( 4670 ) ( SetItem ( 4677 ) ( SetItem ( 4697 ) ( SetItem ( 4729 ) ( SetItem ( 4735 ) ( SetItem ( 475 ) ( SetItem ( 4770 ) ( SetItem ( 4784 ) ( SetItem ( 4802 ) ( SetItem ( 4812 ) ( SetItem ( 483 ) ( SetItem ( 4830 ) ( SetItem ( 4846 ) ( SetItem ( 4875 ) ( SetItem ( 499 ) ( SetItem ( 507 ) ( SetItem ( 515 ) ( SetItem ( 523 ) ( SetItem ( 536 ) ( SetItem ( 628 ) ( SetItem ( 675 ) ( SetItem ( 693 ) ( SetItem ( 696 ) ( SetItem ( 710 ) ( SetItem ( 738 ) ( SetItem ( 817 ) ( SetItem ( 837 ) ( SetItem ( 936 ) ( SetItem ( 976 ) SetItem ( 997 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 21 ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"\t\x84\x0b\xb5" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80" ) - - - ( 0 => 33 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32294 ) ) +Int -22172 ) ) ) - - - ( 0 => 3 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - ( .Map => ( 491460923342184218035706888008750043977755113263 |-> SetItem ( 0 ) ) ) - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - ( .Map => ( 0 |-> 1337 ) ) - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01,W`\x005`\xe0\x1c\x80c\x87\xa8\xa8\x1b\x11a\x00\xadW\x80c\xbaAO\xa6\x11a\x00qW\x80c\xbaAO\xa6\x14a\x01\xdbW\x80c\xe2\f\x9fq\x14a\x01\xf3W\x80c\xe2\x92\xf8\xb5\x14a\x01\xfbW\x80c\xe9,\xa5\xbb\x14a\x02\x03W\x80c\xfav&\xd4\x14a\x02\x0bW`\x00\x80\xfd[\x80c\x87\xa8\xa8\x1b\x14a\x01\xb3W\x80c\x89\xa9\x9at\x14a\x01\xbbW\x80c\x91j\x17\xc6\x14a\x01\xc3W\x80c\x9bqn\x86\x14a\x01\xcbW\x80c\xb5P\x8a\xa9\x14a\x01\xd3W`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xf4W\x80c?r\x86\xf4\x14a\x01qW\x80cH\x08\x80s\x14a\x01yW\x80c\\-0.\x14a\x01\x81W\x80cf\xd9\xa9\xa0\x14a\x01\x89W\x80c\x85\"l\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x05\xf6\xff7\x14a\x011W\x80c\t\x84\x0b\xb5\x14a\x01;W\x80c\x1e\xd7\x83\x1c\x14a\x01CW\x80c$\x00z&\x14a\x01aW\x80c>^<#\x14a\x01iW[`\x00\x80\xfd[a\x019a\x02\x18V[\x00[a\x019a\x02\xb8V[a\x01Ka\x03\xfbV[`@Qa\x01X\x91\x90a\x0f6V[`@Q\x80\x91\x03\x90\xf3[a\x019a\x04]V[a\x01Ka\x04\xf5V[a\x01Ka\x05UV[a\x019a\x05\xb5V[a\x019a\x06\xf0V[a\x01\x91a\x07|V[`@Qa\x01X\x91\x90a\x0f\x83V[a\x01\xa6a\x08kV[`@Qa\x01X\x91\x90a\x10fV[a\x019a\t;V[a\x019a\t\xc9V[a\x01\x91a\n\x0bV[a\x019a\n\xf1V[a\x01\xa6a\x0byV[a\x01\xe3a\fIV[`@Q\x90\x15\x15\x81R` \x01a\x01XV[a\x01Ka\rvV[a\x019a\r\xd6V[a\x019a\x0e\x06V[`\x07Ta\x01\xe3\x90`\xff\x16\x81V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91Pa\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16cp\xca\x10\xbb`\xe0\x1b\x17\x90Ra\x0f\x08V[\x90P\x80`}\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[PV[`\x00`@Qa\x02\xc6\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xe2W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a\x13X\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c&l\xf1\t`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x031W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03EW=`\x00\x80>=`\x00\xfd[PP`@Qce\xbc\x94\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00\x92P\x82\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90ce\xbc\x94\x81\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x03\xa8W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x03\xd0\x91\x90\x81\x01\x90a\x11\xc8V[\x91P\x91P\x81Q`\x01\x14a\x03\xe5Wa\x03\xe5a\x11\x01V[\x80Q`\x01\x14a\x03\xf6Wa\x03\xf6a\x11\x01V[PPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045W[PPPPP\x90P\x90V[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`e`\x04\x82\x01R`\x17`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\xb4W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xd8\x91\x90a\x12,V[P`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`\x00`@Qa\x05\xc3\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\xdfW=`\x00\x80>=`\x00\xfd[P`@Qcp\xca\x10\xbb`\xe0\x1b\x81R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x06!\x90\x84\x90`\x00\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06;W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06OW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00`$\x82\x01\x81\x90R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06\xb5W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xd9\x91\x90a\x12,V[\x90Pazi\x81\x14a\x06\xecWa\x06\xeca\x11\x01V[PPV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x07.\x90`e\x90`\x17\x90`\x05\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07HW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07\\W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\fW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xa0V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x08\xae\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xda\x90a\x12EV[\x80\x15a\t'W\x80`\x1f\x10a\x08\xfcWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t'V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\nW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\x8fV[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`d`\x04\x82\x01R`\x17`$\x82\x01R`\x00\x90sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\t\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xb9\x91\x90a\x12,V[\x90P\x80\x15a\x02\xb5Wa\x02\xb5a\x11\x01V[`@Q`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90a\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[\x90P\x80a\nA\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xd9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\x9bW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n/V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91P`d\x01[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x06g\xf9\xd7`\xe4\x1b\x17\x90Ra\x0f\x08V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0b\xbc\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0b\xe8\x90a\x12EV[\x80\x15a\f5W\x80`\x1f\x10a\f\nWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\f5V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\f\x18W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0b\x9dV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\fkWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\rqW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\f\xf9\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x12\x7fV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x13\x91a\x12\xb0V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\rPW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\rUV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\rm\x91\x90a\x12\xccV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90`d\x01a\x0bJV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x0eE\x90`\x00\x90`\x03\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e_W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0esW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x00`\x04\x82\x01\x81\x90R`\x03`$\x83\x01R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0e\xd1W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0e\xf5\x91\x90a\x12,V[\x90Pazi\x81\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[`\x00\x80\x82` \x01\x83QZ`\x00\x80\x83\x85`\x00\x8b\x86\xf1PZ\x90\x03\x96\x95PPPPPPV[`b\x80a\x12\xf6\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0fwW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0fRV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10'W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\x12W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0f\xe8V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0f\xabV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10QW\x81\x81\x01Q\x83\x82\x01R` \x01a\x109V[\x83\x81\x11\x15a\x10`W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x10\xd3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x10\xb4\x81\x89\x89\x01\x8a\x85\x01a\x106V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\x8dV[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00\x82`\x1f\x83\x01\x12a\x11>W`\x00\x80\xfd[\x81Q` g\xff\xff\xff\xff\xff\xff\xff\xff\x80\x83\x11\x15a\x11[Wa\x11[a\x11\x17V[\x82`\x05\x1b`@Q`\x1f\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x84\x82\x11\x17\x15a\x11\x80Wa\x11\x80a\x11\x17V[`@R\x93\x84R\x85\x81\x01\x83\x01\x93\x83\x81\x01\x92P\x87\x85\x11\x15a\x11\x9eW`\x00\x80\xfd[\x83\x87\x01\x91P[\x84\x82\x10\x15a\x11\xbdW\x81Q\x83R\x91\x83\x01\x91\x90\x83\x01\x90a\x11\xa4V[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x11\xdbW`\x00\x80\xfd[\x82Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x11\xf3W`\x00\x80\xfd[a\x11\xff\x86\x83\x87\x01a\x11-V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a\x12\x15W`\x00\x80\xfd[Pa\x12\"\x85\x82\x86\x01a\x11-V[\x91PP\x92P\x92\x90PV[`\x00` \x82\x84\x03\x12\x15a\x12>W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x12YW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x12yWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x12\xa2\x81`\x04\x85\x01` \x87\x01a\x106V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x12\xc2\x81\x84` \x87\x01a\x106V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x12\xdeW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x12\xeeW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 \rS\xb9\xc7\n\xb4\xaeE\xda_\xc7\x01\x13}\xef1\xa5\xb8\x17\x94o\xae\xb6\x13\xc3\x9cF(\xb6\x97A\x04dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01,W`\x005`\xe0\x1c\x80c\x87\xa8\xa8\x1b\x11a\x00\xadW\x80c\xbaAO\xa6\x11a\x00qW\x80c\xbaAO\xa6\x14a\x01\xdbW\x80c\xe2\f\x9fq\x14a\x01\xf3W\x80c\xe2\x92\xf8\xb5\x14a\x01\xfbW\x80c\xe9,\xa5\xbb\x14a\x02\x03W\x80c\xfav&\xd4\x14a\x02\x0bW`\x00\x80\xfd[\x80c\x87\xa8\xa8\x1b\x14a\x01\xb3W\x80c\x89\xa9\x9at\x14a\x01\xbbW\x80c\x91j\x17\xc6\x14a\x01\xc3W\x80c\x9bqn\x86\x14a\x01\xcbW\x80c\xb5P\x8a\xa9\x14a\x01\xd3W`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xf4W\x80c?r\x86\xf4\x14a\x01qW\x80cH\x08\x80s\x14a\x01yW\x80c\\-0.\x14a\x01\x81W\x80cf\xd9\xa9\xa0\x14a\x01\x89W\x80c\x85\"l\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x05\xf6\xff7\x14a\x011W\x80c\t\x84\x0b\xb5\x14a\x01;W\x80c\x1e\xd7\x83\x1c\x14a\x01CW\x80c$\x00z&\x14a\x01aW\x80c>^<#\x14a\x01iW[`\x00\x80\xfd[a\x019a\x02\x18V[\x00[a\x019a\x02\xb8V[a\x01Ka\x03\xfbV[`@Qa\x01X\x91\x90a\x0f6V[`@Q\x80\x91\x03\x90\xf3[a\x019a\x04]V[a\x01Ka\x04\xf5V[a\x01Ka\x05UV[a\x019a\x05\xb5V[a\x019a\x06\xf0V[a\x01\x91a\x07|V[`@Qa\x01X\x91\x90a\x0f\x83V[a\x01\xa6a\x08kV[`@Qa\x01X\x91\x90a\x10fV[a\x019a\t;V[a\x019a\t\xc9V[a\x01\x91a\n\x0bV[a\x019a\n\xf1V[a\x01\xa6a\x0byV[a\x01\xe3a\fIV[`@Q\x90\x15\x15\x81R` \x01a\x01XV[a\x01Ka\rvV[a\x019a\r\xd6V[a\x019a\x0e\x06V[`\x07Ta\x01\xe3\x90`\xff\x16\x81V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91Pa\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16cp\xca\x10\xbb`\xe0\x1b\x17\x90Ra\x0f\x08V[\x90P\x80`}\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[PV[`\x00`@Qa\x02\xc6\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xe2W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a\x13X\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c&l\xf1\t`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x031W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03EW=`\x00\x80>=`\x00\xfd[PP`@Qce\xbc\x94\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00\x92P\x82\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90ce\xbc\x94\x81\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x03\xa8W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x03\xd0\x91\x90\x81\x01\x90a\x11\xc8V[\x91P\x91P\x81Q`\x01\x14a\x03\xe5Wa\x03\xe5a\x11\x01V[\x80Q`\x01\x14a\x03\xf6Wa\x03\xf6a\x11\x01V[PPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045W[PPPPP\x90P\x90V[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`e`\x04\x82\x01R`\x17`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\xb4W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xd8\x91\x90a\x12,V[P`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`\x00`@Qa\x05\xc3\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\xdfW=`\x00\x80>=`\x00\xfd[P`@Qcp\xca\x10\xbb`\xe0\x1b\x81R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x06!\x90\x84\x90`\x00\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06;W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06OW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00`$\x82\x01\x81\x90R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06\xb5W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xd9\x91\x90a\x12,V[\x90Pazi\x81\x14a\x06\xecWa\x06\xeca\x11\x01V[PPV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x07.\x90`e\x90`\x17\x90`\x05\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07HW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07\\W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\fW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xa0V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x08\xae\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xda\x90a\x12EV[\x80\x15a\t'W\x80`\x1f\x10a\x08\xfcWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t'V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\nW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\x8fV[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`d`\x04\x82\x01R`\x17`$\x82\x01R`\x00\x90sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\t\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xb9\x91\x90a\x12,V[\x90P\x80\x15a\x02\xb5Wa\x02\xb5a\x11\x01V[`@Q`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90a\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[\x90P\x80a\nA\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xd9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\x9bW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n/V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91P`d\x01[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x06g\xf9\xd7`\xe4\x1b\x17\x90Ra\x0f\x08V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0b\xbc\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0b\xe8\x90a\x12EV[\x80\x15a\f5W\x80`\x1f\x10a\f\nWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\f5V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\f\x18W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0b\x9dV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\fkWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\rqW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\f\xf9\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x12\x7fV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x13\x91a\x12\xb0V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\rPW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\rUV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\rm\x91\x90a\x12\xccV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90`d\x01a\x0bJV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x0eE\x90`\x00\x90`\x03\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e_W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0esW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x00`\x04\x82\x01\x81\x90R`\x03`$\x83\x01R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0e\xd1W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0e\xf5\x91\x90a\x12,V[\x90Pazi\x81\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[`\x00\x80\x82` \x01\x83QZ`\x00\x80\x83\x85`\x00\x8b\x86\xf1PZ\x90\x03\x96\x95PPPPPPV[`b\x80a\x12\xf6\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0fwW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0fRV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10'W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\x12W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0f\xe8V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0f\xabV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10QW\x81\x81\x01Q\x83\x82\x01R` \x01a\x109V[\x83\x81\x11\x15a\x10`W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x10\xd3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x10\xb4\x81\x89\x89\x01\x8a\x85\x01a\x106V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\x8dV[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00\x82`\x1f\x83\x01\x12a\x11>W`\x00\x80\xfd[\x81Q` g\xff\xff\xff\xff\xff\xff\xff\xff\x80\x83\x11\x15a\x11[Wa\x11[a\x11\x17V[\x82`\x05\x1b`@Q`\x1f\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x84\x82\x11\x17\x15a\x11\x80Wa\x11\x80a\x11\x17V[`@R\x93\x84R\x85\x81\x01\x83\x01\x93\x83\x81\x01\x92P\x87\x85\x11\x15a\x11\x9eW`\x00\x80\xfd[\x83\x87\x01\x91P[\x84\x82\x10\x15a\x11\xbdW\x81Q\x83R\x91\x83\x01\x91\x90\x83\x01\x90a\x11\xa4V[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x11\xdbW`\x00\x80\xfd[\x82Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x11\xf3W`\x00\x80\xfd[a\x11\xff\x86\x83\x87\x01a\x11-V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a\x12\x15W`\x00\x80\xfd[Pa\x12\"\x85\x82\x86\x01a\x11-V[\x91PP\x92P\x92\x90PV[`\x00` \x82\x84\x03\x12\x15a\x12>W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x12YW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x12yWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x12\xa2\x81`\x04\x85\x01` \x87\x01a\x106V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x12\xc2\x81\x84` \x87\x01a\x106V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x12\xdeW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x12\xeeW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 \rS\xb9\xc7\n\xb4\xaeE\xda_\xc7\x01\x13}\xef1\xa5\xb8\x17\x94o\xae\xb6\x13\xc3\x9cF(\xb6\x97A\x04dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int - - ( .K => #end EVMC_SUCCESS - ~> #pc [ RETURN ] - ~> #execute - ~> #codeDeposit 491460923342184218035706888008750043977755113263 - ~> #pc [ CREATE ] ) - ~> #execute - ~> _CONTINUATION - - - NORMAL - - - SHANGHAI - - - true - - - - - ( _OUTPUT_CELL => b"`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003" ) - - - ( .List => ListItem ( - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01,W`\x005`\xe0\x1c\x80c\x87\xa8\xa8\x1b\x11a\x00\xadW\x80c\xbaAO\xa6\x11a\x00qW\x80c\xbaAO\xa6\x14a\x01\xdbW\x80c\xe2\f\x9fq\x14a\x01\xf3W\x80c\xe2\x92\xf8\xb5\x14a\x01\xfbW\x80c\xe9,\xa5\xbb\x14a\x02\x03W\x80c\xfav&\xd4\x14a\x02\x0bW`\x00\x80\xfd[\x80c\x87\xa8\xa8\x1b\x14a\x01\xb3W\x80c\x89\xa9\x9at\x14a\x01\xbbW\x80c\x91j\x17\xc6\x14a\x01\xc3W\x80c\x9bqn\x86\x14a\x01\xcbW\x80c\xb5P\x8a\xa9\x14a\x01\xd3W`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xf4W\x80c?r\x86\xf4\x14a\x01qW\x80cH\x08\x80s\x14a\x01yW\x80c\\-0.\x14a\x01\x81W\x80cf\xd9\xa9\xa0\x14a\x01\x89W\x80c\x85\"l\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x05\xf6\xff7\x14a\x011W\x80c\t\x84\x0b\xb5\x14a\x01;W\x80c\x1e\xd7\x83\x1c\x14a\x01CW\x80c$\x00z&\x14a\x01aW\x80c>^<#\x14a\x01iW[`\x00\x80\xfd[a\x019a\x02\x18V[\x00[a\x019a\x02\xb8V[a\x01Ka\x03\xfbV[`@Qa\x01X\x91\x90a\x0f6V[`@Q\x80\x91\x03\x90\xf3[a\x019a\x04]V[a\x01Ka\x04\xf5V[a\x01Ka\x05UV[a\x019a\x05\xb5V[a\x019a\x06\xf0V[a\x01\x91a\x07|V[`@Qa\x01X\x91\x90a\x0f\x83V[a\x01\xa6a\x08kV[`@Qa\x01X\x91\x90a\x10fV[a\x019a\t;V[a\x019a\t\xc9V[a\x01\x91a\n\x0bV[a\x019a\n\xf1V[a\x01\xa6a\x0byV[a\x01\xe3a\fIV[`@Q\x90\x15\x15\x81R` \x01a\x01XV[a\x01Ka\rvV[a\x019a\r\xd6V[a\x019a\x0e\x06V[`\x07Ta\x01\xe3\x90`\xff\x16\x81V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91Pa\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16cp\xca\x10\xbb`\xe0\x1b\x17\x90Ra\x0f\x08V[\x90P\x80`}\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[PV[`\x00`@Qa\x02\xc6\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xe2W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a\x13X\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c&l\xf1\t`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x031W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03EW=`\x00\x80>=`\x00\xfd[PP`@Qce\xbc\x94\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00\x92P\x82\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90ce\xbc\x94\x81\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x03\xa8W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x03\xd0\x91\x90\x81\x01\x90a\x11\xc8V[\x91P\x91P\x81Q`\x01\x14a\x03\xe5Wa\x03\xe5a\x11\x01V[\x80Q`\x01\x14a\x03\xf6Wa\x03\xf6a\x11\x01V[PPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045W[PPPPP\x90P\x90V[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`e`\x04\x82\x01R`\x17`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\xb4W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xd8\x91\x90a\x12,V[P`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`\x00`@Qa\x05\xc3\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\xdfW=`\x00\x80>=`\x00\xfd[P`@Qcp\xca\x10\xbb`\xe0\x1b\x81R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x06!\x90\x84\x90`\x00\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06;W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06OW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00`$\x82\x01\x81\x90R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06\xb5W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xd9\x91\x90a\x12,V[\x90Pazi\x81\x14a\x06\xecWa\x06\xeca\x11\x01V[PPV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x07.\x90`e\x90`\x17\x90`\x05\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07HW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07\\W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\fW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xa0V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x08\xae\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xda\x90a\x12EV[\x80\x15a\t'W\x80`\x1f\x10a\x08\xfcWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t'V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\nW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\x8fV[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`d`\x04\x82\x01R`\x17`$\x82\x01R`\x00\x90sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\t\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xb9\x91\x90a\x12,V[\x90P\x80\x15a\x02\xb5Wa\x02\xb5a\x11\x01V[`@Q`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90a\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[\x90P\x80a\nA\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xd9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\x9bW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n/V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91P`d\x01[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x06g\xf9\xd7`\xe4\x1b\x17\x90Ra\x0f\x08V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0b\xbc\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0b\xe8\x90a\x12EV[\x80\x15a\f5W\x80`\x1f\x10a\f\nWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\f5V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\f\x18W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0b\x9dV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\fkWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\rqW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\f\xf9\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x12\x7fV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x13\x91a\x12\xb0V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\rPW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\rUV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\rm\x91\x90a\x12\xccV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90`d\x01a\x0bJV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x0eE\x90`\x00\x90`\x03\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e_W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0esW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x00`\x04\x82\x01\x81\x90R`\x03`$\x83\x01R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0e\xd1W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0e\xf5\x91\x90a\x12,V[\x90Pazi\x81\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[`\x00\x80\x82` \x01\x83QZ`\x00\x80\x83\x85`\x00\x8b\x86\xf1PZ\x90\x03\x96\x95PPPPPPV[`b\x80a\x12\xf6\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0fwW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0fRV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10'W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\x12W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0f\xe8V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0f\xabV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10QW\x81\x81\x01Q\x83\x82\x01R` \x01a\x109V[\x83\x81\x11\x15a\x10`W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x10\xd3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x10\xb4\x81\x89\x89\x01\x8a\x85\x01a\x106V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\x8dV[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00\x82`\x1f\x83\x01\x12a\x11>W`\x00\x80\xfd[\x81Q` g\xff\xff\xff\xff\xff\xff\xff\xff\x80\x83\x11\x15a\x11[Wa\x11[a\x11\x17V[\x82`\x05\x1b`@Q`\x1f\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x84\x82\x11\x17\x15a\x11\x80Wa\x11\x80a\x11\x17V[`@R\x93\x84R\x85\x81\x01\x83\x01\x93\x83\x81\x01\x92P\x87\x85\x11\x15a\x11\x9eW`\x00\x80\xfd[\x83\x87\x01\x91P[\x84\x82\x10\x15a\x11\xbdW\x81Q\x83R\x91\x83\x01\x91\x90\x83\x01\x90a\x11\xa4V[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x11\xdbW`\x00\x80\xfd[\x82Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x11\xf3W`\x00\x80\xfd[a\x11\xff\x86\x83\x87\x01a\x11-V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a\x12\x15W`\x00\x80\xfd[Pa\x12\"\x85\x82\x86\x01a\x11-V[\x91PP\x92P\x92\x90PV[`\x00` \x82\x84\x03\x12\x15a\x12>W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x12YW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x12yWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x12\xa2\x81`\x04\x85\x01` \x87\x01a\x106V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x12\xc2\x81\x84` \x87\x01a\x106V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x12\xdeW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x12\xeeW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 \rS\xb9\xc7\n\xb4\xaeE\xda_\xc7\x01\x13}\xef1\xa5\xb8\x17\x94o\xae\xb6\x13\xc3\x9cF(\xb6\x97A\x04dsolcC\x00\x08\r\x003" - - - ( SetItem ( 1014 ) ( SetItem ( 1019 ) ( SetItem ( 1077 ) ( SetItem ( 1107 ) ( SetItem ( 1117 ) ( SetItem ( 113 ) ( SetItem ( 1204 ) ( SetItem ( 1240 ) ( SetItem ( 1269 ) ( SetItem ( 1365 ) ( SetItem ( 1461 ) ( SetItem ( 1475 ) ( SetItem ( 1503 ) ( SetItem ( 1569 ) ( SetItem ( 1595 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1717 ) ( SetItem ( 173 ) ( SetItem ( 1753 ) ( SetItem ( 1772 ) ( SetItem ( 1776 ) ( SetItem ( 1838 ) ( SetItem ( 1864 ) ( SetItem ( 1884 ) ( SetItem ( 1916 ) ( SetItem ( 1952 ) ( SetItem ( 2060 ) ( SetItem ( 2122 ) ( SetItem ( 2146 ) ( SetItem ( 2155 ) ( SetItem ( 2191 ) ( SetItem ( 2222 ) ( SetItem ( 2266 ) ( SetItem ( 2300 ) ( SetItem ( 2314 ) ( SetItem ( 2343 ) ( SetItem ( 2363 ) ( SetItem ( 244 ) ( SetItem ( 2453 ) ( SetItem ( 2489 ) ( SetItem ( 2505 ) ( SetItem ( 2552 ) ( SetItem ( 2571 ) ( SetItem ( 2607 ) ( SetItem ( 2715 ) ( SetItem ( 2777 ) ( SetItem ( 2801 ) ( SetItem ( 2890 ) ( SetItem ( 2937 ) ( SetItem ( 2973 ) ( SetItem ( 300 ) ( SetItem ( 3004 ) ( SetItem ( 3048 ) ( SetItem ( 305 ) ( SetItem ( 3082 ) ( SetItem ( 3096 ) ( SetItem ( 3125 ) ( SetItem ( 313 ) ( SetItem ( 3145 ) ( SetItem ( 315 ) ( SetItem ( 3179 ) ( SetItem ( 323 ) ( SetItem ( 331 ) ( SetItem ( 3321 ) ( SetItem ( 3347 ) ( SetItem ( 3408 ) ( SetItem ( 3413 ) ( SetItem ( 3437 ) ( SetItem ( 344 ) ( SetItem ( 3441 ) ( SetItem ( 3446 ) ( SetItem ( 353 ) ( SetItem ( 3542 ) ( SetItem ( 3590 ) ( SetItem ( 361 ) ( SetItem ( 3653 ) ( SetItem ( 3679 ) ( SetItem ( 369 ) ( SetItem ( 3699 ) ( SetItem ( 377 ) ( SetItem ( 3793 ) ( SetItem ( 3829 ) ( SetItem ( 3848 ) ( SetItem ( 385 ) ( SetItem ( 3882 ) ( SetItem ( 3894 ) ( SetItem ( 3922 ) ( SetItem ( 393 ) ( SetItem ( 3959 ) ( SetItem ( 3971 ) ( SetItem ( 401 ) ( SetItem ( 4011 ) ( SetItem ( 4072 ) ( SetItem ( 4114 ) ( SetItem ( 4135 ) ( SetItem ( 414 ) ( SetItem ( 4150 ) ( SetItem ( 4153 ) ( SetItem ( 4177 ) ( SetItem ( 4192 ) ( SetItem ( 4198 ) ( SetItem ( 422 ) ( SetItem ( 4237 ) ( SetItem ( 4276 ) ( SetItem ( 4307 ) ( SetItem ( 4320 ) ( SetItem ( 435 ) ( SetItem ( 4353 ) ( SetItem ( 4375 ) ( SetItem ( 4397 ) ( SetItem ( 4414 ) ( SetItem ( 443 ) ( SetItem ( 4443 ) ( SetItem ( 4480 ) ( SetItem ( 451 ) ( SetItem ( 4510 ) ( SetItem ( 4516 ) ( SetItem ( 4541 ) ( SetItem ( 4552 ) ( SetItem ( 4571 ) ( SetItem ( 459 ) ( SetItem ( 4595 ) ( SetItem ( 4607 ) ( SetItem ( 4629 ) ( SetItem ( 4642 ) ( SetItem ( 4652 ) ( SetItem ( 467 ) ( SetItem ( 4670 ) ( SetItem ( 4677 ) ( SetItem ( 4697 ) ( SetItem ( 4729 ) ( SetItem ( 4735 ) ( SetItem ( 475 ) ( SetItem ( 4770 ) ( SetItem ( 4784 ) ( SetItem ( 4802 ) ( SetItem ( 4812 ) ( SetItem ( 483 ) ( SetItem ( 4830 ) ( SetItem ( 4846 ) ( SetItem ( 4875 ) ( SetItem ( 499 ) ( SetItem ( 507 ) ( SetItem ( 515 ) ( SetItem ( 523 ) ( SetItem ( 536 ) ( SetItem ( 628 ) ( SetItem ( 675 ) ( SetItem ( 693 ) ( SetItem ( 696 ) ( SetItem ( 710 ) ( SetItem ( 738 ) ( SetItem ( 817 ) ( SetItem ( 837 ) ( SetItem ( 936 ) ( SetItem ( 976 ) SetItem ( 997 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) - - - 728815563385977040452943777879061427756277306518 - - - CALLER_ID:Int - - - b"H\x08\x80s" - - - 0 - - - ( 0 : ( 313 : ( 1208516723 : .WordStack ) ) ) - - - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003" - - - 1485 - - - #gas ( ( ( VGAS:Int +Int -32293 ) /Int 64 ) ) - - - 8 - - - #gas ( #allBut64th ( ( VGAS:Int +Int -32293 ) ) ) - - - false - - - 0 - - ) ) - - - ( .List => ListItem ( { - ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01,W`\x005`\xe0\x1c\x80c\x87\xa8\xa8\x1b\x11a\x00\xadW\x80c\xbaAO\xa6\x11a\x00qW\x80c\xbaAO\xa6\x14a\x01\xdbW\x80c\xe2\f\x9fq\x14a\x01\xf3W\x80c\xe2\x92\xf8\xb5\x14a\x01\xfbW\x80c\xe9,\xa5\xbb\x14a\x02\x03W\x80c\xfav&\xd4\x14a\x02\x0bW`\x00\x80\xfd[\x80c\x87\xa8\xa8\x1b\x14a\x01\xb3W\x80c\x89\xa9\x9at\x14a\x01\xbbW\x80c\x91j\x17\xc6\x14a\x01\xc3W\x80c\x9bqn\x86\x14a\x01\xcbW\x80c\xb5P\x8a\xa9\x14a\x01\xd3W`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xf4W\x80c?r\x86\xf4\x14a\x01qW\x80cH\x08\x80s\x14a\x01yW\x80c\\-0.\x14a\x01\x81W\x80cf\xd9\xa9\xa0\x14a\x01\x89W\x80c\x85\"l\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x05\xf6\xff7\x14a\x011W\x80c\t\x84\x0b\xb5\x14a\x01;W\x80c\x1e\xd7\x83\x1c\x14a\x01CW\x80c$\x00z&\x14a\x01aW\x80c>^<#\x14a\x01iW[`\x00\x80\xfd[a\x019a\x02\x18V[\x00[a\x019a\x02\xb8V[a\x01Ka\x03\xfbV[`@Qa\x01X\x91\x90a\x0f6V[`@Q\x80\x91\x03\x90\xf3[a\x019a\x04]V[a\x01Ka\x04\xf5V[a\x01Ka\x05UV[a\x019a\x05\xb5V[a\x019a\x06\xf0V[a\x01\x91a\x07|V[`@Qa\x01X\x91\x90a\x0f\x83V[a\x01\xa6a\x08kV[`@Qa\x01X\x91\x90a\x10fV[a\x019a\t;V[a\x019a\t\xc9V[a\x01\x91a\n\x0bV[a\x019a\n\xf1V[a\x01\xa6a\x0byV[a\x01\xe3a\fIV[`@Q\x90\x15\x15\x81R` \x01a\x01XV[a\x01Ka\rvV[a\x019a\r\xd6V[a\x019a\x0e\x06V[`\x07Ta\x01\xe3\x90`\xff\x16\x81V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91Pa\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16cp\xca\x10\xbb`\xe0\x1b\x17\x90Ra\x0f\x08V[\x90P\x80`}\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[PV[`\x00`@Qa\x02\xc6\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xe2W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a\x13X\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c&l\xf1\t`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x031W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03EW=`\x00\x80>=`\x00\xfd[PP`@Qce\xbc\x94\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00\x92P\x82\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90ce\xbc\x94\x81\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x03\xa8W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x03\xd0\x91\x90\x81\x01\x90a\x11\xc8V[\x91P\x91P\x81Q`\x01\x14a\x03\xe5Wa\x03\xe5a\x11\x01V[\x80Q`\x01\x14a\x03\xf6Wa\x03\xf6a\x11\x01V[PPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045W[PPPPP\x90P\x90V[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`e`\x04\x82\x01R`\x17`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\xb4W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xd8\x91\x90a\x12,V[P`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`\x00`@Qa\x05\xc3\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\xdfW=`\x00\x80>=`\x00\xfd[P`@Qcp\xca\x10\xbb`\xe0\x1b\x81R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x06!\x90\x84\x90`\x00\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06;W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06OW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00`$\x82\x01\x81\x90R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06\xb5W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xd9\x91\x90a\x12,V[\x90Pazi\x81\x14a\x06\xecWa\x06\xeca\x11\x01V[PPV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x07.\x90`e\x90`\x17\x90`\x05\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07HW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07\\W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\fW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xa0V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x08\xae\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xda\x90a\x12EV[\x80\x15a\t'W\x80`\x1f\x10a\x08\xfcWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t'V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\nW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\x8fV[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`d`\x04\x82\x01R`\x17`$\x82\x01R`\x00\x90sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\t\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xb9\x91\x90a\x12,V[\x90P\x80\x15a\x02\xb5Wa\x02\xb5a\x11\x01V[`@Q`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90a\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[\x90P\x80a\nA\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xd9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\x9bW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n/V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91P`d\x01[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x06g\xf9\xd7`\xe4\x1b\x17\x90Ra\x0f\x08V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0b\xbc\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0b\xe8\x90a\x12EV[\x80\x15a\f5W\x80`\x1f\x10a\f\nWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\f5V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\f\x18W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0b\x9dV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\fkWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\rqW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\f\xf9\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x12\x7fV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x13\x91a\x12\xb0V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\rPW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\rUV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\rm\x91\x90a\x12\xccV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90`d\x01a\x0bJV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x0eE\x90`\x00\x90`\x03\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e_W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0esW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x00`\x04\x82\x01\x81\x90R`\x03`$\x83\x01R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0e\xd1W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0e\xf5\x91\x90a\x12,V[\x90Pazi\x81\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[`\x00\x80\x82` \x01\x83QZ`\x00\x80\x83\x85`\x00\x8b\x86\xf1PZ\x90\x03\x96\x95PPPPPPV[`b\x80a\x12\xf6\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0fwW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0fRV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10'W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\x12W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0f\xe8V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0f\xabV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10QW\x81\x81\x01Q\x83\x82\x01R` \x01a\x109V[\x83\x81\x11\x15a\x10`W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x10\xd3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x10\xb4\x81\x89\x89\x01\x8a\x85\x01a\x106V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\x8dV[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00\x82`\x1f\x83\x01\x12a\x11>W`\x00\x80\xfd[\x81Q` g\xff\xff\xff\xff\xff\xff\xff\xff\x80\x83\x11\x15a\x11[Wa\x11[a\x11\x17V[\x82`\x05\x1b`@Q`\x1f\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x84\x82\x11\x17\x15a\x11\x80Wa\x11\x80a\x11\x17V[`@R\x93\x84R\x85\x81\x01\x83\x01\x93\x83\x81\x01\x92P\x87\x85\x11\x15a\x11\x9eW`\x00\x80\xfd[\x83\x87\x01\x91P[\x84\x82\x10\x15a\x11\xbdW\x81Q\x83R\x91\x83\x01\x91\x90\x83\x01\x90a\x11\xa4V[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x11\xdbW`\x00\x80\xfd[\x82Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x11\xf3W`\x00\x80\xfd[a\x11\xff\x86\x83\x87\x01a\x11-V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a\x12\x15W`\x00\x80\xfd[Pa\x12\"\x85\x82\x86\x01a\x11-V[\x91PP\x92P\x92\x90PV[`\x00` \x82\x84\x03\x12\x15a\x12>W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x12YW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x12yWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x12\xa2\x81`\x04\x85\x01` \x87\x01a\x106V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x12\xc2\x81\x84` \x87\x01a\x106V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x12\xdeW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x12\xeeW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 \rS\xb9\xc7\n\xb4\xaeE\xda_\xc7\x01\x13}\xef1\xa5\xb8\x17\x94o\xae\xb6\x13\xc3\x9cF(\xb6\x97A\x04dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) - | - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - SetItem ( 491460923342184218035706888008750043977755113263 ) - - - .Map - - } ) ) - - - ( TOUCHEDACCOUNTS_CELL:Set => TOUCHEDACCOUNTS_CELL:Set |Set SetItem ( 728815563385977040452943777879061427756277306518 ) |Set SetItem ( 491460923342184218035706888008750043977755113263 ) ) - - - - ( b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01,W`\x005`\xe0\x1c\x80c\x87\xa8\xa8\x1b\x11a\x00\xadW\x80c\xbaAO\xa6\x11a\x00qW\x80c\xbaAO\xa6\x14a\x01\xdbW\x80c\xe2\f\x9fq\x14a\x01\xf3W\x80c\xe2\x92\xf8\xb5\x14a\x01\xfbW\x80c\xe9,\xa5\xbb\x14a\x02\x03W\x80c\xfav&\xd4\x14a\x02\x0bW`\x00\x80\xfd[\x80c\x87\xa8\xa8\x1b\x14a\x01\xb3W\x80c\x89\xa9\x9at\x14a\x01\xbbW\x80c\x91j\x17\xc6\x14a\x01\xc3W\x80c\x9bqn\x86\x14a\x01\xcbW\x80c\xb5P\x8a\xa9\x14a\x01\xd3W`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xf4W\x80c?r\x86\xf4\x14a\x01qW\x80cH\x08\x80s\x14a\x01yW\x80c\\-0.\x14a\x01\x81W\x80cf\xd9\xa9\xa0\x14a\x01\x89W\x80c\x85\"l\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x05\xf6\xff7\x14a\x011W\x80c\t\x84\x0b\xb5\x14a\x01;W\x80c\x1e\xd7\x83\x1c\x14a\x01CW\x80c$\x00z&\x14a\x01aW\x80c>^<#\x14a\x01iW[`\x00\x80\xfd[a\x019a\x02\x18V[\x00[a\x019a\x02\xb8V[a\x01Ka\x03\xfbV[`@Qa\x01X\x91\x90a\x0f6V[`@Q\x80\x91\x03\x90\xf3[a\x019a\x04]V[a\x01Ka\x04\xf5V[a\x01Ka\x05UV[a\x019a\x05\xb5V[a\x019a\x06\xf0V[a\x01\x91a\x07|V[`@Qa\x01X\x91\x90a\x0f\x83V[a\x01\xa6a\x08kV[`@Qa\x01X\x91\x90a\x10fV[a\x019a\t;V[a\x019a\t\xc9V[a\x01\x91a\n\x0bV[a\x019a\n\xf1V[a\x01\xa6a\x0byV[a\x01\xe3a\fIV[`@Q\x90\x15\x15\x81R` \x01a\x01XV[a\x01Ka\rvV[a\x019a\r\xd6V[a\x019a\x0e\x06V[`\x07Ta\x01\xe3\x90`\xff\x16\x81V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91Pa\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16cp\xca\x10\xbb`\xe0\x1b\x17\x90Ra\x0f\x08V[\x90P\x80`}\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[PV[`\x00`@Qa\x02\xc6\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xe2W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a\x13X\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c&l\xf1\t`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x031W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03EW=`\x00\x80>=`\x00\xfd[PP`@Qce\xbc\x94\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00\x92P\x82\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90ce\xbc\x94\x81\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x03\xa8W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x03\xd0\x91\x90\x81\x01\x90a\x11\xc8V[\x91P\x91P\x81Q`\x01\x14a\x03\xe5Wa\x03\xe5a\x11\x01V[\x80Q`\x01\x14a\x03\xf6Wa\x03\xf6a\x11\x01V[PPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045W[PPPPP\x90P\x90V[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`e`\x04\x82\x01R`\x17`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\xb4W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xd8\x91\x90a\x12,V[P`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`\x00`@Qa\x05\xc3\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\xdfW=`\x00\x80>=`\x00\xfd[P`@Qcp\xca\x10\xbb`\xe0\x1b\x81R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x06!\x90\x84\x90`\x00\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06;W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06OW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00`$\x82\x01\x81\x90R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06\xb5W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xd9\x91\x90a\x12,V[\x90Pazi\x81\x14a\x06\xecWa\x06\xeca\x11\x01V[PPV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x07.\x90`e\x90`\x17\x90`\x05\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07HW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07\\W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\fW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xa0V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x08\xae\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xda\x90a\x12EV[\x80\x15a\t'W\x80`\x1f\x10a\x08\xfcWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t'V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\nW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\x8fV[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`d`\x04\x82\x01R`\x17`$\x82\x01R`\x00\x90sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\t\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xb9\x91\x90a\x12,V[\x90P\x80\x15a\x02\xb5Wa\x02\xb5a\x11\x01V[`@Q`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90a\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[\x90P\x80a\nA\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xd9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\x9bW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n/V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91P`d\x01[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x06g\xf9\xd7`\xe4\x1b\x17\x90Ra\x0f\x08V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0b\xbc\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0b\xe8\x90a\x12EV[\x80\x15a\f5W\x80`\x1f\x10a\f\nWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\f5V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\f\x18W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0b\x9dV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\fkWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\rqW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\f\xf9\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x12\x7fV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x13\x91a\x12\xb0V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\rPW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\rUV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\rm\x91\x90a\x12\xccV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90`d\x01a\x0bJV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x0eE\x90`\x00\x90`\x03\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e_W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0esW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x00`\x04\x82\x01\x81\x90R`\x03`$\x83\x01R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0e\xd1W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0e\xf5\x91\x90a\x12,V[\x90Pazi\x81\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[`\x00\x80\x82` \x01\x83QZ`\x00\x80\x83\x85`\x00\x8b\x86\xf1PZ\x90\x03\x96\x95PPPPPPV[`b\x80a\x12\xf6\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0fwW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0fRV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10'W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\x12W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0f\xe8V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0f\xabV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10QW\x81\x81\x01Q\x83\x82\x01R` \x01a\x109V[\x83\x81\x11\x15a\x10`W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x10\xd3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x10\xb4\x81\x89\x89\x01\x8a\x85\x01a\x106V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\x8dV[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00\x82`\x1f\x83\x01\x12a\x11>W`\x00\x80\xfd[\x81Q` g\xff\xff\xff\xff\xff\xff\xff\xff\x80\x83\x11\x15a\x11[Wa\x11[a\x11\x17V[\x82`\x05\x1b`@Q`\x1f\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x84\x82\x11\x17\x15a\x11\x80Wa\x11\x80a\x11\x17V[`@R\x93\x84R\x85\x81\x01\x83\x01\x93\x83\x81\x01\x92P\x87\x85\x11\x15a\x11\x9eW`\x00\x80\xfd[\x83\x87\x01\x91P[\x84\x82\x10\x15a\x11\xbdW\x81Q\x83R\x91\x83\x01\x91\x90\x83\x01\x90a\x11\xa4V[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x11\xdbW`\x00\x80\xfd[\x82Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x11\xf3W`\x00\x80\xfd[a\x11\xff\x86\x83\x87\x01a\x11-V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a\x12\x15W`\x00\x80\xfd[Pa\x12\"\x85\x82\x86\x01a\x11-V[\x91PP\x92P\x92\x90PV[`\x00` \x82\x84\x03\x12\x15a\x12>W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x12YW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x12yWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x12\xa2\x81`\x04\x85\x01` \x87\x01a\x106V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x12\xc2\x81\x84` \x87\x01a\x106V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x12\xdeW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x12\xeeW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 \rS\xb9\xc7\n\xb4\xaeE\xda_\xc7\x01\x13}\xef1\xa5\xb8\x17\x94o\xae\xb6\x13\xc3\x9cF(\xb6\x97A\x04dsolcC\x00\x08\r\x003" => b"`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003" ) - - - ( ( SetItem ( 1014 ) ( SetItem ( 1019 ) ( SetItem ( 1077 ) ( SetItem ( 1107 ) ( SetItem ( 1117 ) ( SetItem ( 113 ) ( SetItem ( 1204 ) ( SetItem ( 1240 ) ( SetItem ( 1269 ) ( SetItem ( 1365 ) ( SetItem ( 1461 ) ( SetItem ( 1475 ) ( SetItem ( 1503 ) ( SetItem ( 1569 ) ( SetItem ( 1595 ) ( SetItem ( 16 ) ( SetItem ( 1615 ) ( SetItem ( 1717 ) ( SetItem ( 173 ) ( SetItem ( 1753 ) ( SetItem ( 1772 ) ( SetItem ( 1776 ) ( SetItem ( 1838 ) ( SetItem ( 1864 ) ( SetItem ( 1884 ) ( SetItem ( 1916 ) ( SetItem ( 1952 ) ( SetItem ( 2060 ) ( SetItem ( 2122 ) ( SetItem ( 2146 ) ( SetItem ( 2155 ) ( SetItem ( 2191 ) ( SetItem ( 2222 ) ( SetItem ( 2266 ) ( SetItem ( 2300 ) ( SetItem ( 2314 ) ( SetItem ( 2343 ) ( SetItem ( 2363 ) ( SetItem ( 244 ) ( SetItem ( 2453 ) ( SetItem ( 2489 ) ( SetItem ( 2505 ) ( SetItem ( 2552 ) ( SetItem ( 2571 ) ( SetItem ( 2607 ) ( SetItem ( 2715 ) ( SetItem ( 2777 ) ( SetItem ( 2801 ) ( SetItem ( 2890 ) ( SetItem ( 2937 ) ( SetItem ( 2973 ) ( SetItem ( 300 ) ( SetItem ( 3004 ) ( SetItem ( 3048 ) ( SetItem ( 305 ) ( SetItem ( 3082 ) ( SetItem ( 3096 ) ( SetItem ( 3125 ) ( SetItem ( 313 ) ( SetItem ( 3145 ) ( SetItem ( 315 ) ( SetItem ( 3179 ) ( SetItem ( 323 ) ( SetItem ( 331 ) ( SetItem ( 3321 ) ( SetItem ( 3347 ) ( SetItem ( 3408 ) ( SetItem ( 3413 ) ( SetItem ( 3437 ) ( SetItem ( 344 ) ( SetItem ( 3441 ) ( SetItem ( 3446 ) ( SetItem ( 353 ) ( SetItem ( 3542 ) ( SetItem ( 3590 ) ( SetItem ( 361 ) ( SetItem ( 3653 ) ( SetItem ( 3679 ) ( SetItem ( 369 ) ( SetItem ( 3699 ) ( SetItem ( 377 ) ( SetItem ( 3793 ) ( SetItem ( 3829 ) ( SetItem ( 3848 ) ( SetItem ( 385 ) ( SetItem ( 3882 ) ( SetItem ( 3894 ) ( SetItem ( 3922 ) ( SetItem ( 393 ) ( SetItem ( 3959 ) ( SetItem ( 3971 ) ( SetItem ( 401 ) ( SetItem ( 4011 ) ( SetItem ( 4072 ) ( SetItem ( 4114 ) ( SetItem ( 4135 ) ( SetItem ( 414 ) ( SetItem ( 4150 ) ( SetItem ( 4153 ) ( SetItem ( 4177 ) ( SetItem ( 4192 ) ( SetItem ( 4198 ) ( SetItem ( 422 ) ( SetItem ( 4237 ) ( SetItem ( 4276 ) ( SetItem ( 4307 ) ( SetItem ( 4320 ) ( SetItem ( 435 ) ( SetItem ( 4353 ) ( SetItem ( 4375 ) ( SetItem ( 4397 ) ( SetItem ( 4414 ) ( SetItem ( 443 ) ( SetItem ( 4443 ) ( SetItem ( 4480 ) ( SetItem ( 451 ) ( SetItem ( 4510 ) ( SetItem ( 4516 ) ( SetItem ( 4541 ) ( SetItem ( 4552 ) ( SetItem ( 4571 ) ( SetItem ( 459 ) ( SetItem ( 4595 ) ( SetItem ( 4607 ) ( SetItem ( 4629 ) ( SetItem ( 4642 ) ( SetItem ( 4652 ) ( SetItem ( 467 ) ( SetItem ( 4670 ) ( SetItem ( 4677 ) ( SetItem ( 4697 ) ( SetItem ( 4729 ) ( SetItem ( 4735 ) ( SetItem ( 475 ) ( SetItem ( 4770 ) ( SetItem ( 4784 ) ( SetItem ( 4802 ) ( SetItem ( 4812 ) ( SetItem ( 483 ) ( SetItem ( 4830 ) ( SetItem ( 4846 ) ( SetItem ( 4875 ) ( SetItem ( 499 ) ( SetItem ( 507 ) ( SetItem ( 515 ) ( SetItem ( 523 ) ( SetItem ( 536 ) ( SetItem ( 628 ) ( SetItem ( 675 ) ( SetItem ( 693 ) ( SetItem ( 696 ) ( SetItem ( 710 ) ( SetItem ( 738 ) ( SetItem ( 817 ) ( SetItem ( 837 ) ( SetItem ( 936 ) ( SetItem ( 976 ) SetItem ( 997 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) => SetItem ( 21 ) ) - - - ( 728815563385977040452943777879061427756277306518 => 491460923342184218035706888008750043977755113263 ) - - - ( CALLER_ID:Int => 728815563385977040452943777879061427756277306518 ) - - - ( b"H\x08\x80s" => b"" ) - - - 0 - - - .WordStack - - - ( b"" => b"`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80" ) - - - ( 0 => 33 ) - - - #gas ( ( VGAS:Int => ( #allBut64th ( ( VGAS:Int +Int -32293 ) ) +Int -22172 ) ) ) - - - ( 0 => 3 ) - - - ( _CALLGAS_CELL => 0 ) - - - false - - - ( 0 => 1 ) - - - - - SELFDESTRUCT_CELL:Set - - - .List - - - REFUND_CELL:Int - - - ( .Set => ( SetItem ( 491460923342184218035706888008750043977755113263 ) SetItem ( 728815563385977040452943777879061427756277306518 ) ) ) - - - ( .Map => ( 491460923342184218035706888008750043977755113263 |-> SetItem ( 0 ) ) ) - - - - ORIGIN_ID:Int - - - - NUMBER_CELL:Int - - ... - - ... - - - - ( - - ( 645326474426547203313410069153905908525362434349 => 491460923342184218035706888008750043977755113263 ) - - - 0 - - - ( b"\x00" => b"" ) - - - ( .Map => ( 0 |-> 1337 ) ) - - - .Map - - - ( 0 => 1 ) - - - ( - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01,W`\x005`\xe0\x1c\x80c\x87\xa8\xa8\x1b\x11a\x00\xadW\x80c\xbaAO\xa6\x11a\x00qW\x80c\xbaAO\xa6\x14a\x01\xdbW\x80c\xe2\f\x9fq\x14a\x01\xf3W\x80c\xe2\x92\xf8\xb5\x14a\x01\xfbW\x80c\xe9,\xa5\xbb\x14a\x02\x03W\x80c\xfav&\xd4\x14a\x02\x0bW`\x00\x80\xfd[\x80c\x87\xa8\xa8\x1b\x14a\x01\xb3W\x80c\x89\xa9\x9at\x14a\x01\xbbW\x80c\x91j\x17\xc6\x14a\x01\xc3W\x80c\x9bqn\x86\x14a\x01\xcbW\x80c\xb5P\x8a\xa9\x14a\x01\xd3W`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xf4W\x80c?r\x86\xf4\x14a\x01qW\x80cH\x08\x80s\x14a\x01yW\x80c\\-0.\x14a\x01\x81W\x80cf\xd9\xa9\xa0\x14a\x01\x89W\x80c\x85\"l\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x05\xf6\xff7\x14a\x011W\x80c\t\x84\x0b\xb5\x14a\x01;W\x80c\x1e\xd7\x83\x1c\x14a\x01CW\x80c$\x00z&\x14a\x01aW\x80c>^<#\x14a\x01iW[`\x00\x80\xfd[a\x019a\x02\x18V[\x00[a\x019a\x02\xb8V[a\x01Ka\x03\xfbV[`@Qa\x01X\x91\x90a\x0f6V[`@Q\x80\x91\x03\x90\xf3[a\x019a\x04]V[a\x01Ka\x04\xf5V[a\x01Ka\x05UV[a\x019a\x05\xb5V[a\x019a\x06\xf0V[a\x01\x91a\x07|V[`@Qa\x01X\x91\x90a\x0f\x83V[a\x01\xa6a\x08kV[`@Qa\x01X\x91\x90a\x10fV[a\x019a\t;V[a\x019a\t\xc9V[a\x01\x91a\n\x0bV[a\x019a\n\xf1V[a\x01\xa6a\x0byV[a\x01\xe3a\fIV[`@Q\x90\x15\x15\x81R` \x01a\x01XV[a\x01Ka\rvV[a\x019a\r\xd6V[a\x019a\x0e\x06V[`\x07Ta\x01\xe3\x90`\xff\x16\x81V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91Pa\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16cp\xca\x10\xbb`\xe0\x1b\x17\x90Ra\x0f\x08V[\x90P\x80`}\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[PV[`\x00`@Qa\x02\xc6\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xe2W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a\x13X\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c&l\xf1\t`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x031W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03EW=`\x00\x80>=`\x00\xfd[PP`@Qce\xbc\x94\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00\x92P\x82\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90ce\xbc\x94\x81\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x03\xa8W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x03\xd0\x91\x90\x81\x01\x90a\x11\xc8V[\x91P\x91P\x81Q`\x01\x14a\x03\xe5Wa\x03\xe5a\x11\x01V[\x80Q`\x01\x14a\x03\xf6Wa\x03\xf6a\x11\x01V[PPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045W[PPPPP\x90P\x90V[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`e`\x04\x82\x01R`\x17`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\xb4W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xd8\x91\x90a\x12,V[P`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`\x00`@Qa\x05\xc3\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\xdfW=`\x00\x80>=`\x00\xfd[P`@Qcp\xca\x10\xbb`\xe0\x1b\x81R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x06!\x90\x84\x90`\x00\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06;W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06OW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00`$\x82\x01\x81\x90R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06\xb5W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xd9\x91\x90a\x12,V[\x90Pazi\x81\x14a\x06\xecWa\x06\xeca\x11\x01V[PPV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x07.\x90`e\x90`\x17\x90`\x05\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07HW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07\\W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\fW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xa0V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x08\xae\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xda\x90a\x12EV[\x80\x15a\t'W\x80`\x1f\x10a\x08\xfcWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t'V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\nW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\x8fV[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`d`\x04\x82\x01R`\x17`$\x82\x01R`\x00\x90sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\t\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xb9\x91\x90a\x12,V[\x90P\x80\x15a\x02\xb5Wa\x02\xb5a\x11\x01V[`@Q`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90a\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[\x90P\x80a\nA\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xd9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\x9bW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n/V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91P`d\x01[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x06g\xf9\xd7`\xe4\x1b\x17\x90Ra\x0f\x08V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0b\xbc\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0b\xe8\x90a\x12EV[\x80\x15a\f5W\x80`\x1f\x10a\f\nWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\f5V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\f\x18W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0b\x9dV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\fkWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\rqW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\f\xf9\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x12\x7fV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x13\x91a\x12\xb0V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\rPW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\rUV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\rm\x91\x90a\x12\xccV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90`d\x01a\x0bJV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x0eE\x90`\x00\x90`\x03\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e_W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0esW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x00`\x04\x82\x01\x81\x90R`\x03`$\x83\x01R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0e\xd1W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0e\xf5\x91\x90a\x12,V[\x90Pazi\x81\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[`\x00\x80\x82` \x01\x83QZ`\x00\x80\x83\x85`\x00\x8b\x86\xf1PZ\x90\x03\x96\x95PPPPPPV[`b\x80a\x12\xf6\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0fwW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0fRV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10'W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\x12W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0f\xe8V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0f\xabV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10QW\x81\x81\x01Q\x83\x82\x01R` \x01a\x109V[\x83\x81\x11\x15a\x10`W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x10\xd3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x10\xb4\x81\x89\x89\x01\x8a\x85\x01a\x106V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\x8dV[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00\x82`\x1f\x83\x01\x12a\x11>W`\x00\x80\xfd[\x81Q` g\xff\xff\xff\xff\xff\xff\xff\xff\x80\x83\x11\x15a\x11[Wa\x11[a\x11\x17V[\x82`\x05\x1b`@Q`\x1f\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x84\x82\x11\x17\x15a\x11\x80Wa\x11\x80a\x11\x17V[`@R\x93\x84R\x85\x81\x01\x83\x01\x93\x83\x81\x01\x92P\x87\x85\x11\x15a\x11\x9eW`\x00\x80\xfd[\x83\x87\x01\x91P[\x84\x82\x10\x15a\x11\xbdW\x81Q\x83R\x91\x83\x01\x91\x90\x83\x01\x90a\x11\xa4V[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x11\xdbW`\x00\x80\xfd[\x82Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x11\xf3W`\x00\x80\xfd[a\x11\xff\x86\x83\x87\x01a\x11-V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a\x12\x15W`\x00\x80\xfd[Pa\x12\"\x85\x82\x86\x01a\x11-V[\x91PP\x92P\x92\x90PV[`\x00` \x82\x84\x03\x12\x15a\x12>W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x12YW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x12yWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x12\xa2\x81`\x04\x85\x01` \x87\x01a\x106V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x12\xc2\x81\x84` \x87\x01a\x106V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x12\xdeW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x12\xeeW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 \rS\xb9\xc7\n\xb4\xaeE\xda_\xc7\x01\x13}\xef1\xa5\xb8\x17\x94o\xae\xb6\x13\xc3\x9cF(\xb6\x97A\x04dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 1 - - => ( - - 645326474426547203313410069153905908525362434349 - - - 0 - - - b"\x00" - - - .Map - - - .Map - - - 0 - - - - - 728815563385977040452943777879061427756277306518 - - - 0 - - - b"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x01,W`\x005`\xe0\x1c\x80c\x87\xa8\xa8\x1b\x11a\x00\xadW\x80c\xbaAO\xa6\x11a\x00qW\x80c\xbaAO\xa6\x14a\x01\xdbW\x80c\xe2\f\x9fq\x14a\x01\xf3W\x80c\xe2\x92\xf8\xb5\x14a\x01\xfbW\x80c\xe9,\xa5\xbb\x14a\x02\x03W\x80c\xfav&\xd4\x14a\x02\x0bW`\x00\x80\xfd[\x80c\x87\xa8\xa8\x1b\x14a\x01\xb3W\x80c\x89\xa9\x9at\x14a\x01\xbbW\x80c\x91j\x17\xc6\x14a\x01\xc3W\x80c\x9bqn\x86\x14a\x01\xcbW\x80c\xb5P\x8a\xa9\x14a\x01\xd3W`\x00\x80\xfd[\x80c?r\x86\xf4\x11a\x00\xf4W\x80c?r\x86\xf4\x14a\x01qW\x80cH\x08\x80s\x14a\x01yW\x80c\\-0.\x14a\x01\x81W\x80cf\xd9\xa9\xa0\x14a\x01\x89W\x80c\x85\"l\x81\x14a\x01\x9eW`\x00\x80\xfd[\x80c\x05\xf6\xff7\x14a\x011W\x80c\t\x84\x0b\xb5\x14a\x01;W\x80c\x1e\xd7\x83\x1c\x14a\x01CW\x80c$\x00z&\x14a\x01aW\x80c>^<#\x14a\x01iW[`\x00\x80\xfd[a\x019a\x02\x18V[\x00[a\x019a\x02\xb8V[a\x01Ka\x03\xfbV[`@Qa\x01X\x91\x90a\x0f6V[`@Q\x80\x91\x03\x90\xf3[a\x019a\x04]V[a\x01Ka\x04\xf5V[a\x01Ka\x05UV[a\x019a\x05\xb5V[a\x019a\x06\xf0V[a\x01\x91a\x07|V[`@Qa\x01X\x91\x90a\x0f\x83V[a\x01\xa6a\x08kV[`@Qa\x01X\x91\x90a\x10fV[a\x019a\t;V[a\x019a\t\xc9V[a\x01\x91a\n\x0bV[a\x019a\n\xf1V[a\x01\xa6a\x0byV[a\x01\xe3a\fIV[`@Q\x90\x15\x15\x81R` \x01a\x01XV[a\x01Ka\rvV[a\x019a\r\xd6V[a\x019a\x0e\x06V[`\x07Ta\x01\xe3\x90`\xff\x16\x81V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91Pa\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16cp\xca\x10\xbb`\xe0\x1b\x17\x90Ra\x0f\x08V[\x90P\x80`}\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[PV[`\x00`@Qa\x02\xc6\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x02\xe2W=`\x00\x80>=`\x00\xfd[P\x90P`\x00\x80Q` a\x13X\x839\x81Q\x91R`\x00\x1c`\x01`\x01`\xa0\x1b\x03\x16c&l\xf1\t`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x031W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03EW=`\x00\x80>=`\x00\xfd[PP`@Qce\xbc\x94\x81`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00\x92P\x82\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90ce\xbc\x94\x81\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x03\xa8W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x00\x82>`\x1f=\x90\x81\x01`\x1f\x19\x16\x82\x01`@Ra\x03\xd0\x91\x90\x81\x01\x90a\x11\xc8V[\x91P\x91P\x81Q`\x01\x14a\x03\xe5Wa\x03\xe5a\x11\x01V[\x80Q`\x01\x14a\x03\xf6Wa\x03\xf6a\x11\x01V[PPPV[```\x14\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045W[PPPPP\x90P\x90V[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`e`\x04\x82\x01R`\x17`$\x82\x01Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\xb4W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xd8\x91\x90a\x12,V[P`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`\x00`@Qa\x05\xc3\x90a\x0f*V[`@Q\x80\x91\x03\x90`\x00\xf0\x80\x15\x80\x15a\x05\xdfW=`\x00\x80>=`\x00\xfd[P`@Qcp\xca\x10\xbb`\xe0\x1b\x81R\x90\x91Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x06!\x90\x84\x90`\x00\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x06;W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x06OW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x84\x16`\x04\x82\x01R`\x00`$\x82\x01\x81\x90R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06\xb5W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xd9\x91\x90a\x12,V[\x90Pazi\x81\x14a\x06\xecWa\x06\xeca\x11\x01V[PPV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x07.\x90`e\x90`\x17\x90`\x05\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x07HW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07\\W=`\x00\x80>=`\x00\xfd[PPPP`\x00a\x02\xa3`e`@Q\x80` \x01`@R\x80`\x00\x81RPa\x0f\x08V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08JW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\fW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xa0V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x08\xae\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x08\xda\x90a\x12EV[\x80\x15a\t'W\x80`\x1f\x10a\x08\xfcWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t'V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\nW\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\x8fV[`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`d`\x04\x82\x01R`\x17`$\x82\x01R`\x00\x90sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\t\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xb9\x91\x90a\x12,V[\x90P\x80\x15a\x02\xb5Wa\x02\xb5a\x11\x01V[`@Q`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90a\x02t\x90`e\x90`\x17\x90`\x05\x90`$\x01a\x10\xe0V[\x90P\x80a\nA\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[```\x1a\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW`\x00\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80T`\x01`\x01`\xa0\x1b\x03\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\n\xd9W` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90`\x00\x90[\x82\x82\x90T\x90a\x01\x00\n\x90\x04`\xe0\x1b`\x01`\x01`\xe0\x1b\x03\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\n\x9bW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\n/V[`@Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90a\x08\xfc\x90`\x00\x90\x81\x81\x81\x81\x81\x88\x88\xf1PP`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x93Pa\x02\xa3\x92P`\x00\x80Q` a\x13X\x839\x81Q\x91R\x91P`d\x01[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xe0\x1b\x03\x16c\x06g\xf9\xd7`\xe4\x1b\x17\x90Ra\x0f\x08V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\x00\x90[\x82\x82\x10\x15a\x08bW\x83\x82\x90`\x00R` `\x00 \x01\x80Ta\x0b\xbc\x90a\x12EV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0b\xe8\x90a\x12EV[\x80\x15a\f5W\x80`\x1f\x10a\f\nWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\f5V[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\f\x18W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x0b\x9dV[`\x07T`\x00\x90a\x01\x00\x90\x04`\xff\x16\x15a\fkWP`\x07Ta\x01\x00\x90\x04`\xff\x16\x90V[`\x00sq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-;\x15a\rqW`@\x80Qsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-` \x82\x01\x81\x90Re\x19\x98Z[\x19Y`\xd2\x1b\x82\x84\x01R\x82Q\x80\x83\x03\x84\x01\x81R``\x83\x01\x90\x93R`\x00\x92\x90\x91a\f\xf9\x91\x7ff\x7f\x9dp\xcaA\x1dp\xea\xd5\r\x8d\\\"\x07\r\xaf\xc3j\xd7_=\xcf^r7\xb2*\xde\x9a\xec\xc4\x91`\x80\x01a\x12\x7fV[`@\x80Q`\x1f\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r\x13\x91a\x12\xb0V[`\x00`@Q\x80\x83\x03\x81`\x00\x86Z\xf1\x91PP=\x80`\x00\x81\x14a\rPW`@Q\x91P`\x1f\x19`?=\x01\x16\x82\x01`@R=\x82R=`\x00` \x84\x01>a\rUV[``\x91P[P\x91PP\x80\x80` \x01\x90Q\x81\x01\x90a\rm\x91\x90a\x12\xccV[\x91PP[\x91\x90PV[```\x13\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x04SW` \x02\x82\x01\x91\x90`\x00R` `\x00 \x90\x81T`\x01`\x01`\xa0\x1b\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x045WPPPPP\x90P\x90V[`@Q`e`$\x82\x01R`\x17`D\x82\x01R`\x00\x90a\t\xf8\x90`\x00\x80Q` a\x13X\x839\x81Q\x91R\x90`d\x01a\x0bJV[`@Qcp\xca\x10\xbb`\xe0\x1b\x81Rsq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x90cp\xca\x10\xbb\x90a\x0eE\x90`\x00\x90`\x03\x90azi\x90`\x04\x01a\x10\xe0V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x0e_W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x0esW=`\x00\x80>=`\x00\xfd[PP`@Qc\x06g\xf9\xd7`\xe4\x1b\x81R`\x00`\x04\x82\x01\x81\x90R`\x03`$\x83\x01R\x92Psq\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\x91Pcf\x7f\x9dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x0e\xd1W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0e\xf5\x91\x90a\x12,V[\x90Pazi\x81\x14a\x02\xb5Wa\x02\xb5a\x11\x01V[`\x00\x80\x82` \x01\x83QZ`\x00\x80\x83\x85`\x00\x8b\x86\xf1PZ\x90\x03\x96\x95PPPPPPV[`b\x80a\x12\xf6\x839\x01\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\x00\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0fwW\x83Q`\x01`\x01`\xa0\x1b\x03\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0fRV[P\x90\x96\x95PPPPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P\x82\x86\x01\x91P\x82\x81`\x05\x1b\x87\x01\x01\x84\x88\x01`\x00\x80[\x84\x81\x10\x15a\x10'W\x89\x84\x03`?\x19\x01\x86R\x82Q\x80Q`\x01`\x01`\xa0\x1b\x03\x16\x85R\x88\x01Q\x88\x85\x01\x88\x90R\x80Q\x88\x86\x01\x81\x90R\x90\x89\x01\x90\x83\x90``\x87\x01\x90[\x80\x83\x10\x15a\x10\x12W\x83Q`\x01`\x01`\xe0\x1b\x03\x19\x16\x82R\x92\x8b\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x8b\x01\x90a\x0f\xe8V[P\x97\x8a\x01\x97\x95PPP\x91\x87\x01\x91`\x01\x01a\x0f\xabV[P\x91\x99\x98PPPPPPPPPV[`\x00[\x83\x81\x10\x15a\x10QW\x81\x81\x01Q\x83\x82\x01R` \x01a\x109V[\x83\x81\x11\x15a\x10`W`\x00\x84\x84\x01R[PPPPV[`\x00` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1b\x87\x01\x01\x92P\x83\x87\x01`\x00[\x82\x81\x10\x15a\x10\xd3W\x87\x85\x03`?\x19\x01\x84R\x81Q\x80Q\x80\x87Ra\x10\xb4\x81\x89\x89\x01\x8a\x85\x01a\x106V[`\x1f\x01`\x1f\x19\x16\x95\x90\x95\x01\x86\x01\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x10\x8dV[P\x92\x97\x96PPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x93\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R`@\x82\x01R``\x01\x90V[cNH{q`\xe0\x1b`\x00R`\x01`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x00\x82`\x1f\x83\x01\x12a\x11>W`\x00\x80\xfd[\x81Q` g\xff\xff\xff\xff\xff\xff\xff\xff\x80\x83\x11\x15a\x11[Wa\x11[a\x11\x17V[\x82`\x05\x1b`@Q`\x1f\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x84\x82\x11\x17\x15a\x11\x80Wa\x11\x80a\x11\x17V[`@R\x93\x84R\x85\x81\x01\x83\x01\x93\x83\x81\x01\x92P\x87\x85\x11\x15a\x11\x9eW`\x00\x80\xfd[\x83\x87\x01\x91P[\x84\x82\x10\x15a\x11\xbdW\x81Q\x83R\x91\x83\x01\x91\x90\x83\x01\x90a\x11\xa4V[\x97\x96PPPPPPPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x11\xdbW`\x00\x80\xfd[\x82Qg\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x11\xf3W`\x00\x80\xfd[a\x11\xff\x86\x83\x87\x01a\x11-V[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15a\x12\x15W`\x00\x80\xfd[Pa\x12\"\x85\x82\x86\x01a\x11-V[\x91PP\x92P\x92\x90PV[`\x00` \x82\x84\x03\x12\x15a\x12>W`\x00\x80\xfd[PQ\x91\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x12YW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x12yWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV[`\x01`\x01`\xe0\x1b\x03\x19\x83\x16\x81R\x81Q`\x00\x90a\x12\xa2\x81`\x04\x85\x01` \x87\x01a\x106V[\x91\x90\x91\x01`\x04\x01\x93\x92PPPV[`\x00\x82Qa\x12\xc2\x81\x84` \x87\x01a\x106V[\x91\x90\x91\x01\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x12\xdeW`\x00\x80\xfd[\x81Q\x80\x15\x15\x81\x14a\x12\xeeW`\x00\x80\xfd[\x93\x92PPPV\xfe`\x80`@Ra\x059`\x00U4\x80\x15`\x15W`\x00\x80\xfd[P`?\x80`#`\x009`\x00\xf3\xfe`\x80`@R`\x00\x80\xfd\xfe\xa2dipfsX\"\x12 \x16\x04\x0e\x8a\xb3\x16\xc2\x94\xad\xf7K;\x8d\x9d\xd4\\\xd0m\xc0\xd3\x91\x1aLx\x1e\xb1\x91\x8cn\x06\xd97dsolcC\x00\x08\r\x003\x88\\\xb6\x92@\xa95\xd62\xd7\x9c1q\tp\x9e\xcf\xa9\x1a\x80bo\xf3\x98\x9dh\xf6\x7f[\x1d\xd1-\xa2dipfsX\"\x12 \rS\xb9\xc7\n\xb4\xaeE\xda_\xc7\x01\x13}\xef1\xa5\xb8\x17\x94o\xae\xb6\x13\xc3\x9cF(\xb6\x97A\x04dsolcC\x00\x08\r\x003" - - - .Map - - - .Map - - - 2 - - ) ) ) - - ... - - - ... - - requires ( 0 <=Int CALLER_ID:Int - andBool ( 0 <=Int ORIGIN_ID:Int - andBool ( 0 <=Int NUMBER_CELL:Int - andBool ( CALLER_ID:Int #parseByteStack("0x608060405234801561001057600080fd5b5060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a819055506134b58061006c6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637cdd3fde116100f9578063bb35783b11610097578063dc4d20fa11610071578063dc4d20fa1461096c578063f059212a146109b0578063f24e23eb14610a08578063f37ac61c14610a76576101c4565b8063bb35783b14610848578063bf353dbb146108b6578063d9638d361461090e576101c4565b80639c52a7f1116100d35780639c52a7f11461074a578063a3b22fc41461078e578063b65337df146107d2578063babe8a3f1461082a576101c4565b80637cdd3fde14610652578063870c616d146106aa578063957aa58c1461072c576101c4565b80634538c4eb11610166578063692450091161014057806369245009146104ac5780636c25b346146104b6578063760887031461050e5780637bab3f40146105b0576101c4565b80634538c4eb146103785780636111be2e146103f057806365fae35e14610468576101c4565b80632424be5c116101a25780632424be5c1461028b57806329ae8114146102f45780632d61a3551461032c5780633b6631951461034a576101c4565b80630dca59c1146101c95780631a0b287e146101e7578063214414d514610229575b600080fd5b6101d1610aa4565b6040518082815260200191505060405180910390f35b610227600480360360608110156101fd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610aaa565b005b6102756004803603604081101561023f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d58565b6040518082815260200191505060405180910390f35b6102d7600480360360408110156102a157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d7d565b604051808381526020018281526020019250505060405180910390f35b61032a6004803603604081101561030a57600080fd5b810190808035906020019092919080359060200190929190505050610dae565b005b610334610fb5565b6040518082815260200191505060405180910390f35b6103766004803603602081101561036057600080fd5b8101908080359060200190929190505050610fbb565b005b6103da6004803603604081101561038e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061115a565b6040518082815260200191505060405180910390f35b6104666004803603608081101561040657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117f565b005b6104aa6004803603602081101561047e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611392565b005b6104b461153a565b005b6104f8600480360360208110156104cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061162d565b6040518082815260200191505060405180910390f35b6105ae600480360360c081101561052457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611645565b005b610650600480360360c08110156105c657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611e31565b005b6106a86004803603606081101561066857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612130565b005b61072a600480360360a08110156106c057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506122cc565b005b610734612700565b6040518082815260200191505060405180910390f35b61078c6004803603602081101561076057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612706565b005b6107d0600480360360208110156107a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128ae565b005b610828600480360360608110156107e857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612967565b005b610832612bac565b6040518082815260200191505060405180910390f35b6108b46004803603606081101561085e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612bb2565b005b6108f8600480360360208110156108cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d80565b6040518082815260200191505060405180910390f35b61093a6004803603602081101561092457600080fd5b8101908080359060200190929190505050612d98565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b6109ae6004803603602081101561098257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dce565b005b6109f2600480360360208110156109c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e88565b6040518082815260200191505060405180910390f35b610a7460048036036060811015610a1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ea0565b005b610aa260048036036020811015610a8c57600080fd5b81019080803590602001909291905050506130ca565b005b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f73706f7400000000000000000000000000000000000000000000000000000000821415610c1e57806002600085815260200190815260200160002060020181905550610d1e565b7f6c696e6500000000000000000000000000000000000000000000000000000000821415610c6657806002600085815260200190815260200160002060030181905550610d1d565b7f6475737400000000000000000000000000000000000000000000000000000000821415610cae57806002600085815260200190815260200160002060040181905550610d1c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5661742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b6004602052816000526040600020602052806000526040600020600091509150505481565b6003602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414610eda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f4c696e6500000000000000000000000000000000000000000000000000000000821415610f0e5780600981905550610f7c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5661742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a4505050565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461106f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006002600083815260200190815260200160002060010154146110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5661742f696c6b2d616c72656164792d696e697400000000000000000000000081525060200191505060405180910390fd5b6b033b2e3c9fd0803ce800000060026000838152602001908152602001600020600101819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b6001602052816000526040600020602052806000526040600020600091509150505481565b6111898333613244565b6111fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6112556004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613304565b6004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113036004600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b6004600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611446576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a54146114be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6000600a819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450565b60056020528060005260406000206000915090505481565b6001600a54146116bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6116c5613437565b6003600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052908160008201548152602001600182015481525050905061173e613451565b600260008981526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905060008160200151141561180b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f696c6b2d6e6f742d696e69740000000000000000000000000000000081525060200191505060405180910390fd5b611819826000015185613338565b826000018181525050611830826020015184613338565b826020018181525050611847816000015184613338565b8160000181815250506000611860826020015185613377565b90506000611876836020015185602001516133b2565b905061188460075483613338565b6007819055506118c060008613156118bb85606001516118ac876000015188602001516133b2565b111560095460075411156133de565b6133eb565b611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5661742f6365696c696e672d657863656564656400000000000000000000000081525060200191505060405180910390fd5b611961611947600087131560008912156133de565b611959866000015186604001516133b2565b8311156133eb565b6119d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d73616665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6119f76119e8600087131560008912156133de565b6119f28b33613244565b6133eb565b611a69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7500000000000000000000000000000081525060200191505060405180910390fd5b611a806000871315611a7b8a33613244565b6133eb565b611af2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7600000000000000000000000000000081525060200191505060405180910390fd5b611b096000861215611b048933613244565b6133eb565b611b7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7700000000000000000000000000000081525060200191505060405180910390fd5b611b93600085602001511484608001518310156133eb565b611c05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f5661742f6475737400000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611c5f600460008c815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876133f8565b600460008c815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cfc600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613338565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600360008c815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015590505082600260008c81526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155905050505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006003600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008981526020019081526020016000209050611f5e826000015485613338565b8260000181905550611f74826001015484613338565b8260010181905550611f8a816000015484613338565b81600001819055506000611fa2826001015485613377565b9050611ffe600460008b815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866133f8565b600460008b815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061209b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133f8565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120ea600854826133f8565b6008819055505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b61223e6004600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613338565b6004600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60006003600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006003600088815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006002600089815260200190815260200160002090506123998360000154866133f8565b83600001819055506123af8360010154856133f8565b83600101819055506123c5826000015486613338565b82600001819055506123db826001015485613338565b826001018190555060006123f7846001015483600101546133b2565b9050600061240d846001015484600101546133b2565b905061242b61241c8a33613244565b6124268a33613244565b6133de565b61249d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6124af856000015484600201546133b2565b821115612524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f6e6f742d736166652d7372630000000000000000000000000000000081525060200191505060405180910390fd5b612536846000015484600201546133b2565b8111156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f6e6f742d736166652d6473740000000000000000000000000000000081525060200191505060405180910390fd5b6125c3836004015483101560008760010154146133eb565b612635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f647573742d737263000000000000000000000000000000000000000081525060200191505060405180910390fd5b61264d836004015482101560008660010154146133eb565b6126bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f647573742d647374000000000000000000000000000000000000000081525060200191505060405180910390fd5b50505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a4505050505050565b600a5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146127ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414612832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612a1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414612a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000209050612ab8816001015483613338565b81600101819055506000612ad0826000015484613377565b9050612b1b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613338565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6a60075482613338565b60078190555050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60095481565b612bbc8333613244565b612c2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b612c77600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613304565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d03600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60006020528060005260406000206000915090505481565b60026020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154905085565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60066020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612f54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b612f9d600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613029600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130786008548261331e565b60088190555061308a6007548261331e565b6007819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b6000339050613118600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613304565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131a4600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613304565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131f360085483613304565b60088190555061320560075483613304565b600781905550505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60006132fc8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161460018060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146133eb565b905092915050565b600082828403915081111561331857600080fd5b92915050565b600082828401915081101561333257600080fd5b92915050565b6000818301905060008212158061334f5750828111155b61335857600080fd5b6000821315806133685750828110155b61337157600080fd5b92915050565b60008183029050600083121561338c57600080fd5b60008214806133a35750828282816133a057fe5b05145b6133ac57600080fd5b92915050565b6000808214806133cf57508282838502925082816133cc57fe5b04145b6133d857600080fd5b92915050565b6000818316905092915050565b6000818317905092915050565b6000818303905060008213158061340f5750828111155b61341857600080fd5b6000821215806134285750828110155b61343157600080fd5b92915050565b604051806040016040528060008152602001600081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea265627a7a723158208a580a94b7f47ff0368768e9eb5ecda769fe0c72f37dcc78574c670dc0671a9664736f6c634300050c0032") - - syntax Bytes ::= "Vat_bin_runtime" [macro] - // ------------------------------------------ - rule Vat_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80637cdd3fde116100f9578063bb35783b11610097578063dc4d20fa11610071578063dc4d20fa1461096c578063f059212a146109b0578063f24e23eb14610a08578063f37ac61c14610a76576101c4565b8063bb35783b14610848578063bf353dbb146108b6578063d9638d361461090e576101c4565b80639c52a7f1116100d35780639c52a7f11461074a578063a3b22fc41461078e578063b65337df146107d2578063babe8a3f1461082a576101c4565b80637cdd3fde14610652578063870c616d146106aa578063957aa58c1461072c576101c4565b80634538c4eb11610166578063692450091161014057806369245009146104ac5780636c25b346146104b6578063760887031461050e5780637bab3f40146105b0576101c4565b80634538c4eb146103785780636111be2e146103f057806365fae35e14610468576101c4565b80632424be5c116101a25780632424be5c1461028b57806329ae8114146102f45780632d61a3551461032c5780633b6631951461034a576101c4565b80630dca59c1146101c95780631a0b287e146101e7578063214414d514610229575b600080fd5b6101d1610aa4565b6040518082815260200191505060405180910390f35b610227600480360360608110156101fd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610aaa565b005b6102756004803603604081101561023f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d58565b6040518082815260200191505060405180910390f35b6102d7600480360360408110156102a157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d7d565b604051808381526020018281526020019250505060405180910390f35b61032a6004803603604081101561030a57600080fd5b810190808035906020019092919080359060200190929190505050610dae565b005b610334610fb5565b6040518082815260200191505060405180910390f35b6103766004803603602081101561036057600080fd5b8101908080359060200190929190505050610fbb565b005b6103da6004803603604081101561038e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061115a565b6040518082815260200191505060405180910390f35b6104666004803603608081101561040657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117f565b005b6104aa6004803603602081101561047e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611392565b005b6104b461153a565b005b6104f8600480360360208110156104cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061162d565b6040518082815260200191505060405180910390f35b6105ae600480360360c081101561052457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611645565b005b610650600480360360c08110156105c657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611e31565b005b6106a86004803603606081101561066857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612130565b005b61072a600480360360a08110156106c057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506122cc565b005b610734612700565b6040518082815260200191505060405180910390f35b61078c6004803603602081101561076057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612706565b005b6107d0600480360360208110156107a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128ae565b005b610828600480360360608110156107e857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612967565b005b610832612bac565b6040518082815260200191505060405180910390f35b6108b46004803603606081101561085e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612bb2565b005b6108f8600480360360208110156108cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d80565b6040518082815260200191505060405180910390f35b61093a6004803603602081101561092457600080fd5b8101908080359060200190929190505050612d98565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b6109ae6004803603602081101561098257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dce565b005b6109f2600480360360208110156109c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e88565b6040518082815260200191505060405180910390f35b610a7460048036036060811015610a1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ea0565b005b610aa260048036036020811015610a8c57600080fd5b81019080803590602001909291905050506130ca565b005b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f73706f7400000000000000000000000000000000000000000000000000000000821415610c1e57806002600085815260200190815260200160002060020181905550610d1e565b7f6c696e6500000000000000000000000000000000000000000000000000000000821415610c6657806002600085815260200190815260200160002060030181905550610d1d565b7f6475737400000000000000000000000000000000000000000000000000000000821415610cae57806002600085815260200190815260200160002060040181905550610d1c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5661742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b6004602052816000526040600020602052806000526040600020600091509150505481565b6003602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414610eda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f4c696e6500000000000000000000000000000000000000000000000000000000821415610f0e5780600981905550610f7c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5661742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a4505050565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461106f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006002600083815260200190815260200160002060010154146110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5661742f696c6b2d616c72656164792d696e697400000000000000000000000081525060200191505060405180910390fd5b6b033b2e3c9fd0803ce800000060026000838152602001908152602001600020600101819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b6001602052816000526040600020602052806000526040600020600091509150505481565b6111898333613244565b6111fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6112556004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613304565b6004600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113036004600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b6004600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611446576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a54146114be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6000600a819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450565b60056020528060005260406000206000915090505481565b6001600a54146116bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6116c5613437565b6003600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052908160008201548152602001600182015481525050905061173e613451565b600260008981526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905060008160200151141561180b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f696c6b2d6e6f742d696e69740000000000000000000000000000000081525060200191505060405180910390fd5b611819826000015185613338565b826000018181525050611830826020015184613338565b826020018181525050611847816000015184613338565b8160000181815250506000611860826020015185613377565b90506000611876836020015185602001516133b2565b905061188460075483613338565b6007819055506118c060008613156118bb85606001516118ac876000015188602001516133b2565b111560095460075411156133de565b6133eb565b611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5661742f6365696c696e672d657863656564656400000000000000000000000081525060200191505060405180910390fd5b611961611947600087131560008912156133de565b611959866000015186604001516133b2565b8311156133eb565b6119d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d73616665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6119f76119e8600087131560008912156133de565b6119f28b33613244565b6133eb565b611a69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7500000000000000000000000000000081525060200191505060405180910390fd5b611a806000871315611a7b8a33613244565b6133eb565b611af2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7600000000000000000000000000000081525060200191505060405180910390fd5b611b096000861215611b048933613244565b6133eb565b611b7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5661742f6e6f742d616c6c6f7765642d7700000000000000000000000000000081525060200191505060405180910390fd5b611b93600085602001511484608001518310156133eb565b611c05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f5661742f6475737400000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611c5f600460008c815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876133f8565b600460008c815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cfc600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613338565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600360008c815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015590505082600260008c81526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155905050505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006003600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008981526020019081526020016000209050611f5e826000015485613338565b8260000181905550611f74826001015484613338565b8260010181905550611f8a816000015484613338565b81600001819055506000611fa2826001015485613377565b9050611ffe600460008b815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866133f8565b600460008b815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061209b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133f8565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120ea600854826133f8565b6008819055505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b61223e6004600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613338565b6004600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60006003600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006003600088815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006002600089815260200190815260200160002090506123998360000154866133f8565b83600001819055506123af8360010154856133f8565b83600101819055506123c5826000015486613338565b82600001819055506123db826001015485613338565b826001018190555060006123f7846001015483600101546133b2565b9050600061240d846001015484600101546133b2565b905061242b61241c8a33613244565b6124268a33613244565b6133de565b61249d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6124af856000015484600201546133b2565b821115612524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f6e6f742d736166652d7372630000000000000000000000000000000081525060200191505060405180910390fd5b612536846000015484600201546133b2565b8111156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5661742f6e6f742d736166652d6473740000000000000000000000000000000081525060200191505060405180910390fd5b6125c3836004015483101560008760010154146133eb565b612635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f647573742d737263000000000000000000000000000000000000000081525060200191505060405180910390fd5b61264d836004015482101560008660010154146133eb565b6126bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f647573742d647374000000000000000000000000000000000000000081525060200191505060405180910390fd5b50505050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a4505050505050565b600a5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146127ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414612832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612a1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600a5414612a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5661742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000209050612ab8816001015483613338565b81600101819055506000612ad0826000015484613377565b9050612b1b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613338565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6a60075482613338565b60078190555050505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60095481565b612bbc8333613244565b612c2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5661742f6e6f742d616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b612c77600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613304565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d03600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b60006020528060005260406000206000915090505481565b60026020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154905085565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60066020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612f54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5661742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b612f9d600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613029600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261331e565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130786008548261331e565b60088190555061308a6007548261331e565b6007819055505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a450505050565b6000339050613118600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613304565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131a4600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613304565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131f360085483613304565b60088190555061320560075483613304565b600781905550505961012081016040526020815260e0602082015260e06000604083013760443560243560043560003560e01c60e01b61012085a45050565b60006132fc8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161460018060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146133eb565b905092915050565b600082828403915081111561331857600080fd5b92915050565b600082828401915081101561333257600080fd5b92915050565b6000818301905060008212158061334f5750828111155b61335857600080fd5b6000821315806133685750828110155b61337157600080fd5b92915050565b60008183029050600083121561338c57600080fd5b60008214806133a35750828282816133a057fe5b05145b6133ac57600080fd5b92915050565b6000808214806133cf57508282838502925082816133cc57fe5b04145b6133d857600080fd5b92915050565b6000818316905092915050565b6000818317905092915050565b6000818303905060008213158061340f5750828111155b61341857600080fd5b6000821215806134285750828110155b61343157600080fd5b92915050565b604051806040016040528060008152602001600081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea265627a7a723158208a580a94b7f47ff0368768e9eb5ecda769fe0c72f37dcc78574c670dc0671a9664736f6c634300050c0032") - - syntax Bytes ::= "Vow_bin" [macro] - // ---------------------------------- - rule Vow_bin => #parseByteStack("0x608060405234801561001057600080fd5b506040516128e63803806128e68339818101604052606081101561003357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561020057600080fd5b505af1158015610214573d6000803e3d6000fd5b505050506001600c819055505050506126b4806102326000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063697efb78116100c3578063cb5cc1091161007c578063cb5cc109146104a9578063d0adc35f146104eb578063d4e8be8314610509578063d7ee674b14610557578063e433054514610585578063f37ac61c146105a357610158565b8063697efb7814610385578063957aa58c146103b35780639c52a7f1146103d1578063bbbb0d7b14610415578063bf353dbb14610433578063c349d3621461048b57610158565b80634081d73a116101155780634081d73a146102675780635ca0d723146102b157806364bd7013146102fb57806365fae35e1461031957806368110b2f1461035d578063692450091461037b57610158565b80630e01198b1461015d5780631b8e8cfa1461017b5780632506855a1461019957806329ae8114146101c75780632a1d2b3c146101ff57806336569e771461021d575b600080fd5b6101656105d1565b6040518082815260200191505060405180910390f35b610183610a69565b6040518082815260200191505060405180910390f35b6101c5600480360360208110156101af57600080fd5b8101908080359060200190929190505050610a6f565b005b6101fd600480360360408110156101dd57600080fd5b810190808035906020019092919080359060200190929190505050610d0b565b005b610207610f6c565b6040518082815260200191505060405180910390f35b610225610f72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61026f610f98565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b9610fbe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610303610fe4565b6040518082815260200191505060405180910390f35b61035b6004803603602081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fea565b005b610365611190565b6040518082815260200191505060405180910390f35b610383611196565b005b6103b16004803603602081101561039b57600080fd5b8101908080359060200190929190505050611761565b005b6103bb611891565b6040518082815260200191505060405180910390f35b610413600480360360208110156103e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611897565b005b61041d6119c5565b6040518082815260200191505060405180910390f35b6104756004803603602081101561044957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db9565b6040518082815260200191505060405180910390f35b610493611dd1565b6040518082815260200191505060405180910390f35b6104d5600480360360208110156104bf57600080fd5b8101908080359060200190929190505050611dd7565b6040518082815260200191505060405180910390f35b6104f3611def565b6040518082815260200191505060405180910390f35b6105556004803603604081101561051f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611df5565b005b6105836004803603602081101561056d57600080fd5b81019080803590602001909291905050506121bf565b005b61058d6122b4565b6040518082815260200191505060405180910390f35b6105cf600480360360208110156105b957600080fd5b81019080803590602001909291905050506122ba565b005b60006106c36106bb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561067857600080fd5b505afa15801561068c573d6000803e3d6000fd5b505050506040513d60208110156106a257600080fd5b8101908080519060200190929190505050600a54612631565b600b54612631565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561076257600080fd5b505afa158015610776573d6000803e3d6000fd5b505050506040513d602081101561078c57600080fd5b81019080805190602001909291905050501015610811576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f566f772f696e73756666696369656e742d737572706c7573000000000000000081525060200191505060405180910390fd5b60006109036108fb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108b857600080fd5b505afa1580156108cc573d6000803e3d6000fd5b505050506040513d60208110156108e257600080fd5b810190808051906020019092919050505060055461264b565b60065461264b565b14610976576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f566f772f646562742d6e6f742d7a65726f00000000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca40c419600a5460006040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b1580156109f657600080fd5b505af1158015610a0a573d6000803e3d6000fd5b505050506040513d6020811015610a2057600080fd5b810190808051906020019092919050505090505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45090565b600b5481565b600654811115610ae7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d656e6f7567682d617368000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b8101908080519060200190929190505050811115610c36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f566f772f696e73756666696369656e742d737572706c7573000000000000000081525060200191505060405180910390fd5b610c426006548261264b565b600681905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f37ac61c826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610cbd57600080fd5b505af1158015610cd1573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610dbf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f7761697400000000000000000000000000000000000000000000000000000000821415610df35780600781905550610f35565b7f62756d7000000000000000000000000000000000000000000000000000000000821415610e275780600a81905550610f34565b7f73756d7000000000000000000000000000000000000000000000000000000000821415610e5b5780600981905550610f33565b7f64756d7000000000000000000000000000000000000000000000000000000000821415610e8f5780600881905550610f32565b7f68756d7000000000000000000000000000000000000000000000000000000000821415610ec35780600b81905550610f31565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f566f772f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461109e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600c5414611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f566f772f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600a5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461124a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600c54146112c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f566f772f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c8190555060006005819055506000600681905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2f91af2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156113d957600080fd5b505afa1580156113ed573d6000803e3d6000fd5b505050506040513d602081101561140357600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561144a57600080fd5b505af115801561145e573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114cc57600080fd5b505af11580156114e0573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f37ac61c6116de600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156115c457600080fd5b505afa1580156115d8573d6000803e3d6000fd5b505050506040513d60208110156115ee57600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169e57600080fd5b505afa1580156116b2573d6000803e3d6000fd5b505050506040513d60208110156116c857600080fd5b8101908080519060200190929190505050612665565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561171457600080fd5b505af1158015611728573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611815576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b611832600460004281526020019081526020016000205482612631565b600460004281526020019081526020016000208190555061185560055482612631565b6005819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600c5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461194b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6000611ab7611aaf600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a6c57600080fd5b505afa158015611a80573d6000803e3d6000fd5b505050506040513d6020811015611a9657600080fd5b810190808051906020019092919050505060055461264b565b60065461264b565b6009541115611b2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f566f772f696e73756666696369656e742d64656274000000000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b810190808051906020019092919050505014611c7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f566f772f737572706c75732d6e6f742d7a65726f00000000000000000000000081525060200191505060405180910390fd5b611c8b600654600954612631565b600681905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7e9cd24306008546009546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050602060405180830381600087803b158015611d4657600080fd5b505af1158015611d5a573d6000803e3d6000fd5b505050506040513d6020811015611d7057600080fd5b810190808051906020019092919050505090505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45090565b60006020528060005260406000206000915090505481565b60095481565b60046020528060005260406000206000915090505481565b60055481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611ea9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f666c6170706572000000000000000000000000000000000000000000000000008214156120ab57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc4d20fa600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611f9457600080fd5b505af1158015611fa8573d6000803e3d6000fd5b5050505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561208e57600080fd5b505af11580156120a2573d6000803e3d6000fd5b50505050612188565b7f666c6f70706572000000000000000000000000000000000000000000000000008214156121195780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612187565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f566f772f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b426121cc82600754612631565b1115612240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f566f772f776169742d6e6f742d66696e6973686564000000000000000000000081525060200191505060405180910390fd5b61225f600554600460008481526020019081526020016000205461264b565b600581905550600060046000838152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561235957600080fd5b505afa15801561236d573d6000803e3d6000fd5b505050506040513d602081101561238357600080fd5b8101908080519060200190929190505050811115612409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f566f772f696e73756666696369656e742d737572706c7573000000000000000081525060200191505060405180910390fd5b6124f96124f1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124ae57600080fd5b505afa1580156124c2573d6000803e3d6000fd5b505050506040513d60208110156124d857600080fd5b810190808051906020019092919050505060055461264b565b60065461264b565b81111561256e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f566f772f696e73756666696369656e742d64656274000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f37ac61c826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156125e357600080fd5b505af11580156125f7573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600082828401915081101561264557600080fd5b92915050565b600082828403915081111561265f57600080fd5b92915050565b6000818311156126755781612677565b825b90509291505056fea265627a7a72315820c366742f39bbcf961239d704f4653337b9e0b1b5b9ce284e9e27a346452a7a9964736f6c634300050c0032") - - syntax Bytes ::= "Vow_bin_runtime" [macro] - // ------------------------------------------ - rule Vow_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063697efb78116100c3578063cb5cc1091161007c578063cb5cc109146104a9578063d0adc35f146104eb578063d4e8be8314610509578063d7ee674b14610557578063e433054514610585578063f37ac61c146105a357610158565b8063697efb7814610385578063957aa58c146103b35780639c52a7f1146103d1578063bbbb0d7b14610415578063bf353dbb14610433578063c349d3621461048b57610158565b80634081d73a116101155780634081d73a146102675780635ca0d723146102b157806364bd7013146102fb57806365fae35e1461031957806368110b2f1461035d578063692450091461037b57610158565b80630e01198b1461015d5780631b8e8cfa1461017b5780632506855a1461019957806329ae8114146101c75780632a1d2b3c146101ff57806336569e771461021d575b600080fd5b6101656105d1565b6040518082815260200191505060405180910390f35b610183610a69565b6040518082815260200191505060405180910390f35b6101c5600480360360208110156101af57600080fd5b8101908080359060200190929190505050610a6f565b005b6101fd600480360360408110156101dd57600080fd5b810190808035906020019092919080359060200190929190505050610d0b565b005b610207610f6c565b6040518082815260200191505060405180910390f35b610225610f72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61026f610f98565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b9610fbe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610303610fe4565b6040518082815260200191505060405180910390f35b61035b6004803603602081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fea565b005b610365611190565b6040518082815260200191505060405180910390f35b610383611196565b005b6103b16004803603602081101561039b57600080fd5b8101908080359060200190929190505050611761565b005b6103bb611891565b6040518082815260200191505060405180910390f35b610413600480360360208110156103e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611897565b005b61041d6119c5565b6040518082815260200191505060405180910390f35b6104756004803603602081101561044957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db9565b6040518082815260200191505060405180910390f35b610493611dd1565b6040518082815260200191505060405180910390f35b6104d5600480360360208110156104bf57600080fd5b8101908080359060200190929190505050611dd7565b6040518082815260200191505060405180910390f35b6104f3611def565b6040518082815260200191505060405180910390f35b6105556004803603604081101561051f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611df5565b005b6105836004803603602081101561056d57600080fd5b81019080803590602001909291905050506121bf565b005b61058d6122b4565b6040518082815260200191505060405180910390f35b6105cf600480360360208110156105b957600080fd5b81019080803590602001909291905050506122ba565b005b60006106c36106bb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561067857600080fd5b505afa15801561068c573d6000803e3d6000fd5b505050506040513d60208110156106a257600080fd5b8101908080519060200190929190505050600a54612631565b600b54612631565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561076257600080fd5b505afa158015610776573d6000803e3d6000fd5b505050506040513d602081101561078c57600080fd5b81019080805190602001909291905050501015610811576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f566f772f696e73756666696369656e742d737572706c7573000000000000000081525060200191505060405180910390fd5b60006109036108fb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108b857600080fd5b505afa1580156108cc573d6000803e3d6000fd5b505050506040513d60208110156108e257600080fd5b810190808051906020019092919050505060055461264b565b60065461264b565b14610976576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f566f772f646562742d6e6f742d7a65726f00000000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca40c419600a5460006040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b1580156109f657600080fd5b505af1158015610a0a573d6000803e3d6000fd5b505050506040513d6020811015610a2057600080fd5b810190808051906020019092919050505090505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45090565b600b5481565b600654811115610ae7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d656e6f7567682d617368000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b8101908080519060200190929190505050811115610c36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f566f772f696e73756666696369656e742d737572706c7573000000000000000081525060200191505060405180910390fd5b610c426006548261264b565b600681905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f37ac61c826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610cbd57600080fd5b505af1158015610cd1573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610dbf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f7761697400000000000000000000000000000000000000000000000000000000821415610df35780600781905550610f35565b7f62756d7000000000000000000000000000000000000000000000000000000000821415610e275780600a81905550610f34565b7f73756d7000000000000000000000000000000000000000000000000000000000821415610e5b5780600981905550610f33565b7f64756d7000000000000000000000000000000000000000000000000000000000821415610e8f5780600881905550610f32565b7f68756d7000000000000000000000000000000000000000000000000000000000821415610ec35780600b81905550610f31565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f566f772f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461109e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600c5414611116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f566f772f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600a5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461124a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600c54146112c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f566f772f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c8190555060006005819055506000600681905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2f91af2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156113d957600080fd5b505afa1580156113ed573d6000803e3d6000fd5b505050506040513d602081101561140357600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561144a57600080fd5b505af115801561145e573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114cc57600080fd5b505af11580156114e0573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f37ac61c6116de600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156115c457600080fd5b505afa1580156115d8573d6000803e3d6000fd5b505050506040513d60208110156115ee57600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169e57600080fd5b505afa1580156116b2573d6000803e3d6000fd5b505050506040513d60208110156116c857600080fd5b8101908080519060200190929190505050612665565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561171457600080fd5b505af1158015611728573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611815576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b611832600460004281526020019081526020016000205482612631565b600460004281526020019081526020016000208190555061185560055482612631565b6005819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600c5481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461194b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6000611ab7611aaf600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a6c57600080fd5b505afa158015611a80573d6000803e3d6000fd5b505050506040513d6020811015611a9657600080fd5b810190808051906020019092919050505060055461264b565b60065461264b565b6009541115611b2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f566f772f696e73756666696369656e742d64656274000000000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b810190808051906020019092919050505014611c7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f566f772f737572706c75732d6e6f742d7a65726f00000000000000000000000081525060200191505060405180910390fd5b611c8b600654600954612631565b600681905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7e9cd24306008546009546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050602060405180830381600087803b158015611d4657600080fd5b505af1158015611d5a573d6000803e3d6000fd5b505050506040513d6020811015611d7057600080fd5b810190808051906020019092919050505090505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45090565b60006020528060005260406000206000915090505481565b60095481565b60046020528060005260406000206000915090505481565b60055481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611ea9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f566f772f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f666c6170706572000000000000000000000000000000000000000000000000008214156120ab57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc4d20fa600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611f9457600080fd5b505af1158015611fa8573d6000803e3d6000fd5b5050505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561208e57600080fd5b505af11580156120a2573d6000803e3d6000fd5b50505050612188565b7f666c6f70706572000000000000000000000000000000000000000000000000008214156121195780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612187565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f566f772f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b426121cc82600754612631565b1115612240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f566f772f776169742d6e6f742d66696e6973686564000000000000000000000081525060200191505060405180910390fd5b61225f600554600460008481526020019081526020016000205461264b565b600581905550600060046000838152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561235957600080fd5b505afa15801561236d573d6000803e3d6000fd5b505050506040513d602081101561238357600080fd5b8101908080519060200190929190505050811115612409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f566f772f696e73756666696369656e742d737572706c7573000000000000000081525060200191505060405180910390fd5b6124f96124f1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f059212a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124ae57600080fd5b505afa1580156124c2573d6000803e3d6000fd5b505050506040513d60208110156124d857600080fd5b810190808051906020019092919050505060055461264b565b60065461264b565b81111561256e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f566f772f696e73756666696369656e742d64656274000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f37ac61c826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156125e357600080fd5b505af11580156125f7573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600082828401915081101561264557600080fd5b92915050565b600082828403915081111561265f57600080fd5b92915050565b6000818311156126755781612677565b825b90509291505056fea265627a7a72315820c366742f39bbcf961239d704f4653337b9e0b1b5b9ce284e9e27a346452a7a9964736f6c634300050c0032") - - syntax Bytes ::= "Dai_bin" [macro] - // ---------------------------------- - rule Dai_bin => #parseByteStack("0x608060405234801561001057600080fd5b506040516120d33803806120d38339818101604052602081101561003357600080fd5b810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051808061208160529139605201905060405180910390206040518060400160405280600e81526020017f44616920537461626c65636f696e000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001955050505050506040516020818303038152906040528051906020012060058190555050611ee0806101a16000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80637ecebe00116100b8578063a9059cbb1161007c578063a9059cbb146106b4578063b753a98c1461071a578063bb35783b14610768578063bf353dbb146107d6578063dd62ed3e1461082e578063f2d5d56b146108a657610142565b80637ecebe00146104a15780638fcbaf0c146104f957806395d89b411461059f5780639c52a7f1146106225780639dc29fac1461066657610142565b8063313ce5671161010a578063313ce567146102f25780633644e5151461031657806340c10f191461033457806354fd4d501461038257806365fae35e1461040557806370a082311461044957610142565b806306fdde0314610147578063095ea7b3146101ca57806318160ddd1461023057806323b872dd1461024e57806330adf81f146102d4575b600080fd5b61014f6108f4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018f578082015181840152602081019050610174565b50505050905090810190601f1680156101bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610216600480360360408110156101e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061092d565b604051808215151515815260200191505060405180910390f35b610238610a1f565b6040518082815260200191505060405180910390f35b6102ba6004803603606081101561026457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a25565b604051808215151515815260200191505060405180910390f35b6102dc610f3a565b6040518082815260200191505060405180910390f35b6102fa610f61565b604051808260ff1660ff16815260200191505060405180910390f35b61031e610f66565b6040518082815260200191505060405180910390f35b6103806004803603604081101561034a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f6c565b005b61038a611128565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103ca5780820151818401526020810190506103af565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104476004803603602081101561041b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611161565b005b61048b6004803603602081101561045f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061128f565b6040518082815260200191505060405180910390f35b6104e3600480360360208110156104b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112a7565b6040518082815260200191505060405180910390f35b61059d600480360361010081101561051057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803515159060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506112bf565b005b6105a76117fa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e75780820151818401526020810190506105cc565b50505050905090810190601f1680156106145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106646004803603602081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611833565b005b6106b26004803603604081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611961565b005b610700600480360360408110156106ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611df4565b604051808215151515815260200191505060405180910390f35b6107666004803603604081101561073057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e09565b005b6107d46004803603606081101561077e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e19565b005b610818600480360360208110156107ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2a565b6040518082815260200191505060405180910390f35b6108906004803603604081101561084457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e42565b6040518082815260200191505060405180910390f35b6108f2600480360360408110156108bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e67565b005b6040518060400160405280600e81526020017f44616920537461626c65636f696e00000000000000000000000000000000000081525081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60015481565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610adc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4461692f696e73756666696369656e742d62616c616e6365000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610bb457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15610db25781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4461692f696e73756666696369656e742d616c6c6f77616e636500000000000081525060200191505060405180910390fd5b610d31600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e77565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610dfb600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e77565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e87600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e91565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b7fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb60001b81565b601281565b60055481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b611069600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611e91565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110b860015482611e91565b6001819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611215576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60026020528060005260406000206000915090505481565b60046020528060005260406000206000915090505481565b60006005547fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb60001b8a8a8a8a8a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018215151515815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561148c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4461692f696e76616c69642d616464726573732d30000000000000000000000081525060200191505060405180910390fd5b60018185858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156114e9573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611593576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f696e76616c69642d7065726d6974000000000000000000000000000081525060200191505060405180910390fd5b60008614806115a25750854211155b611614576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f7065726d69742d65787069726564000000000000000000000000000081525060200191505060405180910390fd5b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505587146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4461692f696e76616c69642d6e6f6e636500000000000000000000000000000081525060200191505060405180910390fd5b6000856116e4576000611706565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b905080600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050505050505050565b6040518060400160405280600381526020017f444149000000000000000000000000000000000000000000000000000000000081525081565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4461692f696e73756666696369656e742d62616c616e6365000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611aee57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15611cec5780600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611be5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4461692f696e73756666696369656e742d616c6c6f77616e636500000000000081525060200191505060405180910390fd5b611c6b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611e77565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611d35600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611e77565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d8460015482611e77565b600181905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611e01338484610a25565b905092915050565b611e14338383610a25565b505050565b611e24838383610a25565b50505050565b60006020528060005260406000206000915090505481565b6003602052816000526040600020602052806000526040600020600091509150505481565b611e72823383610a25565b505050565b6000828284039150811115611e8b57600080fd5b92915050565b6000828284019150811015611ea557600080fd5b9291505056fea265627a7a7231582015335e6e193a1854a8470540d118909ce058e2503b1be6f4d55d85de83c689ea64736f6c634300050c0032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429") - - syntax Bytes ::= "Dai_bin_runtime" [macro] - // ------------------------------------------ - rule Dai_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106101425760003560e01c80637ecebe00116100b8578063a9059cbb1161007c578063a9059cbb146106b4578063b753a98c1461071a578063bb35783b14610768578063bf353dbb146107d6578063dd62ed3e1461082e578063f2d5d56b146108a657610142565b80637ecebe00146104a15780638fcbaf0c146104f957806395d89b411461059f5780639c52a7f1146106225780639dc29fac1461066657610142565b8063313ce5671161010a578063313ce567146102f25780633644e5151461031657806340c10f191461033457806354fd4d501461038257806365fae35e1461040557806370a082311461044957610142565b806306fdde0314610147578063095ea7b3146101ca57806318160ddd1461023057806323b872dd1461024e57806330adf81f146102d4575b600080fd5b61014f6108f4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018f578082015181840152602081019050610174565b50505050905090810190601f1680156101bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610216600480360360408110156101e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061092d565b604051808215151515815260200191505060405180910390f35b610238610a1f565b6040518082815260200191505060405180910390f35b6102ba6004803603606081101561026457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a25565b604051808215151515815260200191505060405180910390f35b6102dc610f3a565b6040518082815260200191505060405180910390f35b6102fa610f61565b604051808260ff1660ff16815260200191505060405180910390f35b61031e610f66565b6040518082815260200191505060405180910390f35b6103806004803603604081101561034a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f6c565b005b61038a611128565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103ca5780820151818401526020810190506103af565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104476004803603602081101561041b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611161565b005b61048b6004803603602081101561045f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061128f565b6040518082815260200191505060405180910390f35b6104e3600480360360208110156104b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112a7565b6040518082815260200191505060405180910390f35b61059d600480360361010081101561051057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803515159060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506112bf565b005b6105a76117fa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e75780820151818401526020810190506105cc565b50505050905090810190601f1680156106145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106646004803603602081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611833565b005b6106b26004803603604081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611961565b005b610700600480360360408110156106ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611df4565b604051808215151515815260200191505060405180910390f35b6107666004803603604081101561073057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e09565b005b6107d46004803603606081101561077e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e19565b005b610818600480360360208110156107ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2a565b6040518082815260200191505060405180910390f35b6108906004803603604081101561084457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e42565b6040518082815260200191505060405180910390f35b6108f2600480360360408110156108bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e67565b005b6040518060400160405280600e81526020017f44616920537461626c65636f696e00000000000000000000000000000000000081525081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60015481565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610adc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4461692f696e73756666696369656e742d62616c616e6365000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610bb457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15610db25781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4461692f696e73756666696369656e742d616c6c6f77616e636500000000000081525060200191505060405180910390fd5b610d31600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e77565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610dfb600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e77565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e87600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e91565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b7fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb60001b81565b601281565b60055481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b611069600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611e91565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110b860015482611e91565b6001819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611215576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60026020528060005260406000206000915090505481565b60046020528060005260406000206000915090505481565b60006005547fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb60001b8a8a8a8a8a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018215151515815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561148c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4461692f696e76616c69642d616464726573732d30000000000000000000000081525060200191505060405180910390fd5b60018185858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156114e9573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611593576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f696e76616c69642d7065726d6974000000000000000000000000000081525060200191505060405180910390fd5b60008614806115a25750854211155b611614576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f7065726d69742d65787069726564000000000000000000000000000081525060200191505060405180910390fd5b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505587146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4461692f696e76616c69642d6e6f6e636500000000000000000000000000000081525060200191505060405180910390fd5b6000856116e4576000611706565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b905080600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050505050505050565b6040518060400160405280600381526020017f444149000000000000000000000000000000000000000000000000000000000081525081565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4461692f696e73756666696369656e742d62616c616e6365000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611aee57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15611cec5780600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611be5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4461692f696e73756666696369656e742d616c6c6f77616e636500000000000081525060200191505060405180910390fd5b611c6b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611e77565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611d35600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611e77565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d8460015482611e77565b600181905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611e01338484610a25565b905092915050565b611e14338383610a25565b505050565b611e24838383610a25565b50505050565b60006020528060005260406000206000915090505481565b6003602052816000526040600020602052806000526040600020600091509150505481565b611e72823383610a25565b505050565b6000828284039150811115611e8b57600080fd5b92915050565b6000828284019150811015611ea557600080fd5b9291505056fea265627a7a7231582015335e6e193a1854a8470540d118909ce058e2503b1be6f4d55d85de83c689ea64736f6c634300050c0032") - - syntax Bytes ::= "Jug_bin" [macro] - // ---------------------------------- - rule Jug_bin => #parseByteStack("0x608060405234801561001057600080fd5b5060405161131b38038061131b8339818101604052602081101561003357600080fd5b810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611242806100d96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063626cb3c511610071578063626cb3c51461020b57806365fae35e146102555780639c52a7f114610299578063bf353dbb146102dd578063d4e8be8314610335578063d9638d3614610383576100b4565b80631a0b287e146100b957806329ae8114146100fb57806336569e77146101335780633b6631951461017d57806344e2a5a8146101ab5780635001f3b5146101ed575b600080fd5b6100f9600480360360608110156100cf57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506103cc565b005b6101316004803603604081101561011157600080fd5b8101908080359060200190929190803590602001909291905050506105f9565b005b61013b610786565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101a96004803603602081101561019357600080fd5b81019080803590602001909291905050506107ac565b005b6101d7600480360360208110156101c157600080fd5b8101908080359060200190929190505050610946565b6040518082815260200191505060405180910390f35b6101f5610c35565b6040518082815260200191505060405180910390f35b610213610c3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102976004803603602081101561026b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c61565b005b6102db600480360360208110156102af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d8f565b005b61031f600480360360208110156102f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ebd565b6040518082815260200191505060405180910390f35b6103816004803603604081101561034b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ed5565b005b6103af6004803603602081101561039957600080fd5b810190808035906020019092919050505061109c565b604051808381526020018281526020019250505060405180910390f35b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610480576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010154421461050b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4a75672f72686f2d6e6f742d757064617465640000000000000000000000000081525060200191505060405180910390fd5b7f6475747900000000000000000000000000000000000000000000000000000000821415610553578060016000858152602001908152602001600020600001819055506105c1565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4a75672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f62617365000000000000000000000000000000000000000000000000000000008214156106e1578060048190555061074f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4a75672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600060016000838152602001908152602001600020905060008160000154146108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4a75672f696c6b2d616c72656164792d696e697400000000000000000000000081525060200191505060405180910390fd5b6b033b2e3c9fd0803ce80000008160000181905550428160010181905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600060016000838152602001908152602001600020600101544210156109d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4a75672f696e76616c69642d6e6f77000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b8152600401808281526020019150506040805180830381600087803b158015610a4a57600080fd5b505af1158015610a5e573d6000803e3d6000fd5b505050506040513d6040811015610a7457600080fd5b810190808051906020019092919080519060200190929190505050915050610aeb610ae5610aba60045460016000888152602001908152602001600020600001546110c0565b600160008781526020019081526020016000206001015442036b033b2e3c9fd0803ce80000006110da565b826111a0565b9150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b65337df84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b5986866111e5565b6040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610bc957600080fd5b505af1158015610bdd573d6000803e3d6000fd5b50505050426001600085815260200190815260200160002060010181905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450919050565b60045481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f766f770000000000000000000000000000000000000000000000000000000000821415610ff75780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611065565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4a75672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016020528060005260406000206000915090508060000154908060010154905082565b60008183019050828110156110d457600080fd5b92915050565b600083600081146111805760028406600081146110f9578592506110fd565b8392505b50600283046002850494505b841561117a57858602868782041461112057600080fd5b8181018181101561113057600080fd5b8581049750600287061561116d57878502858982041415891515161561115557600080fd5b8381018181101561116557600080fd5b878104965050505b5050600285049450611109565b50611198565b83600081146111925760009250611196565b8392505b505b509392505050565b6000818302905060008214806111be5750828282816111bb57fe5b04145b6111c757600080fd5b6b033b2e3c9fd0803ce800000081816111dc57fe5b04905092915050565b60008183039050600083121580156111fe575060008212155b61120757600080fd5b9291505056fea265627a7a72315820171ca196f7d984fd5da28988be1d8174b37ded44b773b6dd0e886c788d5546c164736f6c634300050c0032") - - syntax Bytes ::= "Jug_bin_runtime" [macro] - // ------------------------------------------ - rule Jug_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063626cb3c511610071578063626cb3c51461020b57806365fae35e146102555780639c52a7f114610299578063bf353dbb146102dd578063d4e8be8314610335578063d9638d3614610383576100b4565b80631a0b287e146100b957806329ae8114146100fb57806336569e77146101335780633b6631951461017d57806344e2a5a8146101ab5780635001f3b5146101ed575b600080fd5b6100f9600480360360608110156100cf57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506103cc565b005b6101316004803603604081101561011157600080fd5b8101908080359060200190929190803590602001909291905050506105f9565b005b61013b610786565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101a96004803603602081101561019357600080fd5b81019080803590602001909291905050506107ac565b005b6101d7600480360360208110156101c157600080fd5b8101908080359060200190929190505050610946565b6040518082815260200191505060405180910390f35b6101f5610c35565b6040518082815260200191505060405180910390f35b610213610c3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102976004803603602081101561026b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c61565b005b6102db600480360360208110156102af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d8f565b005b61031f600480360360208110156102f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ebd565b6040518082815260200191505060405180910390f35b6103816004803603604081101561034b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ed5565b005b6103af6004803603602081101561039957600080fd5b810190808035906020019092919050505061109c565b604051808381526020018281526020019250505060405180910390f35b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610480576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010154421461050b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4a75672f72686f2d6e6f742d757064617465640000000000000000000000000081525060200191505060405180910390fd5b7f6475747900000000000000000000000000000000000000000000000000000000821415610553578060016000858152602001908152602001600020600001819055506105c1565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4a75672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f62617365000000000000000000000000000000000000000000000000000000008214156106e1578060048190555061074f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4a75672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600060016000838152602001908152602001600020905060008160000154146108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4a75672f696c6b2d616c72656164792d696e697400000000000000000000000081525060200191505060405180910390fd5b6b033b2e3c9fd0803ce80000008160000181905550428160010181905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600060016000838152602001908152602001600020600101544210156109d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4a75672f696e76616c69642d6e6f77000000000000000000000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b8152600401808281526020019150506040805180830381600087803b158015610a4a57600080fd5b505af1158015610a5e573d6000803e3d6000fd5b505050506040513d6040811015610a7457600080fd5b810190808051906020019092919080519060200190929190505050915050610aeb610ae5610aba60045460016000888152602001908152602001600020600001546110c0565b600160008781526020019081526020016000206001015442036b033b2e3c9fd0803ce80000006110da565b826111a0565b9150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b65337df84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b5986866111e5565b6040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610bc957600080fd5b505af1158015610bdd573d6000803e3d6000fd5b50505050426001600085815260200190815260200160002060010181905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450919050565b60045481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4a75672f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f766f770000000000000000000000000000000000000000000000000000000000821415610ff75780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611065565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4a75672f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016020528060005260406000206000915090508060000154908060010154905082565b60008183019050828110156110d457600080fd5b92915050565b600083600081146111805760028406600081146110f9578592506110fd565b8392505b50600283046002850494505b841561117a57858602868782041461112057600080fd5b8181018181101561113057600080fd5b8581049750600287061561116d57878502858982041415891515161561115557600080fd5b8381018181101561116557600080fd5b878104965050505b5050600285049450611109565b50611198565b83600081146111925760009250611196565b8392505b505b509392505050565b6000818302905060008214806111be5750828282816111bb57fe5b04145b6111c757600080fd5b6b033b2e3c9fd0803ce800000081816111dc57fe5b04905092915050565b60008183039050600083121580156111fe575060008212155b61120757600080fd5b9291505056fea265627a7a72315820171ca196f7d984fd5da28988be1d8174b37ded44b773b6dd0e886c788d5546c164736f6c634300050c0032") - - syntax Bytes ::= "Pot_bin" [macro] - // ---------------------------------- - rule Pot_bin => #parseByteStack("0x608060405234801561001057600080fd5b506040516115853803806115858339818101604052602081101561003357600080fd5b810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce80000006003819055506b033b2e3c9fd0803ce8000000600481905550426007819055506001600881905550506114778061010e6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806365fae35e116100a25780639c52a7f1116100715780639c52a7f1146103565780639f678cca1461039a578063bf353dbb146103b8578063c92aecc414610410578063d4e8be831461042e5761010b565b806365fae35e146102bc57806369245009146103005780637f8661a11461030a578063957aa58c146103385761010b565b80632c69ed58116100de5780632c69ed58146101ec57806336569e771461020a578063487bf08214610254578063626cb3c5146102725761010b565b8063049878f3146101105780630bebac861461013e57806320aba08b1461019657806329ae8114146101b4575b600080fd5b61013c6004803603602081101561012657600080fd5b810190808035906020019092919050505061047c565b005b6101806004803603602081101561015457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106c7565b6040518082815260200191505060405180910390f35b61019e6106df565b6040518082815260200191505060405180910390f35b6101ea600480360360408110156101ca57600080fd5b8101908080359060200190929190803590602001909291905050506106e5565b005b6101f4610961565b6040518082815260200191505060405180910390f35b610212610967565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61025c61098d565b6040518082815260200191505060405180910390f35b61027a610993565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b9565b005b610308610ae7565b005b6103366004803603602081101561032057600080fd5b8101908080359060200190929190505050610beb565b005b610340610dbf565b6040518082815260200191505060405180910390f35b6103986004803603602081101561036c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc5565b005b6103a2610ef3565b6040518082815260200191505060405180910390f35b6103fa600480360360208110156103ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061110e565b6040518082815260200191505060405180910390f35b610418611126565b6040518082815260200191505060405180910390f35b61047a6004803603604081101561044457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112c565b005b60075442146104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f506f742f72686f2d6e6f742d757064617465640000000000000000000000000081525060200191505060405180910390fd5b61053c600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826112f3565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061058b600254826112f3565b600281905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b33306105dd6004548661130d565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561067957600080fd5b505af115801561068d573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016020528060005260406000206000915090505481565b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610799576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600160085414610811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f506f742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6007544214610888576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f506f742f72686f2d6e6f742d757064617465640000000000000000000000000081525060200191505060405180910390fd5b7f64737200000000000000000000000000000000000000000000000000000000008214156108bc578060038190555061092a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f506f742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60025481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006008819055506b033b2e3c9fd0803ce80000006003819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b610c34600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611339565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c8360025482611339565b600281905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3033610cd56004548661130d565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6000600754421015610f6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506f742f696e76616c69642d6e6f77000000000000000000000000000000000081525060200191505060405180910390fd5b610f95610f8d60035460075442036b033b2e3c9fd0803ce8000000611353565b600454611419565b90506000610fa582600454611339565b90508160048190555042600781905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306110236002548661130d565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156110bf57600080fd5b505af11580156110d3573d6000803e3d6000fd5b50505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45090565b60006020528060005260406000206000915090505481565b60045481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f766f77000000000000000000000000000000000000000000000000000000000082141561124e5780600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112bc565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f506f742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600082828401915081101561130757600080fd5b92915050565b60008082148061132a575082828385029250828161132757fe5b04145b61133357600080fd5b92915050565b600082828403915081111561134d57600080fd5b92915050565b600083600081146113f957600284066000811461137257859250611376565b8392505b50600283046002850494505b84156113f357858602868782041461139957600080fd5b818101818110156113a957600080fd5b858104975060028706156113e65787850285898204141589151516156113ce57600080fd5b838101818110156113de57600080fd5b878104965050505b5050600285049450611382565b50611411565b836000811461140b576000925061140f565b8392505b505b509392505050565b60006b033b2e3c9fd0803ce8000000611432848461130d565b8161143957fe5b0490509291505056fea265627a7a7231582012ac9f56855a6b6dcac6ac82b295c79e4a756291f2c4de00facc30dd4796636c64736f6c634300050c0032") - - syntax Bytes ::= "Pot_bin_runtime" [macro] - // ------------------------------------------ - rule Pot_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806365fae35e116100a25780639c52a7f1116100715780639c52a7f1146103565780639f678cca1461039a578063bf353dbb146103b8578063c92aecc414610410578063d4e8be831461042e5761010b565b806365fae35e146102bc57806369245009146103005780637f8661a11461030a578063957aa58c146103385761010b565b80632c69ed58116100de5780632c69ed58146101ec57806336569e771461020a578063487bf08214610254578063626cb3c5146102725761010b565b8063049878f3146101105780630bebac861461013e57806320aba08b1461019657806329ae8114146101b4575b600080fd5b61013c6004803603602081101561012657600080fd5b810190808035906020019092919050505061047c565b005b6101806004803603602081101561015457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106c7565b6040518082815260200191505060405180910390f35b61019e6106df565b6040518082815260200191505060405180910390f35b6101ea600480360360408110156101ca57600080fd5b8101908080359060200190929190803590602001909291905050506106e5565b005b6101f4610961565b6040518082815260200191505060405180910390f35b610212610967565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61025c61098d565b6040518082815260200191505060405180910390f35b61027a610993565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b9565b005b610308610ae7565b005b6103366004803603602081101561032057600080fd5b8101908080359060200190929190505050610beb565b005b610340610dbf565b6040518082815260200191505060405180910390f35b6103986004803603602081101561036c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc5565b005b6103a2610ef3565b6040518082815260200191505060405180910390f35b6103fa600480360360208110156103ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061110e565b6040518082815260200191505060405180910390f35b610418611126565b6040518082815260200191505060405180910390f35b61047a6004803603604081101561044457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112c565b005b60075442146104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f506f742f72686f2d6e6f742d757064617465640000000000000000000000000081525060200191505060405180910390fd5b61053c600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826112f3565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061058b600254826112f3565b600281905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b33306105dd6004548661130d565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561067957600080fd5b505af115801561068d573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016020528060005260406000206000915090505481565b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610799576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600160085414610811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f506f742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b6007544214610888576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f506f742f72686f2d6e6f742d757064617465640000000000000000000000000081525060200191505060405180910390fd5b7f64737200000000000000000000000000000000000000000000000000000000008214156108bc578060038190555061092a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f506f742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60025481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006008819055506b033b2e3c9fd0803ce80000006003819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b610c34600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611339565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c8360025482611339565b600281905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3033610cd56004548661130d565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6000600754421015610f6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506f742f696e76616c69642d6e6f77000000000000000000000000000000000081525060200191505060405180910390fd5b610f95610f8d60035460075442036b033b2e3c9fd0803ce8000000611353565b600454611419565b90506000610fa582600454611339565b90508160048190555042600781905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306110236002548661130d565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156110bf57600080fd5b505af11580156110d3573d6000803e3d6000fd5b50505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45090565b60006020528060005260406000206000915090505481565b60045481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f506f742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f766f77000000000000000000000000000000000000000000000000000000000082141561124e5780600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112bc565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f506f742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600082828401915081101561130757600080fd5b92915050565b60008082148061132a575082828385029250828161132757fe5b04145b61133357600080fd5b92915050565b600082828403915081111561134d57600080fd5b92915050565b600083600081146113f957600284066000811461137257859250611376565b8392505b50600283046002850494505b84156113f357858602868782041461139957600080fd5b818101818110156113a957600080fd5b858104975060028706156113e65787850285898204141589151516156113ce57600080fd5b838101818110156113de57600080fd5b878104965050505b5050600285049450611382565b50611411565b836000811461140b576000925061140f565b8392505b505b509392505050565b60006b033b2e3c9fd0803ce8000000611432848461130d565b8161143957fe5b0490509291505056fea265627a7a7231582012ac9f56855a6b6dcac6ac82b295c79e4a756291f2c4de00facc30dd4796636c64736f6c634300050c0032") - - syntax Bytes ::= "Cat_bin" [macro] - // ---------------------------------- - rule Cat_bin => #parseByteStack("0x608060405234801561001057600080fd5b5060405161190b38038061190b8339818101604052602081101561003357600080fd5b810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016002819055505061182a806100e16000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063957aa58c11610071578063957aa58c1461023f5780639c52a7f11461025d578063bf353dbb146102a1578063d4e8be83146102f9578063d9638d3614610347578063ebecb39d146103c3576100b4565b80631a0b287e146100b957806336569e77146100fb57806345cf223014610145578063626cb3c5146101a757806365fae35e146101f15780636924500914610235575b600080fd5b6100f9600480360360608110156100cf57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061041b565b005b610103610606565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101916004803603604081101561015b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061062c565b6040518082815260200191505060405180910390f35b6101af610e5e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102336004803603602081101561020757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e84565b005b61023d610fb2565b005b6102476110a3565b6040518082815260200191505060405180910390f35b61029f6004803603602081101561027357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a9565b005b6102e3600480360360208110156102b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111d7565b6040518082815260200191505060405180910390f35b6103456004803603604081101561030f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ef565b005b6103736004803603602081101561035d57600080fd5b81019080803590602001909291905050506113b6565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b610419600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611400565b005b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146104cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f63686f7000000000000000000000000000000000000000000000000000000000821415610517578060016000858152602001908152602001600020600101819055506105ce565b7f6c756d700000000000000000000000000000000000000000000000000000000082141561055f578060016000858152602001908152602001600020600201819055506105cd565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4361742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36866040518263ffffffff1660e01b81526004018082815260200191505060606040518083038186803b1580156106a457600080fd5b505afa1580156106b8573d6000803e3d6000fd5b505050506040513d60608110156106ce57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050509250925050600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c88886040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b1580156107a157600080fd5b505afa1580156107b5573d6000803e3d6000fd5b505050506040513d60408110156107cb57600080fd5b81019080805190602001909291908051906020019092919050505091509150600160025414610862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4361742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008311801561088357506108778185611784565b6108818385611784565b105b6108f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4361742f6e6f742d756e7361666500000000000000000000000000000000000081525060200191505060405180910390fd5b600061091783600160008b8152602001908152602001600020600201546117b0565b905061093582846109288486611784565b8161092f57fe5b046117b0565b91507f8000000000000000000000000000000000000000000000000000000000000000811115801561098757507f80000000000000000000000000000000000000000000000000000000000000008211155b6109f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4361742f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40898930600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600003886000036040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015610b4257600080fd5b505af1158015610b56573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663697efb78610ba28488611784565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b505050506001600089815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663351de60088600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c8f610c73878b611784565b600160008f8152602001908152602001600020600101546117cc565b8560006040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200195505050505050602060405180830381600087803b158015610d3c57600080fd5b505af1158015610d50573d6000803e3d6000fd5b505050506040513d6020811015610d6657600080fd5b810190808051906020019092919050505095508673ffffffffffffffffffffffffffffffffffffffff16887fa716da86bc1fb6d43d1493373f34d7a418b619681cd7b90f7ea667ba1489be288385610dbe878b611784565b600160008f815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c604051808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390a3505050505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611066576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006002819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60025481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461115d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f766f7700000000000000000000000000000000000000000000000000000000008214156113115780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061137f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4361742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f666c6970000000000000000000000000000000000000000000000000000000008214156116de57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc4d20fa6001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156115b357600080fd5b505af11580156115c7573d6000803e3d6000fd5b50505050806001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156116c157600080fd5b505af11580156116d5573d6000803e3d6000fd5b5050505061174c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4361742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b6000808214806117a1575082828385029250828161179e57fe5b04145b6117aa57600080fd5b92915050565b6000818311156117c2578190506117c6565b8290505b92915050565b60006b033b2e3c9fd0803ce80000006117e58484611784565b816117ec57fe5b0490509291505056fea265627a7a72315820bf13a907e197c5e2f2ca0698f7608d926c495a6d2070dec1e9437d77ba4c155764736f6c634300050c0032") - - syntax Bytes ::= "Cat_bin_runtime" [macro] - // ------------------------------------------ - rule Cat_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063957aa58c11610071578063957aa58c1461023f5780639c52a7f11461025d578063bf353dbb146102a1578063d4e8be83146102f9578063d9638d3614610347578063ebecb39d146103c3576100b4565b80631a0b287e146100b957806336569e77146100fb57806345cf223014610145578063626cb3c5146101a757806365fae35e146101f15780636924500914610235575b600080fd5b6100f9600480360360608110156100cf57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061041b565b005b610103610606565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101916004803603604081101561015b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061062c565b6040518082815260200191505060405180910390f35b6101af610e5e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102336004803603602081101561020757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e84565b005b61023d610fb2565b005b6102476110a3565b6040518082815260200191505060405180910390f35b61029f6004803603602081101561027357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a9565b005b6102e3600480360360208110156102b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111d7565b6040518082815260200191505060405180910390f35b6103456004803603604081101561030f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ef565b005b6103736004803603602081101561035d57600080fd5b81019080803590602001909291905050506113b6565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b610419600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611400565b005b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146104cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f63686f7000000000000000000000000000000000000000000000000000000000821415610517578060016000858152602001908152602001600020600101819055506105ce565b7f6c756d700000000000000000000000000000000000000000000000000000000082141561055f578060016000858152602001908152602001600020600201819055506105cd565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4361742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36866040518263ffffffff1660e01b81526004018082815260200191505060606040518083038186803b1580156106a457600080fd5b505afa1580156106b8573d6000803e3d6000fd5b505050506040513d60608110156106ce57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050509250925050600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c88886040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b1580156107a157600080fd5b505afa1580156107b5573d6000803e3d6000fd5b505050506040513d60408110156107cb57600080fd5b81019080805190602001909291908051906020019092919050505091509150600160025414610862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4361742f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008311801561088357506108778185611784565b6108818385611784565b105b6108f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4361742f6e6f742d756e7361666500000000000000000000000000000000000081525060200191505060405180910390fd5b600061091783600160008b8152602001908152602001600020600201546117b0565b905061093582846109288486611784565b8161092f57fe5b046117b0565b91507f8000000000000000000000000000000000000000000000000000000000000000811115801561098757507f80000000000000000000000000000000000000000000000000000000000000008211155b6109f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4361742f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40898930600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600003886000036040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015610b4257600080fd5b505af1158015610b56573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663697efb78610ba28488611784565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b505050506001600089815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663351de60088600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c8f610c73878b611784565b600160008f8152602001908152602001600020600101546117cc565b8560006040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200195505050505050602060405180830381600087803b158015610d3c57600080fd5b505af1158015610d50573d6000803e3d6000fd5b505050506040513d6020811015610d6657600080fd5b810190808051906020019092919050505095508673ffffffffffffffffffffffffffffffffffffffff16887fa716da86bc1fb6d43d1493373f34d7a418b619681cd7b90f7ea667ba1489be288385610dbe878b611784565b600160008f815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c604051808681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390a3505050505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611066576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60006002819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60025481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461115d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f766f7700000000000000000000000000000000000000000000000000000000008214156113115780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061137f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4361742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4361742f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b7f666c6970000000000000000000000000000000000000000000000000000000008214156116de57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc4d20fa6001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156115b357600080fd5b505af11580156115c7573d6000803e3d6000fd5b50505050806001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156116c157600080fd5b505af11580156116d5573d6000803e3d6000fd5b5050505061174c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4361742f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b6000808214806117a1575082828385029250828161179e57fe5b04145b6117aa57600080fd5b92915050565b6000818311156117c2578190506117c6565b8290505b92915050565b60006b033b2e3c9fd0803ce80000006117e58484611784565b816117ec57fe5b0490509291505056fea265627a7a72315820bf13a907e197c5e2f2ca0698f7608d926c495a6d2070dec1e9437d77ba4c155764736f6c634300050c0032") - - syntax Bytes ::= "GemJoin_bin" [macro] - // -------------------------------------- - rule GemJoin_bin => #parseByteStack("0x608060405234801561001057600080fd5b50604051610f6e380380610f6e8339818101604052606081101561003357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160058190555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160028190555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561019557600080fd5b505afa1580156101a9573d6000803e3d6000fd5b505050506040513d60208110156101bf57600080fd5b8101908080519060200190929190505050600481905550505050610d86806101e86000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063957aa58c11610071578063957aa58c146101de5780639c52a7f1146101fc578063b3bcfa8214610240578063bf353dbb1461025e578063c5ce281e146102b6578063ef693bed146102d4576100a9565b806336569e77146100ae5780633b4da69f146100f857806365fae35e14610146578063692450091461018a5780637bd2bea714610194575b600080fd5b6100b6610322565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101446004803603604081101561010e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610348565b005b6101886004803603602081101561015c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106c3565b005b6101926107f1565b005b61019c6108e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101e6610908565b6040518082815260200191505060405180910390f35b61023e6004803603602081101561021257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090e565b005b610248610a3c565b6040518082815260200191505060405180910390f35b6102a06004803603602081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a42565b6040518082815260200191505060405180910390f35b6102be610a5a565b6040518082815260200191505060405180910390f35b610320600480360360408110156102ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a60565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001600554146103c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f47656d4a6f696e2f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b6000811215610437576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f47656d4a6f696e2f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cdd3fde60025484846040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156104ea57600080fd5b505af11580156104fe573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156105df57600080fd5b505af11580156105f3573d6000803e3d6000fd5b505050506040513d602081101561060957600080fd5b810190808051906020019092919050505061068c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f47656d4a6f696e2f6661696c65642d7472616e7366657200000000000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610777576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f47656d4a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f47656d4a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60006005819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f47656d4a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60045481565b60006020528060005260406000206000915090505481565b60025481565b7f8000000000000000000000000000000000000000000000000000000000000000811115610af6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f47656d4a6f696e2f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cdd3fde60025433846000036040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610bac57600080fd5b505af1158015610bc0573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b505050506040513d6020811015610c9757600080fd5b8101908080519060200190929190505050610d1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f47656d4a6f696e2f6661696c65642d7472616e7366657200000000000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505056fea265627a7a7231582083bed50269f5c3d47da587567ef8517765519d503bc3b3b987308aac27d16fb564736f6c634300050c0032") - - syntax Bytes ::= "GemJoin_bin_runtime" [macro] - // ---------------------------------------------- - rule GemJoin_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063957aa58c11610071578063957aa58c146101de5780639c52a7f1146101fc578063b3bcfa8214610240578063bf353dbb1461025e578063c5ce281e146102b6578063ef693bed146102d4576100a9565b806336569e77146100ae5780633b4da69f146100f857806365fae35e14610146578063692450091461018a5780637bd2bea714610194575b600080fd5b6100b6610322565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101446004803603604081101561010e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610348565b005b6101886004803603602081101561015c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106c3565b005b6101926107f1565b005b61019c6108e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101e6610908565b6040518082815260200191505060405180910390f35b61023e6004803603602081101561021257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090e565b005b610248610a3c565b6040518082815260200191505060405180910390f35b6102a06004803603602081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a42565b6040518082815260200191505060405180910390f35b6102be610a5a565b6040518082815260200191505060405180910390f35b610320600480360360408110156102ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a60565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001600554146103c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f47656d4a6f696e2f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b6000811215610437576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f47656d4a6f696e2f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cdd3fde60025484846040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156104ea57600080fd5b505af11580156104fe573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156105df57600080fd5b505af11580156105f3573d6000803e3d6000fd5b505050506040513d602081101561060957600080fd5b810190808051906020019092919050505061068c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f47656d4a6f696e2f6661696c65642d7472616e7366657200000000000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610777576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f47656d4a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f47656d4a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60006005819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f47656d4a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60045481565b60006020528060005260406000206000915090505481565b60025481565b7f8000000000000000000000000000000000000000000000000000000000000000811115610af6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f47656d4a6f696e2f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cdd3fde60025433846000036040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610bac57600080fd5b505af1158015610bc0573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b505050506040513d6020811015610c9757600080fd5b8101908080519060200190929190505050610d1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f47656d4a6f696e2f6661696c65642d7472616e7366657200000000000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505056fea265627a7a7231582083bed50269f5c3d47da587567ef8517765519d503bc3b3b987308aac27d16fb564736f6c634300050c0032") - - syntax Bytes ::= "DaiJoin_bin" [macro] - // -------------------------------------- - rule DaiJoin_bin => #parseByteStack("0x608060405234801561001057600080fd5b50604051610c91380380610c918339818101604052604081101561003357600080fd5b81019080805190602001909291908051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160038190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610b648061012d6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063957aa58c11610066578063957aa58c1461017e5780639c52a7f11461019c578063bf353dbb146101e0578063ef693bed14610238578063f4b9fa751461028657610093565b806336569e77146100985780633b4da69f146100e257806365fae35e146101305780636924500914610174575b600080fd5b6100a06102d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61012e600480360360408110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506102f6565b005b6101726004803603602081101561014657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f8565b005b61017c610626565b005b610186610717565b6040518082815260200191505060405180910390f35b6101de600480360360208110156101b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061071d565b005b610222600480360360208110156101f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084b565b6040518082815260200191505060405180910390f35b6102846004803603604081101561024e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610863565b005b61028e610add565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b308461034c6b033b2e3c9fd0803ce800000086610b03565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156103e857600080fd5b505af11580156103fc573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156104a957600080fd5b505af11580156104bd573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146105ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4461694a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4461694a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60006003819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60035481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4461694a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b6001600354146108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4461694a6f696e2f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b33306109316b033b2e3c9fd0803ce800000086610b03565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156109cd57600080fd5b505af11580156109e1573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080821480610b205750828283850292508281610b1d57fe5b04145b610b2957600080fd5b9291505056fea265627a7a72315820973dce5b6612fe5d6b238645cf5425fa1ac980b80540dc1346c9437a243f73b564736f6c634300050c0032") - - syntax Bytes ::= "DaiJoin_bin_runtime" [macro] - // ---------------------------------------------- - rule DaiJoin_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063957aa58c11610066578063957aa58c1461017e5780639c52a7f11461019c578063bf353dbb146101e0578063ef693bed14610238578063f4b9fa751461028657610093565b806336569e77146100985780633b4da69f146100e257806365fae35e146101305780636924500914610174575b600080fd5b6100a06102d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61012e600480360360408110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506102f6565b005b6101726004803603602081101561014657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f8565b005b61017c610626565b005b610186610717565b6040518082815260200191505060405180910390f35b6101de600480360360208110156101b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061071d565b005b610222600480360360208110156101f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084b565b6040518082815260200191505060405180910390f35b6102846004803603604081101561024e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610863565b005b61028e610add565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b308461034c6b033b2e3c9fd0803ce800000086610b03565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156103e857600080fd5b505af11580156103fc573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156104a957600080fd5b505af11580156104bd573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146105ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4461694a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4461694a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60006003819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60035481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4461694a6f696e2f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b6001600354146108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4461694a6f696e2f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b33306109316b033b2e3c9fd0803ce800000086610b03565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156109cd57600080fd5b505af11580156109e1573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080821480610b205750828283850292508281610b1d57fe5b04145b610b2957600080fd5b9291505056fea265627a7a72315820973dce5b6612fe5d6b238645cf5425fa1ac980b80540dc1346c9437a243f73b564736f6c634300050c0032") - - syntax Bytes ::= "Flipper_bin" [macro] - // -------------------------------------- - rule Flipper_bin => #parseByteStack("0x6080604052670e92596fd6290000600455612a30600560006101000a81548165ffffffffffff021916908365ffffffffffff1602179055506202a300600560066101000a81548165ffffffffffff021916908365ffffffffffff160217905550600060065534801561007057600080fd5b50604051612e30380380612e308339818101604052604081101561009357600080fd5b81019080805190602001909291908051906020019092919050505081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060038190555060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050612ce58061014b6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806365fae35e116100a2578063c5ce281e11610071578063c5ce281e1461051d578063c959c42b1461053b578063cfc4af5514610569578063cfdd330214610597578063fc7b6aee146105b55761010b565b806365fae35e1461041f5780637d780d82146104635780639c52a7f114610481578063bf353dbb146104c55761010b565b80634423c5f1116100de5780634423c5f1146102565780634b43ed121461036d5780634e8b1dd5146103af5780635ff3a382146103dd5761010b565b806326e027f11461011057806329ae81141461013e578063351de6001461017657806336569e771461020c575b600080fd5b61013c6004803603602081101561012657600080fd5b81019080803590602001909291905050506105e3565b005b6101746004803603604081101561015457600080fd5b810190808035906020019092919080359060200190929190505050610b72565b005b6101f6600480360360a081101561018c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050610da5565b6040518082815260200191505060405180910390f35b61021461122e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561026c57600080fd5b8101908080359060200190929190505050611254565b604051808981526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018665ffffffffffff1665ffffffffffff1681526020018565ffffffffffff1665ffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019850505050505050505060405180910390f35b6103ad6004803603606081101561038357600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611320565b005b6103b7611bd4565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b61041d600480360360608110156103f357600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611bec565b005b6104616004803603602081101561043557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612473565b005b61046b6125a1565b6040518082815260200191505060405180910390f35b6104c36004803603602081101561049757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125a7565b005b610507600480360360208110156104db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126d5565b6040518082815260200191505060405180910390f35b6105256126ed565b6040518082815260200191505060405180910390f35b6105676004803603602081101561055157600080fd5b81019080803590602001909291905050506126f3565b005b610571612a65565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b61059f612a7d565b6040518082815260200191505060405180910390f35b6105e1600480360360208110156105cb57600080fd5b8101908080359060200190929190505050612a83565b005b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610697576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c69707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b6001600082815260200190815260200160002060050154600160008381526020019081526020016000206000015410610811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c69707065722f616c72656164792d64656e742d706861736500000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e600354303360016000878152602001908152602001600020600101546040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561090e57600080fd5b505af1158015610922573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610a4f57600080fd5b505af1158015610a63573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600582016000905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7f6265670000000000000000000000000000000000000000000000000000000000821415610c5a5780600481905550610d6e565b7f74746c0000000000000000000000000000000000000000000000000000000000821415610cac5780600560006101000a81548165ffffffffffff021916908365ffffffffffff160217905550610d6d565b7f7461750000000000000000000000000000000000000000000000000000000000821415610cfe5780600560066101000a81548165ffffffffffff021916908365ffffffffffff160217905550610d6c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f466c69707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065410610ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c69707065722f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6006600081546001019190508190559050816001600083815260200190815260200160002060000181905550826001600083815260200190815260200160002060010181905550336001600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fac42600560069054906101000a900465ffffffffffff16612c5a565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550856001600083815260200190815260200160002060030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846001600083815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836001600083815260200190815260200160002060050181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e6003543330876040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fc84ce3a1172f0dec3173f04caaa6005151a4bfe40d4c9f3ea28dba5f719b2a7a838686896040518085815260200184815260200183815260200182815260200194505050505060405180910390a395945050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900465ffffffffffff169080600201601a9054906101000a900465ffffffffffff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050154905088565b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156113f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c69707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180611467575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b6114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff161161157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600101548214611609576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c69707065722f6c6f742d6e6f742d6d61746368696e67000000000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060050154811115611695576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f466c69707065722f6869676865722d7468616e2d74616200000000000000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548111611720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6269642d6e6f742d6869676865720000000000000000000081525060200191505060405180910390fd5b6117426004546001600086815260200190815260200160002060000154612c84565b61175482670de0b6b3a7640000612c84565b1015806117765750600160008481526020019081526020016000206005015481145b6117e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c69707065722f696e73756666696369656e742d696e63726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119e857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000888152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561197a57600080fd5b505af115801561198e573d6000803e3d6000fd5b50505050336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008881526020019081526020016000206000015485036040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611b1357600080fd5b505af1158015611b27573d6000803e3d6000fd5b50505050806001600085815260200190815260200160002060000181905550611b6442600560009054906101000a900465ffffffffffff16612c5a565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600560009054906101000a900465ffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611cc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c69707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180611d33575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b611da5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1611611e4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548114611ed5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c69707065722f6e6f742d6d61746368696e672d626964000000000000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600501548114611f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f466c69707065722f74656e642d6e6f742d66696e69736865640000000000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600101548210611feb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f466c69707065722f6c6f742d6e6f742d6c6f776572000000000000000000000081525060200191505060405180910390fd5b6120136001600085815260200190815260200160002060010154670de0b6b3a7640000612c84565b61201f60045484612c84565b1115612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c69707065722f696e73756666696369656e742d646563726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461227d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561220f57600080fd5b505af1158015612223573d6000803e3d6000fd5b50505050336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e600354306001600088815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600160008a815260200190815260200160002060010154036040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b1580156123b257600080fd5b505af11580156123c6573d6000803e3d6000fd5b5050505081600160008581526020019081526020016000206001018190555061240342600560009054906101000a900465ffffffffffff16612c5a565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612527576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60045481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461265b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60035481565b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161415801561279d5750426001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16108061279c57504260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff16105b5b61280f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c69707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e600354306001600086815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000878152602001908152602001600020600101546040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561294257600080fd5b505af1158015612956573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600582016000905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600560069054906101000a900465ffffffffffff1681565b60065481565b4260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1610612b28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c69707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614612bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c69707065722f6269642d616c72656164792d706c6163656400000000000081525060200191505060405180910390fd5b612bec42600560069054906101000a900465ffffffffffff16612c5a565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60008265ffffffffffff1682840191508165ffffffffffff161015612c7e57600080fd5b92915050565b600080821480612ca15750828283850292508281612c9e57fe5b04145b612caa57600080fd5b9291505056fea265627a7a723158205bf8d8db250074722a9a8897ef6594c97ba781ee0b5215bd97c249a718d9ee2a64736f6c634300050c0032") - - syntax Bytes ::= "Flipper_bin_runtime" [macro] - // ---------------------------------------------- - rule Flipper_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806365fae35e116100a2578063c5ce281e11610071578063c5ce281e1461051d578063c959c42b1461053b578063cfc4af5514610569578063cfdd330214610597578063fc7b6aee146105b55761010b565b806365fae35e1461041f5780637d780d82146104635780639c52a7f114610481578063bf353dbb146104c55761010b565b80634423c5f1116100de5780634423c5f1146102565780634b43ed121461036d5780634e8b1dd5146103af5780635ff3a382146103dd5761010b565b806326e027f11461011057806329ae81141461013e578063351de6001461017657806336569e771461020c575b600080fd5b61013c6004803603602081101561012657600080fd5b81019080803590602001909291905050506105e3565b005b6101746004803603604081101561015457600080fd5b810190808035906020019092919080359060200190929190505050610b72565b005b6101f6600480360360a081101561018c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050610da5565b6040518082815260200191505060405180910390f35b61021461122e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561026c57600080fd5b8101908080359060200190929190505050611254565b604051808981526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018665ffffffffffff1665ffffffffffff1681526020018565ffffffffffff1665ffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019850505050505050505060405180910390f35b6103ad6004803603606081101561038357600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611320565b005b6103b7611bd4565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b61041d600480360360608110156103f357600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611bec565b005b6104616004803603602081101561043557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612473565b005b61046b6125a1565b6040518082815260200191505060405180910390f35b6104c36004803603602081101561049757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125a7565b005b610507600480360360208110156104db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126d5565b6040518082815260200191505060405180910390f35b6105256126ed565b6040518082815260200191505060405180910390f35b6105676004803603602081101561055157600080fd5b81019080803590602001909291905050506126f3565b005b610571612a65565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b61059f612a7d565b6040518082815260200191505060405180910390f35b6105e1600480360360208110156105cb57600080fd5b8101908080359060200190929190505050612a83565b005b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610697576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c69707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b6001600082815260200190815260200160002060050154600160008381526020019081526020016000206000015410610811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c69707065722f616c72656164792d64656e742d706861736500000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e600354303360016000878152602001908152602001600020600101546040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561090e57600080fd5b505af1158015610922573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610a4f57600080fd5b505af1158015610a63573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600582016000905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7f6265670000000000000000000000000000000000000000000000000000000000821415610c5a5780600481905550610d6e565b7f74746c0000000000000000000000000000000000000000000000000000000000821415610cac5780600560006101000a81548165ffffffffffff021916908365ffffffffffff160217905550610d6d565b7f7461750000000000000000000000000000000000000000000000000000000000821415610cfe5780600560066101000a81548165ffffffffffff021916908365ffffffffffff160217905550610d6c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f466c69707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065410610ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c69707065722f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6006600081546001019190508190559050816001600083815260200190815260200160002060000181905550826001600083815260200190815260200160002060010181905550336001600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fac42600560069054906101000a900465ffffffffffff16612c5a565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550856001600083815260200190815260200160002060030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846001600083815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836001600083815260200190815260200160002060050181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e6003543330876040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fc84ce3a1172f0dec3173f04caaa6005151a4bfe40d4c9f3ea28dba5f719b2a7a838686896040518085815260200184815260200183815260200182815260200194505050505060405180910390a395945050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900465ffffffffffff169080600201601a9054906101000a900465ffffffffffff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050154905088565b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156113f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c69707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180611467575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b6114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff161161157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600101548214611609576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c69707065722f6c6f742d6e6f742d6d61746368696e67000000000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060050154811115611695576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f466c69707065722f6869676865722d7468616e2d74616200000000000000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548111611720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6269642d6e6f742d6869676865720000000000000000000081525060200191505060405180910390fd5b6117426004546001600086815260200190815260200160002060000154612c84565b61175482670de0b6b3a7640000612c84565b1015806117765750600160008481526020019081526020016000206005015481145b6117e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c69707065722f696e73756666696369656e742d696e63726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119e857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000888152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561197a57600080fd5b505af115801561198e573d6000803e3d6000fd5b50505050336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008881526020019081526020016000206000015485036040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611b1357600080fd5b505af1158015611b27573d6000803e3d6000fd5b50505050806001600085815260200190815260200160002060000181905550611b6442600560009054906101000a900465ffffffffffff16612c5a565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600560009054906101000a900465ffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611cc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c69707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180611d33575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b611da5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1611611e4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c69707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548114611ed5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c69707065722f6e6f742d6d61746368696e672d626964000000000000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600501548114611f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f466c69707065722f74656e642d6e6f742d66696e69736865640000000000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600101548210611feb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f466c69707065722f6c6f742d6e6f742d6c6f776572000000000000000000000081525060200191505060405180910390fd5b6120136001600085815260200190815260200160002060010154670de0b6b3a7640000612c84565b61201f60045484612c84565b1115612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c69707065722f696e73756666696369656e742d646563726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461227d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561220f57600080fd5b505af1158015612223573d6000803e3d6000fd5b50505050336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e600354306001600088815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600160008a815260200190815260200160002060010154036040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b1580156123b257600080fd5b505af11580156123c6573d6000803e3d6000fd5b5050505081600160008581526020019081526020016000206001018190555061240342600560009054906101000a900465ffffffffffff16612c5a565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612527576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60045481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461265b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c69707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60035481565b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161415801561279d5750426001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16108061279c57504260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff16105b5b61280f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c69707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e600354306001600086815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000878152602001908152602001600020600101546040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561294257600080fd5b505af1158015612956573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600582016000905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600560069054906101000a900465ffffffffffff1681565b60065481565b4260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1610612b28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c69707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614612bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c69707065722f6269642d616c72656164792d706c6163656400000000000081525060200191505060405180910390fd5b612bec42600560069054906101000a900465ffffffffffff16612c5a565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60008265ffffffffffff1682840191508165ffffffffffff161015612c7e57600080fd5b92915050565b600080821480612ca15750828283850292508281612c9e57fe5b04145b612caa57600080fd5b9291505056fea265627a7a723158205bf8d8db250074722a9a8897ef6594c97ba781ee0b5215bd97c249a718d9ee2a64736f6c634300050c0032") - - syntax Bytes ::= "Flopper_bin" [macro] - // -------------------------------------- - rule Flopper_bin => #parseByteStack("0x6080604052670e92596fd62900006004556714d1120d7b160000600555612a30600660006101000a81548165ffffffffffff021916908365ffffffffffff1602179055506202a3006006806101000a81548165ffffffffffff021916908365ffffffffffff160217905550600060075534801561007b57600080fd5b5060405161242c38038061242c8339818101604052604081101561009e57600080fd5b81019080805190602001909291908051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008819055505050612294806101986000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80637d780d82116100ad578063bf353dbb11610071578063bf353dbb146104e7578063c959c42b1461053f578063cfc4af551461056d578063cfdd33021461059b578063fc7b6aee146105b95761012c565b80637d780d82146103dd5780639361266c146103fb578063957aa58c146104195780639c52a7f114610437578063b7e9cd241461047b5761012c565b80635ff3a382116100f45780635ff3a382146102b9578063626cb3c5146102fb57806365fae35e1461034557806369245009146103895780637bd2bea7146103935761012c565b806326e027f11461013157806329ae81141461015f57806336569e77146101975780634423c5f1146101e15780634e8b1dd51461028b575b600080fd5b61015d6004803603602081101561014757600080fd5b81019080803590602001909291905050506105e7565b005b6101956004803603604081101561017557600080fd5b810190808035906020019092919080359060200190929190505050610950565b005b61019f610bb7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61020d600480360360208110156101f757600080fd5b8101908080359060200190929190505050610bdd565b604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018365ffffffffffff1665ffffffffffff1681526020018265ffffffffffff1665ffffffffffff1681526020019550505050505060405180910390f35b610293610c57565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6102f9600480360360608110156102cf57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610c6f565b005b610303611538565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103876004803603602081101561035b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061155e565b005b61039161168c565b005b61039b6117be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e56117e4565b6040518082815260200191505060405180910390f35b6104036117ea565b6040518082815260200191505060405180910390f35b6104216117f0565b6040518082815260200191505060405180910390f35b6104796004803603602081101561044d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f6565b005b6104d16004803603606081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611924565b6040518082815260200191505060405180910390f35b610529600480360360208110156104fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c3f565b6040518082815260200191505060405180910390f35b61056b6004803603602081101561055557600080fd5b8101908080359060200190929190505050611c57565b005b610575611fad565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6105a3611fc4565b6040518082815260200191505060405180910390f35b6105e5600480360360208110156105cf57600080fd5b8101908080359060200190929190505050611fca565b005b60006008541461065f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f466c6f707065722f7374696c6c2d6c697665000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610738576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c6f707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561088357600080fd5b505af1158015610897573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7f6265670000000000000000000000000000000000000000000000000000000000821415610a385780600481905550610b80565b7f7061640000000000000000000000000000000000000000000000000000000000821415610a6c5780600581905550610b7f565b7f74746c0000000000000000000000000000000000000000000000000000000000821415610abe5780600660006101000a81548165ffffffffffff021916908365ffffffffffff160217905550610b7e565b7f7461750000000000000000000000000000000000000000000000000000000000821415610b0f57806006806101000a81548165ffffffffffff021916908365ffffffffffff160217905550610b7d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f466c6f707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900465ffffffffffff169080600201601a9054906101000a900465ffffffffffff16905085565b600660009054906101000a900465ffffffffffff1681565b600160085414610ce7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610dc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c6f707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180610e2e575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b610ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c6f707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1611610f45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c6f707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548114610fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c6f707065722f6e6f742d6d61746368696e672d626964000000000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010154821061105b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f466c6f707065722f6c6f742d6e6f742d6c6f776572000000000000000000000081525060200191505060405180910390fd5b6110836001600085815260200190815260200160002060010154670de0b6b3a76400006121ed565b61108f600454846121ed565b1115611103576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c6f707065722f696e73756666696369656e742d646563726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461148f57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561127f57600080fd5b505af1158015611293573d6000803e3d6000fd5b5050505060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614156114395760006001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632a1d2b3c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561135057600080fd5b505af1158015611364573d6000803e3d6000fd5b505050506040513d602081101561137a57600080fd5b810190808051906020019092919050505090506001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632506855a6113e98484612219565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b50505050505b336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8160016000858152602001908152602001600020600101819055506114c842600660009054906101000a900465ffffffffffff16612235565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611740576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600060088190555033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60055481565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160085414611a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075410611ae9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6007600081546001019190508190559050816001600083815260200190815260200160002060000181905550826001600083815260200190815260200160002060010181905550836001600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ba2426006809054906101000a900465ffffffffffff16612235565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167f7e8881001566f9f89aedb9c5dc3d856a2b81e5235a8196413ed484be91cc0df682858560405180848152602001838152602001828152602001935050505060405180910390a29392505050565b60006020528060005260406000206000915090505481565b600160085414611ccf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614158015611d795750426001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161080611d7857504260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff16105b5b611deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c6f707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f196001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000858152602001908152602001600020600101546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ee057600080fd5b505af1158015611ef4573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6006809054906101000a900465ffffffffffff1681565b60075481565b4260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff161061206f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c6f707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614612115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c6f707065722f6269642d616c72656164792d706c6163656400000000000081525060200191505060405180910390fd5b670de0b6b3a764000061214060055460016000858152602001908152602001600020600101546121ed565b8161214757fe5b04600160008381526020019081526020016000206001018190555061217f426006809054906101000a900465ffffffffffff16612235565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60008082148061220a575082828385029250828161220757fe5b04145b61221357600080fd5b92915050565b60008183111561222b5781905061222f565b8290505b92915050565b60008265ffffffffffff1682840191508165ffffffffffff16101561225957600080fd5b9291505056fea265627a7a723158205e1409f4f0c0165ca7346388d0afdcca6757261ff7f56d1c76a3df8267f2bd0664736f6c634300050c0032") - - syntax Bytes ::= "Flopper_bin_runtime" [macro] - // ---------------------------------------------- - rule Flopper_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80637d780d82116100ad578063bf353dbb11610071578063bf353dbb146104e7578063c959c42b1461053f578063cfc4af551461056d578063cfdd33021461059b578063fc7b6aee146105b95761012c565b80637d780d82146103dd5780639361266c146103fb578063957aa58c146104195780639c52a7f114610437578063b7e9cd241461047b5761012c565b80635ff3a382116100f45780635ff3a382146102b9578063626cb3c5146102fb57806365fae35e1461034557806369245009146103895780637bd2bea7146103935761012c565b806326e027f11461013157806329ae81141461015f57806336569e77146101975780634423c5f1146101e15780634e8b1dd51461028b575b600080fd5b61015d6004803603602081101561014757600080fd5b81019080803590602001909291905050506105e7565b005b6101956004803603604081101561017557600080fd5b810190808035906020019092919080359060200190929190505050610950565b005b61019f610bb7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61020d600480360360208110156101f757600080fd5b8101908080359060200190929190505050610bdd565b604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018365ffffffffffff1665ffffffffffff1681526020018265ffffffffffff1665ffffffffffff1681526020019550505050505060405180910390f35b610293610c57565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6102f9600480360360608110156102cf57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610c6f565b005b610303611538565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103876004803603602081101561035b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061155e565b005b61039161168c565b005b61039b6117be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e56117e4565b6040518082815260200191505060405180910390f35b6104036117ea565b6040518082815260200191505060405180910390f35b6104216117f0565b6040518082815260200191505060405180910390f35b6104796004803603602081101561044d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f6565b005b6104d16004803603606081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611924565b6040518082815260200191505060405180910390f35b610529600480360360208110156104fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c3f565b6040518082815260200191505060405180910390f35b61056b6004803603602081101561055557600080fd5b8101908080359060200190929190505050611c57565b005b610575611fad565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6105a3611fc4565b6040518082815260200191505060405180910390f35b6105e5600480360360208110156105cf57600080fd5b8101908080359060200190929190505050611fca565b005b60006008541461065f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f466c6f707065722f7374696c6c2d6c697665000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610738576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c6f707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561088357600080fd5b505af1158015610897573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7f6265670000000000000000000000000000000000000000000000000000000000821415610a385780600481905550610b80565b7f7061640000000000000000000000000000000000000000000000000000000000821415610a6c5780600581905550610b7f565b7f74746c0000000000000000000000000000000000000000000000000000000000821415610abe5780600660006101000a81548165ffffffffffff021916908365ffffffffffff160217905550610b7e565b7f7461750000000000000000000000000000000000000000000000000000000000821415610b0f57806006806101000a81548165ffffffffffff021916908365ffffffffffff160217905550610b7d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f466c6f707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900465ffffffffffff169080600201601a9054906101000a900465ffffffffffff16905085565b600660009054906101000a900465ffffffffffff1681565b600160085414610ce7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610dc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c6f707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180610e2e575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b610ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c6f707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1611610f45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c6f707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548114610fd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c6f707065722f6e6f742d6d61746368696e672d626964000000000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010154821061105b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f466c6f707065722f6c6f742d6e6f742d6c6f776572000000000000000000000081525060200191505060405180910390fd5b6110836001600085815260200190815260200160002060010154670de0b6b3a76400006121ed565b61108f600454846121ed565b1115611103576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c6f707065722f696e73756666696369656e742d646563726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461148f57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561127f57600080fd5b505af1158015611293573d6000803e3d6000fd5b5050505060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614156114395760006001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632a1d2b3c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561135057600080fd5b505af1158015611364573d6000803e3d6000fd5b505050506040513d602081101561137a57600080fd5b810190808051906020019092919050505090506001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632506855a6113e98484612219565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b50505050505b336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8160016000858152602001908152602001600020600101819055506114c842600660009054906101000a900465ffffffffffff16612235565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611740576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600060088190555033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60055481565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c6f707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160085414611a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075410611ae9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6007600081546001019190508190559050816001600083815260200190815260200160002060000181905550826001600083815260200190815260200160002060010181905550836001600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ba2426006809054906101000a900465ffffffffffff16612235565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167f7e8881001566f9f89aedb9c5dc3d856a2b81e5235a8196413ed484be91cc0df682858560405180848152602001838152602001828152602001935050505060405180910390a29392505050565b60006020528060005260406000206000915090505481565b600160085414611ccf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c6f707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614158015611d795750426001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161080611d7857504260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff16105b5b611deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c6f707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f196001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000858152602001908152602001600020600101546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ee057600080fd5b505af1158015611ef4573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6006809054906101000a900465ffffffffffff1681565b60075481565b4260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff161061206f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c6f707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614612115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c6f707065722f6269642d616c72656164792d706c6163656400000000000081525060200191505060405180910390fd5b670de0b6b3a764000061214060055460016000858152602001908152602001600020600101546121ed565b8161214757fe5b04600160008381526020019081526020016000206001018190555061217f426006809054906101000a900465ffffffffffff16612235565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60008082148061220a575082828385029250828161220757fe5b04145b61221357600080fd5b92915050565b60008183111561222b5781905061222f565b8290505b92915050565b60008265ffffffffffff1682840191508165ffffffffffff16101561225957600080fd5b9291505056fea265627a7a723158205e1409f4f0c0165ca7346388d0afdcca6757261ff7f56d1c76a3df8267f2bd0664736f6c634300050c0032") - - syntax Bytes ::= "Flapper_bin" [macro] - // -------------------------------------- - rule Flapper_bin => #parseByteStack("0x6080604052670e92596fd6290000600455612a30600560006101000a81548165ffffffffffff021916908365ffffffffffff1602179055506202a300600560066101000a81548165ffffffffffff021916908365ffffffffffff160217905550600060065534801561007057600080fd5b506040516124dd3803806124dd8339818101604052604081101561009357600080fd5b81019080805190602001909291908051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160078190555050506123508061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063957aa58c116100a2578063c959c42b11610071578063c959c42b14610479578063ca40c419146104a7578063cfc4af55146104f3578063cfdd330214610521578063fc7b6aee1461053f57610116565b8063957aa58c146103915780639c52a7f1146103af578063a2f91af2146103f3578063bf353dbb1461042157610116565b80634b43ed12116100e95780634b43ed12146102755780634e8b1dd5146102b757806365fae35e146102e55780637bd2bea7146103295780637d780d821461037357610116565b806326e027f11461011b57806329ae81141461014957806336569e77146101815780634423c5f1146101cb575b600080fd5b6101476004803603602081101561013157600080fd5b810190808035906020019092919050505061056d565b005b61017f6004803603604081101561015f57600080fd5b8101908080359060200190929190803590602001909291905050506108b4565b005b610189610ae7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101f7600480360360208110156101e157600080fd5b8101908080359060200190929190505050610b0d565b604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018365ffffffffffff1665ffffffffffff1681526020018265ffffffffffff1665ffffffffffff1681526020019550505050505060405180910390f35b6102b56004803603606081101561028b57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610b87565b005b6102bf6113d1565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b610327600480360360208110156102fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e9565b005b610331611517565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037b61153d565b6040518082815260200191505060405180910390f35b610399611543565b6040518082815260200191505060405180910390f35b6103f1600480360360208110156103c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611549565b005b61041f6004803603602081101561040957600080fd5b8101908080359060200190929190505050611677565b005b6104636004803603602081101561043757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185e565b6040518082815260200191505060405180910390f35b6104a56004803603602081101561048f57600080fd5b8101908080359060200190929190505050611876565b005b6104dd600480360360408110156104bd57600080fd5b810190808035906020019092919080359060200190929190505050611cd7565b6040518082815260200191505060405180910390f35b6104fb6120d0565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6105296120e8565b6040518082815260200191505060405180910390f35b61056b6004803603602081101561055557600080fd5b81019080803590602001909291905050506120ee565b005b6000600754146105e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f466c61707065722f7374696c6c2d6c697665000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156106be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c61707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b306001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156107e757600080fd5b505af11580156107fb573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610968576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7f626567000000000000000000000000000000000000000000000000000000000082141561099c5780600481905550610ab0565b7f74746c00000000000000000000000000000000000000000000000000000000008214156109ee5780600560006101000a81548165ffffffffffff021916908365ffffffffffff160217905550610aaf565b7f7461750000000000000000000000000000000000000000000000000000000000821415610a405780600560066101000a81548165ffffffffffff021916908365ffffffffffff160217905550610aae565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f466c61707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900465ffffffffffff169080600201601a9054906101000a900465ffffffffffff16905085565b600160075414610bff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610cd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c61707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180610d46575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b610db8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c61707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1611610e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c61707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600101548214610ee8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c61707065722f6c6f742d6e6f742d6d61746368696e67000000000000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548111610f73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6269642d6e6f742d6869676865720000000000000000000081525060200191505060405180910390fd5b610f9560045460016000868152602001908152602001600020600001546122c5565b610fa782670de0b6b3a76400006122c5565b101561101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c61707065722f696e73756666696369656e742d696e63726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461121b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000888152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156111ad57600080fd5b505af11580156111c1573d6000803e3d6000fd5b50505050336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3330600160008881526020019081526020016000206000015485036040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561131057600080fd5b505af1158015611324573d6000803e3d6000fd5b5050505080600160008581526020019081526020016000206000018190555061136142600560009054906101000a900465ffffffffffff166122f1565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600560009054906101000a900465ffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461149d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461172b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b6000600781905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3033846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561181057600080fd5b505af1158015611824573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b6001600754146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16141580156119985750426001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16108061199757504260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff16105b5b611a0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c61707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b306001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600101546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611b3357600080fd5b505af1158015611b47573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac3060016000858152602001908152602001600020600001546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611c0a57600080fd5b505af1158015611c1e573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611d8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160075414611e05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065410611e9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6006600081546001019190508190559050816001600083815260200190815260200160002060000181905550826001600083815260200190815260200160002060010181905550336001600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f5642600560069054906101000a900465ffffffffffff166122f1565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561206b57600080fd5b505af115801561207f573d6000803e3d6000fd5b505050507fe6dde59cbc017becba89714a037778d234a84ce7f0a137487142a007e580d60981848460405180848152602001838152602001828152602001935050505060405180910390a192915050565b600560069054906101000a900465ffffffffffff1681565b60065481565b4260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1610612193576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c61707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614612239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c61707065722f6269642d616c72656164792d706c6163656400000000000081525060200191505060405180910390fd5b61225742600560069054906101000a900465ffffffffffff166122f1565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6000808214806122e257508282838502925082816122df57fe5b04145b6122eb57600080fd5b92915050565b60008265ffffffffffff1682840191508165ffffffffffff16101561231557600080fd5b9291505056fea265627a7a723158201acd0496ca3432003bac40639b3808573f9831f884ae4dc91d004d0deff68a7364736f6c634300050c0032") - - syntax Bytes ::= "Flapper_bin_runtime" [macro] - // ---------------------------------------------- - rule Flapper_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063957aa58c116100a2578063c959c42b11610071578063c959c42b14610479578063ca40c419146104a7578063cfc4af55146104f3578063cfdd330214610521578063fc7b6aee1461053f57610116565b8063957aa58c146103915780639c52a7f1146103af578063a2f91af2146103f3578063bf353dbb1461042157610116565b80634b43ed12116100e95780634b43ed12146102755780634e8b1dd5146102b757806365fae35e146102e55780637bd2bea7146103295780637d780d821461037357610116565b806326e027f11461011b57806329ae81141461014957806336569e77146101815780634423c5f1146101cb575b600080fd5b6101476004803603602081101561013157600080fd5b810190808035906020019092919050505061056d565b005b61017f6004803603604081101561015f57600080fd5b8101908080359060200190929190803590602001909291905050506108b4565b005b610189610ae7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101f7600480360360208110156101e157600080fd5b8101908080359060200190929190505050610b0d565b604051808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018365ffffffffffff1665ffffffffffff1681526020018265ffffffffffff1665ffffffffffff1681526020019550505050505060405180910390f35b6102b56004803603606081101561028b57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610b87565b005b6102bf6113d1565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b610327600480360360208110156102fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e9565b005b610331611517565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037b61153d565b6040518082815260200191505060405180910390f35b610399611543565b6040518082815260200191505060405180910390f35b6103f1600480360360208110156103c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611549565b005b61041f6004803603602081101561040957600080fd5b8101908080359060200190929190505050611677565b005b6104636004803603602081101561043757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185e565b6040518082815260200191505060405180910390f35b6104a56004803603602081101561048f57600080fd5b8101908080359060200190929190505050611876565b005b6104dd600480360360408110156104bd57600080fd5b810190808035906020019092919080359060200190929190505050611cd7565b6040518082815260200191505060405180910390f35b6104fb6120d0565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6105296120e8565b6040518082815260200191505060405180910390f35b61056b6004803603602081101561055557600080fd5b81019080803590602001909291905050506120ee565b005b6000600754146105e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f466c61707065722f7374696c6c2d6c697665000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156106be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c61707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b306001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156107e757600080fd5b505af11580156107fb573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610968576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b7f626567000000000000000000000000000000000000000000000000000000000082141561099c5780600481905550610ab0565b7f74746c00000000000000000000000000000000000000000000000000000000008214156109ee5780600560006101000a81548165ffffffffffff021916908365ffffffffffff160217905550610aaf565b7f7461750000000000000000000000000000000000000000000000000000000000821415610a405780600560066101000a81548165ffffffffffff021916908365ffffffffffff160217905550610aae565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f466c61707065722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900465ffffffffffff169080600201601a9054906101000a900465ffffffffffff16905085565b600160075414610bff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610cd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f466c61707065722f6775792d6e6f742d7365740000000000000000000000000081525060200191505060405180910390fd5b426001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff161180610d46575060006001600085815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16145b610db8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c61707065722f616c72656164792d66696e69736865642d7469630000000081525060200191505060405180910390fd5b4260016000858152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1611610e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f466c61707065722f616c72656164792d66696e69736865642d656e640000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600101548214610ee8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f466c61707065722f6c6f742d6e6f742d6d61746368696e67000000000000000081525060200191505060405180910390fd5b60016000848152602001908152602001600020600001548111610f73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6269642d6e6f742d6869676865720000000000000000000081525060200191505060405180910390fd5b610f9560045460016000868152602001908152602001600020600001546122c5565b610fa782670de0b6b3a76400006122c5565b101561101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f466c61707065722f696e73756666696369656e742d696e63726561736500000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461121b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b336001600087815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000888152602001908152602001600020600001546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156111ad57600080fd5b505af11580156111c1573d6000803e3d6000fd5b50505050336001600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3330600160008881526020019081526020016000206000015485036040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561131057600080fd5b505af1158015611324573d6000803e3d6000fd5b5050505080600160008581526020019081526020016000206000018190555061136142600560009054906101000a900465ffffffffffff166122f1565b6001600085815260200190815260200160002060020160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600560009054906101000a900465ffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461149d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60075481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461172b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b6000600781905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3033846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561181057600080fd5b505af1158015611824573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b6001600754146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16141580156119985750426001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff16108061199757504260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff16105b5b611a0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c61707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b306001600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016000868152602001908152602001600020600101546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611b3357600080fd5b505af1158015611b47573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac3060016000858152602001908152602001600020600001546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611c0a57600080fd5b505af1158015611c1e573d6000803e3d6000fd5b505050506001600082815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549065ffffffffffff021916905560028201601a6101000a81549065ffffffffffff021916905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611d8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f466c61707065722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160075414611e05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60065410611e9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f466c61707065722f6f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6006600081546001019190508190559050816001600083815260200190815260200160002060000181905550826001600083815260200190815260200160002060010181905550336001600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f5642600560069054906101000a900465ffffffffffff166122f1565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561206b57600080fd5b505af115801561207f573d6000803e3d6000fd5b505050507fe6dde59cbc017becba89714a037778d234a84ce7f0a137487142a007e580d60981848460405180848152602001838152602001828152602001935050505060405180910390a192915050565b600560069054906101000a900465ffffffffffff1681565b60065481565b4260016000838152602001908152602001600020600201601a9054906101000a900465ffffffffffff1665ffffffffffff1610612193576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f466c61707065722f6e6f742d66696e697368656400000000000000000000000081525060200191505060405180910390fd5b60006001600083815260200190815260200160002060020160149054906101000a900465ffffffffffff1665ffffffffffff1614612239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f466c61707065722f6269642d616c72656164792d706c6163656400000000000081525060200191505060405180910390fd5b61225742600560069054906101000a900465ffffffffffff166122f1565b60016000838152602001908152602001600020600201601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b6000808214806122e257508282838502925082816122df57fe5b04145b6122eb57600080fd5b92915050565b60008265ffffffffffff1682840191508165ffffffffffff16101561231557600080fd5b9291505056fea265627a7a723158201acd0496ca3432003bac40639b3808573f9831f884ae4dc91d004d0deff68a7364736f6c634300050c0032") - - syntax Bytes ::= "DSToken_bin" [macro] - // -------------------------------------- - rule DSToken_bin => #parseByteStack("0x60806040526012600655600060075534801561001a57600080fd5b5060405161241f38038061241f8339818101604052602081101561003d57600080fd5b8101908080519060200190929190505050600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806000819055505033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a280600581905550506122e8806101376000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637a9e5e4b116100de578063b753a98c11610097578063bf7e214f11610071578063bf7e214f14610684578063daea85c5146106ce578063dd62ed3e1461072a578063f2d5d56b146107a257610173565b8063b753a98c146105be578063bb35783b1461060c578063be9a65551461067a57610173565b80637a9e5e4b146104305780638da5cb5b1461047457806395d89b41146104be5780639dc29fac146104dc578063a0712d681461052a578063a9059cbb1461055857610173565b8063313ce56711610130578063313ce567146102ee57806340c10f191461030c57806342966c681461035a5780635ac801fe1461038857806370a08231146103b657806375f12b211461040e57610173565b806306fdde031461017857806307da68f514610196578063095ea7b3146101a057806313af40351461020657806318160ddd1461024a57806323b872dd14610268575b600080fd5b6101806107f0565b6040518082815260200191505060405180910390f35b61019e6107f6565b005b6101ec600480360360408110156101b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610970565b604051808215151515815260200191505060405180910390f35b6102486004803603602081101561021c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a07565b005b610252610b50565b6040518082815260200191505060405180910390f35b6102d46004803603606081101561027e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b59565b604051808215151515815260200191505060405180910390f35b6102f66110f1565b6040518082815260200191505060405180910390f35b6103586004803603604081101561032257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110f7565b005b6103866004803603602081101561037057600080fd5b810190808035906020019092919050505061130a565b005b6103b46004803603602081101561039e57600080fd5b8101908080359060200190929190505050611317565b005b6103f8600480360360208110156103cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c1565b6040518082815260200191505060405180910390f35b61041661140a565b604051808215151515815260200191505060405180910390f35b6104726004803603602081101561044657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061141d565b005b61047c611566565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c661158c565b6040518082815260200191505060405180910390f35b610528600480360360408110156104f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611592565b005b6105566004803603602081101561054057600080fd5b8101908080359060200190929190505050611b30565b005b6105a46004803603604081101561056e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b3d565b604051808215151515815260200191505060405180910390f35b61060a600480360360408110156105d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b52565b005b6106786004803603606081101561062257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b62565b005b610682611b73565b005b61068c611ced565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610710600480360360208110156106e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d13565b604051808215151515815260200191505060405180910390f35b61078c6004803603604081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dc9565b6040518082815260200191505060405180910390f35b6107ee600480360360408110156107b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e50565b005b60075481565b610824336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b610896576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a46001600460146101000a81548160ff021916908315150217905550505050565b6000600460149054906101000a900460ff16156109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f64732d73746f702d69732d73746f70706564000000000000000000000000000081525060200191505060405180910390fd5b6109ff83836120bb565b905092915050565b610a35336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b610aa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615610bde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f64732d73746f702d69732d73746f70706564000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610cb657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15610eb45781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610dad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c000081525060200191505060405180910390fd5b610e33600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836121ad565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610f69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f64732d746f6b656e2d696e73756666696369656e742d62616c616e636500000081525060200191505060405180910390fd5b610fb2600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836121ad565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061103e600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612230565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60065481565b611125336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b611197576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b600460149054906101000a900460ff161561121a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f64732d73746f702d69732d73746f70706564000000000000000000000000000081525060200191505060405180910390fd5b611263600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612230565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112b260005482612230565b6000819055508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a25050565b6113143382611592565b50565b611345336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b6113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b61144b336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b6114bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6115c0336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b611632576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b600460149054906101000a900460ff16156116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f64732d73746f702d69732d73746f70706564000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561178d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1561198b5780600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c000081525060200191505060405180910390fd5b61190a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826121ad565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f64732d746f6b656e2d696e73756666696369656e742d62616c616e636500000081525060200191505060405180910390fd5b611a89600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826121ad565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ad8600054826121ad565b6000819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b611b3a33826110f7565b50565b6000611b4a338484610b59565b905092915050565b611b5d338383610b59565b505050565b611b6d838383610b59565b50505050565b611ba1336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b611c13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a46000600460146101000a81548160ff021916908315150217905550505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460149054906101000a900460ff1615611d98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f64732d73746f702d69732d73746f70706564000000000000000000000000000081525060200191505060405180910390fd5b611dc2827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6120bb565b9050919050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e5b823383610b59565b505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e9f57600190506120b5565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611efe57600190506120b5565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f5e57600090506120b5565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561207757600080fd5b505afa15801561208b573d6000803e3d6000fd5b505050506040513d60208110156120a157600080fd5b810190808051906020019092919050505090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600082828403915081111561222a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b60008282840191508110156122ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b9291505056fea265627a7a7231582042e4b52e52d434217b55a1ee90f412a7c49b1fd0406bb9ec1168e2a7c1fbad0e64736f6c634300050c0032") - - syntax Bytes ::= "DSToken_bin_runtime" [macro] - // ---------------------------------------------- - rule DSToken_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106101735760003560e01c80637a9e5e4b116100de578063b753a98c11610097578063bf7e214f11610071578063bf7e214f14610684578063daea85c5146106ce578063dd62ed3e1461072a578063f2d5d56b146107a257610173565b8063b753a98c146105be578063bb35783b1461060c578063be9a65551461067a57610173565b80637a9e5e4b146104305780638da5cb5b1461047457806395d89b41146104be5780639dc29fac146104dc578063a0712d681461052a578063a9059cbb1461055857610173565b8063313ce56711610130578063313ce567146102ee57806340c10f191461030c57806342966c681461035a5780635ac801fe1461038857806370a08231146103b657806375f12b211461040e57610173565b806306fdde031461017857806307da68f514610196578063095ea7b3146101a057806313af40351461020657806318160ddd1461024a57806323b872dd14610268575b600080fd5b6101806107f0565b6040518082815260200191505060405180910390f35b61019e6107f6565b005b6101ec600480360360408110156101b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610970565b604051808215151515815260200191505060405180910390f35b6102486004803603602081101561021c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a07565b005b610252610b50565b6040518082815260200191505060405180910390f35b6102d46004803603606081101561027e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b59565b604051808215151515815260200191505060405180910390f35b6102f66110f1565b6040518082815260200191505060405180910390f35b6103586004803603604081101561032257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110f7565b005b6103866004803603602081101561037057600080fd5b810190808035906020019092919050505061130a565b005b6103b46004803603602081101561039e57600080fd5b8101908080359060200190929190505050611317565b005b6103f8600480360360208110156103cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c1565b6040518082815260200191505060405180910390f35b61041661140a565b604051808215151515815260200191505060405180910390f35b6104726004803603602081101561044657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061141d565b005b61047c611566565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c661158c565b6040518082815260200191505060405180910390f35b610528600480360360408110156104f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611592565b005b6105566004803603602081101561054057600080fd5b8101908080359060200190929190505050611b30565b005b6105a46004803603604081101561056e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b3d565b604051808215151515815260200191505060405180910390f35b61060a600480360360408110156105d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b52565b005b6106786004803603606081101561062257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b62565b005b610682611b73565b005b61068c611ced565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610710600480360360208110156106e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d13565b604051808215151515815260200191505060405180910390f35b61078c6004803603604081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dc9565b6040518082815260200191505060405180910390f35b6107ee600480360360408110156107b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e50565b005b60075481565b610824336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b610896576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a46001600460146101000a81548160ff021916908315150217905550505050565b6000600460149054906101000a900460ff16156109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f64732d73746f702d69732d73746f70706564000000000000000000000000000081525060200191505060405180910390fd5b6109ff83836120bb565b905092915050565b610a35336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b610aa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff1615610bde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f64732d73746f702d69732d73746f70706564000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610cb657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15610eb45781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610dad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c000081525060200191505060405180910390fd5b610e33600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836121ad565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610f69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f64732d746f6b656e2d696e73756666696369656e742d62616c616e636500000081525060200191505060405180910390fd5b610fb2600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836121ad565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061103e600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612230565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60065481565b611125336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b611197576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b600460149054906101000a900460ff161561121a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f64732d73746f702d69732d73746f70706564000000000000000000000000000081525060200191505060405180910390fd5b611263600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612230565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112b260005482612230565b6000819055508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a25050565b6113143382611592565b50565b611345336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b6113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b61144b336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b6114bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6115c0336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b611632576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b600460149054906101000a900460ff16156116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f64732d73746f702d69732d73746f70706564000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561178d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1561198b5780600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c000081525060200191505060405180910390fd5b61190a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826121ad565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f64732d746f6b656e2d696e73756666696369656e742d62616c616e636500000081525060200191505060405180910390fd5b611a89600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826121ad565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ad8600054826121ad565b6000819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b611b3a33826110f7565b50565b6000611b4a338484610b59565b905092915050565b611b5d338383610b59565b505050565b611b6d838383610b59565b50505050565b611ba1336000357fffffffff0000000000000000000000000000000000000000000000000000000016611e60565b611c13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a46000600460146101000a81548160ff021916908315150217905550505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460149054906101000a900460ff1615611d98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f64732d73746f702d69732d73746f70706564000000000000000000000000000081525060200191505060405180910390fd5b611dc2827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6120bb565b9050919050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e5b823383610b59565b505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e9f57600190506120b5565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611efe57600190506120b5565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f5e57600090506120b5565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561207757600080fd5b505afa15801561208b573d6000803e3d6000fd5b505050506040513d60208110156120a157600080fd5b810190808051906020019092919050505090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600082828403915081111561222a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b60008282840191508110156122ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b9291505056fea265627a7a7231582042e4b52e52d434217b55a1ee90f412a7c49b1fd0406bb9ec1168e2a7c1fbad0e64736f6c634300050c0032") - - syntax Bytes ::= "End_bin" [macro] - // ---------------------------------- - rule End_bin => #parseByteStack("0x608060405234801561001057600080fd5b5060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600681905550613a458061006c6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806389ea45d311610104578063d4e8be83116100a2578063e488181311610071578063e48818131461076a578063e6ee62aa146107b4578063ee6447b5146107f6578063fe8507c614610838576101cf565b8063d4e8be831461068e578063e1340a3d146106dc578063e2702fdc1461071e578063e2b0caef1461074c576101cf565b80639c52a7f1116100de5780639c52a7f114610562578063bf353dbb146105a6578063c83062c6146105fe578063c939ebfc1461062c576101cf565b806389ea45d31461049e5780639255f809146104ec578063957aa58c14610544576101cf565b8063626cb3c51161017157806365fae35e1161014b57806365fae35e146103d8578063692450091461041c5780636ea42555146104265780636f265b9314610454576101cf565b8063626cb3c51461032e57806363fad85e1461037857806364bd7013146103ba576101cf565b80634a10eaa6116101ad5780634a10eaa6146102745780634ba2363a146102a2578063503ecf06146102ec5780635920375c14610324576101cf565b80630dca59c1146101d457806329ae8114146101f257806336569e771461022a575b600080fd5b6101dc610870565b6040518082815260200191505060405180910390f35b6102286004803603604081101561020857600080fd5b810190808035906020019092919080359060200190929190505050610876565b005b610232610a7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102a06004803603602081101561028a57600080fd5b8101908080359060200190929190505050610aa1565b005b6102aa610d4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103226004803603604081101561030257600080fd5b810190808035906020019092919080359060200190929190505050610d72565b005b61032c611665565b005b610336611a29565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a46004803603602081101561038e57600080fd5b8101908080359060200190929190505050611a4f565b6040518082815260200191505060405180910390f35b6103c2611a67565b6040518082815260200191505060405180910390f35b61041a600480360360208110156103ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a6d565b005b610424611b9b565b005b6104526004803603602081101561043c57600080fd5b8101908080359060200190929190505050611f95565b005b61045c6121fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104ea600480360360408110156104b457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612222565b005b61052e6004803603602081101561050257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612754565b6040518082815260200191505060405180910390f35b61054c61276c565b6040518082815260200191505060405180910390f35b6105a46004803603602081101561057857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612772565b005b6105e8600480360360208110156105bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a0565b6040518082815260200191505060405180910390f35b61062a6004803603602081101561061457600080fd5b81019080803590602001909291905050506128b8565b005b6106786004803603604081101561064257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cc7565b6040518082815260200191505060405180910390f35b6106da600480360360408110156106a457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cec565b005b610708600480360360208110156106f257600080fd5b81019080803590602001909291905050506130e7565b6040518082815260200191505060405180910390f35b61074a6004803603602081101561073457600080fd5b81019080803590602001909291905050506130ff565b005b610754613536565b6040518082815260200191505060405180910390f35b61077261353c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107e0600480360360208110156107ca57600080fd5b8101908080359060200190929190505050613562565b6040518082815260200191505060405180910390f35b6108226004803603602081101561080c57600080fd5b810190808035906020019092919050505061357a565b6040518082815260200191505060405180910390f35b61086e6004803603604081101561084e57600080fd5b810190808035906020019092919080359060200190929190505050613592565b005b60095481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461092a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600654146109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f77616974000000000000000000000000000000000000000000000000000000008214156109d65780600881905550610a44565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009541415610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456e642f646562742d7a65726f0000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600d60008381526020019081526020016000205414610ba3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f6669782d696c6b2d616c72656164792d646566696e6564000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36836040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b505050506040513d60a0811015610c4457600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505050509150506000610cbe610ca5600c6000868152602001908152602001600020548461391f565b600a60008681526020019081526020016000205461391f565b9050610cfd610cf5610ce383600b600088815260200190815260200160002054613948565b6b033b2e3c9fd0803ce8000000613962565b60095461398e565b600d60008581526020019081526020016000208190555050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a6000848152602001908152602001600020541415610dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f7461672d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040180828152602001915050606060405180830381600087803b158015610e7357600080fd5b505af1158015610e87573d6000803e3d6000fd5b505050506040513d6060811015610e9d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050905060008190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36866040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b158015610f4257600080fd5b505af1158015610f56573d6000803e3d6000fd5b505050506040513d60a0811015610f6c57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505050509150506000806000808573ffffffffffffffffffffffffffffffffffffffff16634423c5f1896040518263ffffffff1660e01b8152600401808281526020019150506101006040518083038186803b15801561100357600080fd5b505afa158015611017573d6000803e3d6000fd5b505050506040513d61010081101561102e57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050975050965050505093509350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff166326e027f1896040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156113ed57600080fd5b505af1158015611401573d6000803e3d6000fd5b50505050600085828161141057fe5b049050611430600c60008c815260200190815260200160002054826139b7565b600c60008c81526020019081526020016000208190555060008412158015611459575060008112155b6114cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f408b8530600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689876040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561160e57600080fd5b505af1158015611622573d6000803e3d6000fd5b5050505050505050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b6000600654146116dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b600060095414611755576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f456e642f646562742d6e6f742d7a65726f00000000000000000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561181857600080fd5b505afa15801561182c573d6000803e3d6000fd5b505050506040513d602081101561184257600080fd5b8101908080519060200190929190505050146118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f456e642f737572706c75732d6e6f742d7a65726f00000000000000000000000081525060200191505060405180910390fd5b6118d46007546008546139b7565b421015611949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f456e642f776169742d6e6f742d66696e6973686564000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca59c16040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156119b357600080fd5b505af11580156119c7573d6000803e3d6000fd5b505050506040513d60208110156119dd57600080fd5b81019080805190602001909291905050506009819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611b21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600160065414611cc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b600060068190555042600781905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611dc257600080fd5b505af1158015611dd6573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e4457600080fd5b505af1158015611e58573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ec657600080fd5b505af1158015611eda573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f4857600080fd5b505af1158015611f5c573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b6000600954141561200e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456e642f646562742d7a65726f0000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612086856b033b2e3c9fd0803ce8000000613962565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561212257600080fd5b505af1158015612136573d6000803e3d6000fd5b50505050612183600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826139b7565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60008481526020019081526020016000205414156122ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f7461672d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561232357600080fd5b505af1158015612337573d6000803e3d6000fd5b505050506040513d60a081101561234d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050505050915050600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c86866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b505050506040513d604081101561246157600080fd5b8101908080519060200190929190805190602001909291905050509150915060006124a861248f838661391f565b600a60008981526020019081526020016000205461391f565b905060006124b684836139d1565b90506124de600b6000898152602001908152602001600020546124d98484613948565b6139b7565b600b6000898152602001908152602001600020819055507f8000000000000000000000000000000000000000000000000000000000000000811115801561254557507f80000000000000000000000000000000000000000000000000000000000000008311155b6125b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40888830600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600003896000036040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561270057600080fd5b505af1158015612714573d6000803e3d6000fd5b5050505050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600e6020528060005260406000206000915090505481565b60065481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b600060065414612930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c84336040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b1580156129db57600080fd5b505af11580156129ef573d6000803e3d6000fd5b505050506040513d6040811015612a0557600080fd5b8101908080519060200190929190805190602001909291905050509150915060008114612a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f456e642f6172742d6e6f742d7a65726f0000000000000000000000000000000081525060200191505060405180910390fd5b7f8000000000000000000000000000000000000000000000000000000000000000821115612b30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40843333600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760000360006040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015612c7757600080fd5b505af1158015612c8b573d6000803e3d6000fd5b5050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600f602052816000526040600020602052806000526040600020600091509150505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612da0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600160065414612e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f7661740000000000000000000000000000000000000000000000000000000000821415612e865780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130b0565b7f6361740000000000000000000000000000000000000000000000000000000000821415612ef45780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130af565b7f766f770000000000000000000000000000000000000000000000000000000000821415612f625780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ae565b7f706f740000000000000000000000000000000000000000000000000000000000821415612fd05780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ad565b7f73706f740000000000000000000000000000000000000000000000000000000082141561303e5780600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ac565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600c6020528060005260406000206000915090505481565b600060065414613177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b6000600a60008381526020019081526020016000205414613200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f7461672d696c6b2d616c72656164792d646566696e6564000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36826040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561327557600080fd5b505af1158015613289573d6000803e3d6000fd5b505050506040513d60a081101561329f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505090919250909150905050600c600083815260200190815260200160002060008291905055506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36836040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561337157600080fd5b505afa158015613385573d6000803e3d6000fd5b505050506040513d604081101561339b57600080fd5b8101908080519060200190929190805190602001909291905050505090506134e8600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663495d32cb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561342457600080fd5b505afa158015613438573d6000803e3d6000fd5b505050506040513d602081101561344e57600080fd5b81019080805190602001909291905050508273ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b815260040160206040518083038186803b1580156134a557600080fd5b505afa1580156134b9573d6000803e3d6000fd5b505050506040513d60208110156134cf57600080fd5b810190808051906020019092919050505060001c6139eb565b600a600084815260200190815260200160002081905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60075481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915090505481565b600a6020528060005260406000206000915090505481565b6000600d600084815260200190815260200160002054141561361c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f6669782d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e83303361367a86600d60008a81526020019081526020016000205461391f565b6040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561371d57600080fd5b505af1158015613731573d6000803e3d6000fd5b5050505061378f600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826139b7565b600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156138e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f456e642f696e73756666696369656e742d6261672d62616c616e63650000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60006b033b2e3c9fd0803ce80000006139388484613962565b8161393f57fe5b04905092915050565b600082828403915081111561395c57600080fd5b92915050565b60008082148061397f575082828385029250828161397c57fe5b04145b61398857600080fd5b92915050565b6000816139a7846b033b2e3c9fd0803ce8000000613962565b816139ae57fe5b04905092915050565b60008183019050828110156139cb57600080fd5b92915050565b6000818311156139e157816139e3565b825b905092915050565b600081613a0084670de0b6b3a7640000613962565b81613a0757fe5b0490509291505056fea265627a7a72315820264a0ce72bca160075b6a5de4f272b4d2dd05f4166ae5536ffb13338378412bc64736f6c634300050c0032") - - syntax Bytes ::= "End_bin_runtime" [macro] - // ------------------------------------------ - rule End_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806389ea45d311610104578063d4e8be83116100a2578063e488181311610071578063e48818131461076a578063e6ee62aa146107b4578063ee6447b5146107f6578063fe8507c614610838576101cf565b8063d4e8be831461068e578063e1340a3d146106dc578063e2702fdc1461071e578063e2b0caef1461074c576101cf565b80639c52a7f1116100de5780639c52a7f114610562578063bf353dbb146105a6578063c83062c6146105fe578063c939ebfc1461062c576101cf565b806389ea45d31461049e5780639255f809146104ec578063957aa58c14610544576101cf565b8063626cb3c51161017157806365fae35e1161014b57806365fae35e146103d8578063692450091461041c5780636ea42555146104265780636f265b9314610454576101cf565b8063626cb3c51461032e57806363fad85e1461037857806364bd7013146103ba576101cf565b80634a10eaa6116101ad5780634a10eaa6146102745780634ba2363a146102a2578063503ecf06146102ec5780635920375c14610324576101cf565b80630dca59c1146101d457806329ae8114146101f257806336569e771461022a575b600080fd5b6101dc610870565b6040518082815260200191505060405180910390f35b6102286004803603604081101561020857600080fd5b810190808035906020019092919080359060200190929190505050610876565b005b610232610a7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102a06004803603602081101561028a57600080fd5b8101908080359060200190929190505050610aa1565b005b6102aa610d4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103226004803603604081101561030257600080fd5b810190808035906020019092919080359060200190929190505050610d72565b005b61032c611665565b005b610336611a29565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a46004803603602081101561038e57600080fd5b8101908080359060200190929190505050611a4f565b6040518082815260200191505060405180910390f35b6103c2611a67565b6040518082815260200191505060405180910390f35b61041a600480360360208110156103ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a6d565b005b610424611b9b565b005b6104526004803603602081101561043c57600080fd5b8101908080359060200190929190505050611f95565b005b61045c6121fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104ea600480360360408110156104b457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612222565b005b61052e6004803603602081101561050257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612754565b6040518082815260200191505060405180910390f35b61054c61276c565b6040518082815260200191505060405180910390f35b6105a46004803603602081101561057857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612772565b005b6105e8600480360360208110156105bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a0565b6040518082815260200191505060405180910390f35b61062a6004803603602081101561061457600080fd5b81019080803590602001909291905050506128b8565b005b6106786004803603604081101561064257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cc7565b6040518082815260200191505060405180910390f35b6106da600480360360408110156106a457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cec565b005b610708600480360360208110156106f257600080fd5b81019080803590602001909291905050506130e7565b6040518082815260200191505060405180910390f35b61074a6004803603602081101561073457600080fd5b81019080803590602001909291905050506130ff565b005b610754613536565b6040518082815260200191505060405180910390f35b61077261353c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107e0600480360360208110156107ca57600080fd5b8101908080359060200190929190505050613562565b6040518082815260200191505060405180910390f35b6108226004803603602081101561080c57600080fd5b810190808035906020019092919050505061357a565b6040518082815260200191505060405180910390f35b61086e6004803603604081101561084e57600080fd5b810190808035906020019092919080359060200190929190505050613592565b005b60095481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461092a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b6001600654146109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f77616974000000000000000000000000000000000000000000000000000000008214156109d65780600881905550610a44565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009541415610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456e642f646562742d7a65726f0000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600d60008381526020019081526020016000205414610ba3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f6669782d696c6b2d616c72656164792d646566696e6564000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36836040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b505050506040513d60a0811015610c4457600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505050509150506000610cbe610ca5600c6000868152602001908152602001600020548461391f565b600a60008681526020019081526020016000205461391f565b9050610cfd610cf5610ce383600b600088815260200190815260200160002054613948565b6b033b2e3c9fd0803ce8000000613962565b60095461398e565b600d60008581526020019081526020016000208190555050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a6000848152602001908152602001600020541415610dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f7461672d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040180828152602001915050606060405180830381600087803b158015610e7357600080fd5b505af1158015610e87573d6000803e3d6000fd5b505050506040513d6060811015610e9d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050905060008190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36866040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b158015610f4257600080fd5b505af1158015610f56573d6000803e3d6000fd5b505050506040513d60a0811015610f6c57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505050509150506000806000808573ffffffffffffffffffffffffffffffffffffffff16634423c5f1896040518263ffffffff1660e01b8152600401808281526020019150506101006040518083038186803b15801561100357600080fd5b505afa158015611017573d6000803e3d6000fd5b505050506040513d61010081101561102e57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050975050965050505093509350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f24e23eb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff166326e027f1896040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156113ed57600080fd5b505af1158015611401573d6000803e3d6000fd5b50505050600085828161141057fe5b049050611430600c60008c815260200190815260200160002054826139b7565b600c60008c81526020019081526020016000208190555060008412158015611459575060008112155b6114cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f408b8530600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689876040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561160e57600080fd5b505af1158015611622573d6000803e3d6000fd5b5050505050505050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b6000600654146116dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b600060095414611755576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f456e642f646562742d6e6f742d7a65726f00000000000000000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c25b346600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561181857600080fd5b505afa15801561182c573d6000803e3d6000fd5b505050506040513d602081101561184257600080fd5b8101908080519060200190929190505050146118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f456e642f737572706c75732d6e6f742d7a65726f00000000000000000000000081525060200191505060405180910390fd5b6118d46007546008546139b7565b421015611949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f456e642f776169742d6e6f742d66696e6973686564000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dca59c16040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156119b357600080fd5b505af11580156119c7573d6000803e3d6000fd5b505050506040513d60208110156119dd57600080fd5b81019080805190602001909291905050506009819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b60085481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611b21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600160065414611cc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b600060068190555042600781905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611dc257600080fd5b505af1158015611dd6573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e4457600080fd5b505af1158015611e58573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ec657600080fd5b505af1158015611eda573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663692450096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f4857600080fd5b505af1158015611f5c573d6000803e3d6000fd5b505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b6000600954141561200e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f456e642f646562742d7a65726f0000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb35783b33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612086856b033b2e3c9fd0803ce8000000613962565b6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561212257600080fd5b505af1158015612136573d6000803e3d6000fd5b50505050612183600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826139b7565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60008481526020019081526020016000205414156122ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f7461672d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561232357600080fd5b505af1158015612337573d6000803e3d6000fd5b505050506040513d60a081101561234d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050505050915050600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c86866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b505050506040513d604081101561246157600080fd5b8101908080519060200190929190805190602001909291905050509150915060006124a861248f838661391f565b600a60008981526020019081526020016000205461391f565b905060006124b684836139d1565b90506124de600b6000898152602001908152602001600020546124d98484613948565b6139b7565b600b6000898152602001908152602001600020819055507f8000000000000000000000000000000000000000000000000000000000000000811115801561254557507f80000000000000000000000000000000000000000000000000000000000000008311155b6125b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40888830600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600003896000036040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561270057600080fd5b505af1158015612714573d6000803e3d6000fd5b5050505050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600e6020528060005260406000206000915090505481565b60065481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b600060065414612930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632424be5c84336040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b1580156129db57600080fd5b505af11580156129ef573d6000803e3d6000fd5b505050506040513d6040811015612a0557600080fd5b8101908080519060200190929190805190602001909291905050509150915060008114612a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f456e642f6172742d6e6f742d7a65726f0000000000000000000000000000000081525060200191505060405180910390fd5b7f8000000000000000000000000000000000000000000000000000000000000000821115612b30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637bab3f40843333600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760000360006040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015612c7757600080fd5b505af1158015612c8b573d6000803e3d6000fd5b5050505050505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b600f602052816000526040600020602052806000526040600020600091509150505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612da0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f456e642f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b600160065414612e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f456e642f6e6f742d6c697665000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f7661740000000000000000000000000000000000000000000000000000000000821415612e865780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130b0565b7f6361740000000000000000000000000000000000000000000000000000000000821415612ef45780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130af565b7f766f770000000000000000000000000000000000000000000000000000000000821415612f625780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ae565b7f706f740000000000000000000000000000000000000000000000000000000000821415612fd05780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ad565b7f73706f740000000000000000000000000000000000000000000000000000000082141561303e5780600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506130ac565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f66696c652d756e7265636f676e697a65642d706172616d000000000081525060200191505060405180910390fd5b5b5b5b5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600c6020528060005260406000206000915090505481565b600060065414613177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f456e642f7374696c6c2d6c69766500000000000000000000000000000000000081525060200191505060405180910390fd5b6000600a60008381526020019081526020016000205414613200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f456e642f7461672d696c6b2d616c72656164792d646566696e6564000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36826040518263ffffffff1660e01b81526004018082815260200191505060a060405180830381600087803b15801561327557600080fd5b505af1158015613289573d6000803e3d6000fd5b505050506040513d60a081101561329f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505090919250909150905050600c600083815260200190815260200160002060008291905055506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9638d36836040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561337157600080fd5b505afa158015613385573d6000803e3d6000fd5b505050506040513d604081101561339b57600080fd5b8101908080519060200190929190805190602001909291905050505090506134e8600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663495d32cb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561342457600080fd5b505afa158015613438573d6000803e3d6000fd5b505050506040513d602081101561344e57600080fd5b81019080805190602001909291905050508273ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b815260040160206040518083038186803b1580156134a557600080fd5b505afa1580156134b9573d6000803e3d6000fd5b505050506040513d60208110156134cf57600080fd5b810190808051906020019092919050505060001c6139eb565b600a600084815260200190815260200160002081905550505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60075481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915090505481565b600a6020528060005260406000206000915090505481565b6000600d600084815260200190815260200160002054141561361c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f456e642f6669782d696c6b2d6e6f742d646566696e656400000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636111be2e83303361367a86600d60008a81526020019081526020016000205461391f565b6040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561371d57600080fd5b505af1158015613731573d6000803e3d6000fd5b5050505061378f600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826139b7565b600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156138e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f456e642f696e73756666696369656e742d6261672d62616c616e63650000000081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b60006b033b2e3c9fd0803ce80000006139388484613962565b8161393f57fe5b04905092915050565b600082828403915081111561395c57600080fd5b92915050565b60008082148061397f575082828385029250828161397c57fe5b04145b61398857600080fd5b92915050565b6000816139a7846b033b2e3c9fd0803ce8000000613962565b816139ae57fe5b04905092915050565b60008183019050828110156139cb57600080fd5b92915050565b6000818311156139e157816139e3565b825b905092915050565b600081613a0084670de0b6b3a7640000613962565b81613a0757fe5b0490509291505056fea265627a7a72315820264a0ce72bca160075b6a5de4f272b4d2dd05f4166ae5536ffb13338378412bc64736f6c634300050c0032") - - syntax Bytes ::= "DSValue_bin" [macro] - // -------------------------------------- - rule DSValue_bin => #parseByteStack("0x608060405233600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a2610b3a806100976000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637a9e5e4b1161005b5780637a9e5e4b146101465780638da5cb5b1461018a578063ac4c25b2146101d4578063bf7e214f146101de57610088565b806313af40351461008d5780631504460f146100d157806357de26a4146100ff57806359e02dd71461011d575b600080fd5b6100cf600480360360208110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610228565b005b6100fd600480360360208110156100e757600080fd5b8101908080359060200190929190505050610371565b005b6101076104f2565b6040518082815260200191505060405180910390f35b610125610582565b60405180838152602001821515151581526020019250505060405180910390f35b6101886004803603602081101561015c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105a0565b005b6101926106e7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101dc61070d565b005b6101e6610887565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610256336000357fffffffff00000000000000000000000000000000000000000000000000000000166108ac565b6102c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4610459336000357fffffffff00000000000000000000000000000000000000000000000000000000166108ac565b6104cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b8360028190555060018060146101000a81548160ff02191690831515021790555050505050565b60008060006104ff610582565b80925081935050508061057a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f68617a2d6e6f740000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b819250505090565b600080600254600160149054906101000a900460ff16915091509091565b6105ce336000357fffffffff00000000000000000000000000000000000000000000000000000000166108ac565b610640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a46107f5336000357fffffffff00000000000000000000000000000000000000000000000000000000166108ac565b610867576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600160146101000a81548160ff021916908315150217905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108eb5760019050610aff565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561094a5760019050610aff565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109a95760009050610aff565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b158015610ac157600080fd5b505afa158015610ad5573d6000803e3d6000fd5b505050506040513d6020811015610aeb57600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a7231582014bd5fd030ff737e59255d9fa6f83c502a9822c8743b9de6b077101da834e23064736f6c634300050c0032") - - syntax Bytes ::= "DSValue_bin_runtime" [macro] - // ---------------------------------------------- - rule DSValue_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106100885760003560e01c80637a9e5e4b1161005b5780637a9e5e4b146101465780638da5cb5b1461018a578063ac4c25b2146101d4578063bf7e214f146101de57610088565b806313af40351461008d5780631504460f146100d157806357de26a4146100ff57806359e02dd71461011d575b600080fd5b6100cf600480360360208110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610228565b005b6100fd600480360360208110156100e757600080fd5b8101908080359060200190929190505050610371565b005b6101076104f2565b6040518082815260200191505060405180910390f35b610125610582565b60405180838152602001821515151581526020019250505060405180910390f35b6101886004803603602081101561015c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105a0565b005b6101926106e7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101dc61070d565b005b6101e6610887565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610256336000357fffffffff00000000000000000000000000000000000000000000000000000000166108ac565b6102c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4610459336000357fffffffff00000000000000000000000000000000000000000000000000000000166108ac565b6104cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b8360028190555060018060146101000a81548160ff02191690831515021790555050505050565b60008060006104ff610582565b80925081935050508061057a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f68617a2d6e6f740000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b819250505090565b600080600254600160149054906101000a900460ff16915091509091565b6105ce336000357fffffffff00000000000000000000000000000000000000000000000000000000166108ac565b610640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a46107f5336000357fffffffff00000000000000000000000000000000000000000000000000000000166108ac565b610867576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600160146101000a81548160ff021916908315150217905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108eb5760019050610aff565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561094a5760019050610aff565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109a95760009050610aff565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b158015610ac157600080fd5b505afa158015610ad5573d6000803e3d6000fd5b505050506040513d6020811015610aeb57600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a7231582014bd5fd030ff737e59255d9fa6f83c502a9822c8743b9de6b077101da834e23064736f6c634300050c0032") - - syntax Bytes ::= "Spotter_bin" [macro] - // -------------------------------------- - rule Spotter_bin => #parseByteStack("0x608060405234801561001057600080fd5b506040516111893803806111898339818101604052602081101561003357600080fd5b810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce8000000600381905550600160048190555050611095806100f46000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80636924500911610071578063692450091461020d578063957aa58c146102175780639c52a7f114610235578063bf353dbb14610279578063d9638d36146102d1578063ebecb39d14610346576100b4565b80631504460f146100b95780631a0b287e146100e757806329ae81141461012957806336569e7714610161578063495d32cb146101ab57806365fae35e146101c9575b600080fd5b6100e5600480360360208110156100cf57600080fd5b810190808035906020019092919050505061039e565b005b610127600480360360608110156100fd57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506105bd565b005b61015f6004803603604081101561013f57600080fd5b8101908080359060200190929190803590602001909291905050506107d7565b005b6101696109dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101b3610a02565b6040518082815260200191505060405180910390f35b61020b600480360360208110156101df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a08565b005b610215610b36565b005b61021f610c27565b6040518082815260200191505060405180910390f35b6102776004803603602081101561024b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c2d565b005b6102bb6004803603602081101561028f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5b565b6040518082815260200191505060405180910390f35b6102fd600480360360208110156102e757600080fd5b8101908080359060200190929190505050610d73565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b61039c6004803603606081101561035c57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db7565b005b6000806001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359e02dd76040518163ffffffff1660e01b81526004016040805180830381600087803b15801561041e57600080fd5b505af1158015610432573d6000803e3d6000fd5b505050506040513d604081101561044857600080fd5b810190808051906020019092919080519060200190929190505050915091506000816104755760006104b1565b6104b061049461048c8560001c633b9aca0061100b565b600354611037565b6001600087815260200190815260200160002060010154611037565b5b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a0b287e85836040518363ffffffff1660e01b815260040180838152602001807f73706f740000000000000000000000000000000000000000000000000000000081525060200182815260200192505050600060405180830381600087803b15801561055857600080fd5b505af115801561056c573d6000803e3d6000fd5b505050507fdfd7467e425a8107cfd368d159957692c25085aacbcf5228ce08f10f2146486e84848360405180848152602001838152602001828152602001935050505060405180910390a150505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610671576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b6001600454146106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f53706f747465722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7f6d617400000000000000000000000000000000000000000000000000000000008214156107315780600160008581526020019081526020016000206001018190555061079f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53706f747465722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461088b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160045414610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f53706f747465722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7f706172000000000000000000000000000000000000000000000000000000000082141561093757806003819055506109a5565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53706f747465722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610abc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60006004819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60045481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ce1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160045414610ee3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f53706f747465722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7f7069700000000000000000000000000000000000000000000000000000000000821415610f6557806001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53706f747465722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600080821480611028575082828385029250828161102557fe5b04145b61103157600080fd5b92915050565b600081611050846b033b2e3c9fd0803ce800000061100b565b8161105757fe5b0490509291505056fea265627a7a72315820b999c6bc8140aa3d6542c1d3f42a7064630777fe8352e66ff244c3e2d8969cfe64736f6c634300050c0032") - - syntax Bytes ::= "Spotter_bin_runtime" [macro] - // ---------------------------------------------- - rule Spotter_bin_runtime => #parseByteStack("0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80636924500911610071578063692450091461020d578063957aa58c146102175780639c52a7f114610235578063bf353dbb14610279578063d9638d36146102d1578063ebecb39d14610346576100b4565b80631504460f146100b95780631a0b287e146100e757806329ae81141461012957806336569e7714610161578063495d32cb146101ab57806365fae35e146101c9575b600080fd5b6100e5600480360360208110156100cf57600080fd5b810190808035906020019092919050505061039e565b005b610127600480360360608110156100fd57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506105bd565b005b61015f6004803603604081101561013f57600080fd5b8101908080359060200190929190803590602001909291905050506107d7565b005b6101696109dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101b3610a02565b6040518082815260200191505060405180910390f35b61020b600480360360208110156101df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a08565b005b610215610b36565b005b61021f610c27565b6040518082815260200191505060405180910390f35b6102776004803603602081101561024b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c2d565b005b6102bb6004803603602081101561028f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5b565b6040518082815260200191505060405180910390f35b6102fd600480360360208110156102e757600080fd5b8101908080359060200190929190505050610d73565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b61039c6004803603606081101561035c57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db7565b005b6000806001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359e02dd76040518163ffffffff1660e01b81526004016040805180830381600087803b15801561041e57600080fd5b505af1158015610432573d6000803e3d6000fd5b505050506040513d604081101561044857600080fd5b810190808051906020019092919080519060200190929190505050915091506000816104755760006104b1565b6104b061049461048c8560001c633b9aca0061100b565b600354611037565b6001600087815260200190815260200160002060010154611037565b5b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631a0b287e85836040518363ffffffff1660e01b815260040180838152602001807f73706f740000000000000000000000000000000000000000000000000000000081525060200182815260200192505050600060405180830381600087803b15801561055857600080fd5b505af115801561056c573d6000803e3d6000fd5b505050507fdfd7467e425a8107cfd368d159957692c25085aacbcf5228ce08f10f2146486e84848360405180848152602001838152602001828152602001935050505060405180910390a150505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610671576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b6001600454146106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f53706f747465722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7f6d617400000000000000000000000000000000000000000000000000000000008214156107315780600160008581526020019081526020016000206001018190555061079f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53706f747465722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461088b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160045414610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f53706f747465722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7f706172000000000000000000000000000000000000000000000000000000000082141561093757806003819055506109a5565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53706f747465722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a4505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610abc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60006004819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450565b60045481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ce1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60006020528060005260406000206000915090505481565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53706f747465722f6e6f742d617574686f72697a65640000000000000000000081525060200191505060405180910390fd5b600160045414610ee3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f53706f747465722f6e6f742d6c6976650000000000000000000000000000000081525060200191505060405180910390fd5b7f7069700000000000000000000000000000000000000000000000000000000000821415610f6557806001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53706f747465722f66696c652d756e7265636f676e697a65642d706172616d0081525060200191505060405180910390fd5b5961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a450505050565b600080821480611028575082828385029250828161102557fe5b04145b61103157600080fd5b92915050565b600081611050846b033b2e3c9fd0803ce800000061100b565b8161105757fe5b0490509291505056fea265627a7a72315820b999c6bc8140aa3d6542c1d3f42a7064630777fe8352e66ff244c3e2d8969cfe64736f6c634300050c0032") - -endmodule diff --git a/tests/specs/mcd/cat-exhaustiveness-spec.k b/tests/specs/mcd/cat-exhaustiveness-spec.k deleted file mode 100644 index b63f21b382..0000000000 --- a/tests/specs/mcd/cat-exhaustiveness-spec.k +++ /dev/null @@ -1,98 +0,0 @@ -requires "verification.k" - -module CAT-EXHAUSTIVENESS-SPEC - imports VERIFICATION - - // Cat__exhaustiveness - claim [Cat..exhaustiveness]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => EVMC_REVERT - _VCallStack - _ - _ => ?_ - - Cat_bin_runtime - #computeValidJumpDests(Cat_bin_runtime) - ACCT_ID - CALLER_ID - VCallData - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - _VStatic - VCallDepth - - - _VSelfDestruct - _ => ?_ - _ => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - _ - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool 1171202608 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool 1763987465 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool 2622662641 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool 436938878 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool 3572022915 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool 3958158237 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool 3647180086 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool 2507842956 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool 1710941022 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool 911646327 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool 1651291077 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool 3207937467 =/=Int #asWord(#range(VCallData, 0, 4) ) - andBool VGas >=Int 40000000 - -endmodule diff --git a/tests/specs/mcd/cat-file-addr-pass-rough-spec.k b/tests/specs/mcd/cat-file-addr-pass-rough-spec.k deleted file mode 100644 index 56d7d61f89..0000000000 --- a/tests/specs/mcd/cat-file-addr-pass-rough-spec.k +++ /dev/null @@ -1,115 +0,0 @@ -requires "verification.k" - -module CAT-FILE-ADDR-PASS-ROUGH-SPEC - imports VERIFICATION - - // Cat_file-addr - claim [Cat.file-addr.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Cat_bin_runtime - #computeValidJumpDests(Cat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("file", #bytes32(ABI_what), #address(ABI_data)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Cat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Cat.vow <- ABI_data ] - ACCT_ID_ORIG_STORAGE - Nonce_Cat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Cat) - - andBool (#rangeBytes(32, ABI_what) - andBool (#rangeAddress(ABI_data) - andBool (#rangeUInt(256, May) - andBool (#rangeAddress(Vow) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#notPrecompileAddress(Vow) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool ((May ==Int 1) - andBool ((VCallValue ==Int 0) - andBool ((ABI_what ==Int #string2Word("vow"))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Cat.wards[CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Cat.vow) ==Int Vow - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Cat.wards[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Cat.vow) ==Int Junk_1 - andBool #Cat.wards[CALLER_ID] =/=Int #Cat.vow - -endmodule diff --git a/tests/specs/mcd/dai-adduu-fail-rough-spec.k b/tests/specs/mcd/dai-adduu-fail-rough-spec.k deleted file mode 100644 index ea3092e734..0000000000 --- a/tests/specs/mcd/dai-adduu-fail-rough-spec.k +++ /dev/null @@ -1,109 +0,0 @@ -requires "verification.k" - -module DAI-ADDUU-FAIL-ROUGH-SPEC - imports VERIFICATION - - // Dai_adduu - claim [Dai.adduu.fail.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => ?FAILURE:EndStatusCode - _VCallStack - _ - _ => ?_ - - Dai_bin_runtime - #computeValidJumpDests(Dai_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => ?_ - _ - 7825 => ?_ - #gas(VGas) => ?_ - VMemoryUsed - _ => ?_ - _ - VCallDepth => ?_ - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Dai_bin_runtime - ACCT_ID_STORAGE => ?_ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Dai - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Dai) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed))))) - - - andBool notBool ( - ((#rangeUInt(256, ABI_x:Int +Int ABI_y:Int))) - ) - ensures - ?FAILURE =/=K EVMC_SUCCESS - -endmodule diff --git a/tests/specs/mcd/dai-symbol-pass-spec.k b/tests/specs/mcd/dai-symbol-pass-spec.k deleted file mode 100644 index 4f31bb4487..0000000000 --- a/tests/specs/mcd/dai-symbol-pass-spec.k +++ /dev/null @@ -1,101 +0,0 @@ -requires "verification.k" - -module DAI-SYMBOL-PASS-SPEC - imports VERIFICATION - - // Dai_symbol - claim [Dai.symbol.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, 32) +Bytes #buf(32, 3) +Bytes b"DAI" +Bytes #buf(29, 0) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Dai_bin_runtime - #computeValidJumpDests(Dai_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("symbol", .TypedArgs) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( VGas +Int -672 ) ) - 0 => ?_ - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Dai_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Dai => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (lengthBytes(CD) <=Int 1250000000 - andBool ((VCallValue ==Int 0))) - - - -endmodule diff --git a/tests/specs/mcd/dstoken-approve-fail-rough-spec.k b/tests/specs/mcd/dstoken-approve-fail-rough-spec.k deleted file mode 100644 index 250cb7b7da..0000000000 --- a/tests/specs/mcd/dstoken-approve-fail-rough-spec.k +++ /dev/null @@ -1,118 +0,0 @@ -requires "verification.k" - -module DSTOKEN-APPROVE-FAIL-ROUGH-SPEC - imports VERIFICATION - - // DSToken_approve - claim [DSToken.approve.fail.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => ?FAILURE:EndStatusCode - _VCallStack - _ - _ => ?_ - - DSToken_bin_runtime - #computeValidJumpDests(DSToken_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("approve", #address(ABI_usr), #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth => ?_ - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - DSToken_bin_runtime - ACCT_ID_STORAGE => ?_ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_DSToken => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeAddress(ABI_usr) - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeUInt(256, Allowed) - andBool (#rangeBool(Stopped) - andBool (#rangeAddress(Owner) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#notPrecompileAddress(Owner) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1)))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #DSToken.allowance[CALLER_ID][ABI_usr]) ==Int Allowed - andBool #lookup(ACCT_ID_STORAGE, #DSToken.owner_stopped) ==Int #WordPackAddrUInt8(Owner, Stopped) - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.allowance[CALLER_ID][ABI_usr]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.owner_stopped) ==Int Junk_1 - andBool #DSToken.allowance[CALLER_ID][ABI_usr] =/=Int #DSToken.owner_stopped - andBool notBool ( - ((Stopped:Int ==Int 0) - andBool ((VCallValue:Int ==Int 0))) - ) - ensures - ?FAILURE =/=K EVMC_SUCCESS - -endmodule diff --git a/tests/specs/mcd/dstoken-burn-self-fail-rough-spec.k b/tests/specs/mcd/dstoken-burn-self-fail-rough-spec.k deleted file mode 100644 index 2ef5ad0815..0000000000 --- a/tests/specs/mcd/dstoken-burn-self-fail-rough-spec.k +++ /dev/null @@ -1,137 +0,0 @@ -requires "verification.k" - -module DSTOKEN-BURN-SELF-FAIL-ROUGH-SPEC - imports VERIFICATION - - // DSToken_burn-self - claim [DSToken.burn-self.fail.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => ?FAILURE:EndStatusCode - _VCallStack - _ - _ => ?_ - - DSToken_bin_runtime - #computeValidJumpDests(DSToken_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("burn", #address(ABI_src), #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth => ?_ - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - DSToken_bin_runtime - ACCT_ID_STORAGE => ?_ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_DSToken - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_DSToken) - - andBool (#rangeAddress(ABI_src) - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeUInt(256, Gem_s) - andBool (#rangeUInt(256, Supply) - andBool (#rangeUInt(256, Allowance) - andBool (#rangeBool(Stoppedd) - andBool (#rangeAddress(Owner) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Owner)) - andBool ((CALLER_ID ==Int Owner) - andBool ((CALLER_ID =/=Int ACCT_ID) - andBool ((CALLER_ID ==Int ABI_src) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #DSToken.allowance[ABI_src][CALLER_ID]) ==Int Allowance - andBool #lookup(ACCT_ID_STORAGE, #DSToken.balances[ABI_src]) ==Int Gem_s - andBool #lookup(ACCT_ID_STORAGE, #DSToken.supply) ==Int Supply - andBool #lookup(ACCT_ID_STORAGE, #DSToken.owner_stopped) ==Int #WordPackAddrUInt8(Owner, Stoppedd) - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.allowance[ABI_src][CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.balances[ABI_src]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.supply) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.owner_stopped) ==Int Junk_3 - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.balances[ABI_src] - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.supply - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.owner_stopped - andBool #DSToken.balances[ABI_src] =/=Int #DSToken.supply - andBool #DSToken.balances[ABI_src] =/=Int #DSToken.owner_stopped - andBool #DSToken.supply =/=Int #DSToken.owner_stopped - andBool notBool ( - (((#rangeUInt(256, Gem_s:Int -Int ABI_wad:Int))) - andBool (((#rangeUInt(256, Supply:Int -Int ABI_wad:Int))) - andBool ((VCallValue:Int ==Int 0) - andBool ((Stoppedd:Int ==Int 0))))) - ) - ensures - ?FAILURE =/=K EVMC_SUCCESS - -endmodule diff --git a/tests/specs/mcd/dstoken-transferfrom-fail-rough-spec.k b/tests/specs/mcd/dstoken-transferfrom-fail-rough-spec.k deleted file mode 100644 index 6fdace3aee..0000000000 --- a/tests/specs/mcd/dstoken-transferfrom-fail-rough-spec.k +++ /dev/null @@ -1,136 +0,0 @@ -requires "verification.k" - -module DSTOKEN-TRANSFERFROM-FAIL-ROUGH-SPEC - imports VERIFICATION - - // DSToken_transferFrom - claim [DSToken.transferFrom.fail.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => ?FAILURE:EndStatusCode - _VCallStack - _ - _ => ?_ - - DSToken_bin_runtime - #computeValidJumpDests(DSToken_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("transferFrom", #address(ABI_src), #address(ABI_dst), #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth => ?_ - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - DSToken_bin_runtime - ACCT_ID_STORAGE => ?_ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_DSToken => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeAddress(ABI_src) - andBool (#rangeAddress(ABI_dst) - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeUInt(256, Gem_s) - andBool (#rangeUInt(256, Gem_d) - andBool (#rangeUInt(256, Allowance) - andBool (#rangeAddress(Owner) - andBool (#rangeBool(Stopped) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Owner)) - andBool ((ABI_src =/=Int ABI_dst) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3)))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #DSToken.allowance[ABI_src][CALLER_ID]) ==Int Allowance - andBool #lookup(ACCT_ID_STORAGE, #DSToken.balances[ABI_src]) ==Int Gem_s - andBool #lookup(ACCT_ID_STORAGE, #DSToken.balances[ABI_dst]) ==Int Gem_d - andBool #lookup(ACCT_ID_STORAGE, #DSToken.owner_stopped) ==Int #WordPackAddrUInt8(Owner, Stopped) - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.allowance[ABI_src][CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.balances[ABI_src]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.balances[ABI_dst]) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.owner_stopped) ==Int Junk_3 - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.balances[ABI_src] - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.balances[ABI_dst] - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.owner_stopped - andBool #DSToken.balances[ABI_src] =/=Int #DSToken.balances[ABI_dst] - andBool #DSToken.balances[ABI_src] =/=Int #DSToken.owner_stopped - andBool #DSToken.balances[ABI_dst] =/=Int #DSToken.owner_stopped - andBool notBool ( - (((#rangeUInt(256, Gem_s:Int -Int ABI_wad:Int))) - andBool (((#rangeUInt(256, Gem_d:Int +Int ABI_wad:Int))) - andBool (((Allowance:Int ==Int maxUInt256 orBool ABI_src:Int ==Int CALLER_ID:Int) orBool (ABI_wad:Int <=Int Allowance:Int)) - andBool ((VCallValue:Int ==Int 0) - andBool ((Stopped:Int ==Int 0)))))) - ) - ensures - ?FAILURE =/=K EVMC_SUCCESS - -endmodule diff --git a/tests/specs/mcd/dsvalue-peek-pass-rough-spec.k b/tests/specs/mcd/dsvalue-peek-pass-rough-spec.k deleted file mode 100644 index 504fc63636..0000000000 --- a/tests/specs/mcd/dsvalue-peek-pass-rough-spec.k +++ /dev/null @@ -1,111 +0,0 @@ -requires "verification.k" - -module DSVALUE-PEEK-PASS-ROUGH-SPEC - imports VERIFICATION - - // DSValue_peek - claim [DSValue.peek.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, Value) +Bytes #buf(32, Ok) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - DSValue_bin_runtime - #computeValidJumpDests(DSValue_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("peek", .TypedArgs) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - DSValue_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_DSValue => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeAddress(Owner) - andBool (#rangeBytes(32, Value) - andBool (#rangeBool(Ok) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#notPrecompileAddress(Owner) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool ((VCallValue ==Int 0))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #DSValue.owner_has) ==Int #WordPackAddrUInt8(Owner, Ok) - andBool #lookup(ACCT_ID_STORAGE, #DSValue.val) ==Int Value - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSValue.owner_has) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSValue.val) ==Int Junk_1 - andBool #DSValue.owner_has =/=Int #DSValue.val - -endmodule diff --git a/tests/specs/mcd/dsvalue-read-pass-spec.k b/tests/specs/mcd/dsvalue-read-pass-spec.k deleted file mode 100644 index bcff08a0e2..0000000000 --- a/tests/specs/mcd/dsvalue-read-pass-spec.k +++ /dev/null @@ -1,113 +0,0 @@ -requires "verification.k" - -module DSVALUE-READ-PASS-SPEC - imports VERIFICATION - - // DSValue_read - claim [DSValue.read.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, Value) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - DSValue_bin_runtime - #computeValidJumpDests(DSValue_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("read", .TypedArgs) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( VGas +Int -2043 ) ) - 0 => ?_ - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - DSValue_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_DSValue - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeAddress(Owner) - andBool (#rangeBytes(32, Value) - andBool (#rangeBool(Ok) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#notPrecompileAddress(Owner) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool ((VCallValue ==Int 0) - andBool ((Ok ==Int 1)))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #DSValue.owner_has) ==Int #WordPackAddrUInt8(Owner, Ok) - andBool #lookup(ACCT_ID_STORAGE, #DSValue.val) ==Int Value - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSValue.owner_has) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSValue.val) ==Int Junk_1 - andBool #DSValue.owner_has =/=Int #DSValue.val - andBool #rangeNonce(Nonce_DSValue) - -endmodule diff --git a/tests/specs/mcd/dsvalue-read-pass-summarize-spec.k b/tests/specs/mcd/dsvalue-read-pass-summarize-spec.k deleted file mode 100644 index a6f764a552..0000000000 --- a/tests/specs/mcd/dsvalue-read-pass-summarize-spec.k +++ /dev/null @@ -1,141 +0,0 @@ -requires "verification.k" - -module DSVALUE-READ-PASS-SUMMARIZE-SPEC - imports VERIFICATION - -// Prove that all paths of execution for Dai.read fail -// 333s -// claim [DSValue.read.pass]: -// #execute => #halt ... -// ISTANBUL -// -// _ => ?FAILURE:EndStatusCode -// -// ACCT_ID -// DSValue_bin_runtime -// #computeValidJumpDests(DSValue_bin_runtime) -// #abiCallData("read", .TypedArgs) +Bytes CD => ?_ -// #gas(VGas) => ?_ -// 0 => ?_ -// .WordStack => ?_ -// .Bytes => ?_ -// 0 => ?_ -// (_ => ?_) -// -// (_ => ?_) -// -// -// ACCT_ID -// ACCT_STORAGE => ?_ -// (_ => ?_) -// -// ensures ?FAILURE =/=K EVMC_SUCCESS - -// Counter-example provided by prover -// #Not( { 255 &Int #lookup( ACCT_STORAGE , 1 ) /Int 1461501637330902918203684832716283019655932542976 #Equals 0 } ) -// #And -// -// -// #halt -// ~> _DotVar2 -// -// -// ISTANBUL -// -// -// -// -// #buf( 32 , #lookup( ACCT_STORAGE , 2 ) ) -// -// -// EVMC SUCCESS -// -// 284 -// -// DSValue_bin_runtime -// #computeValidJumpDests(DSValue_bin_runtime) -// -// ACCT_ID -// -// -// b"W\xde&\xa4" +Bytes CD -// -// -// 0 -// -// -// 1474176676 : .WordStack -// -// -// b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80" [ 128 := #buf( 32 , #lookup( ACCT_STORAGE , 2 ) ) ] -// -// -// 284 -// -// -// #gas( VGas +Int -2043 ) -// -// -// 5 -// -// ... -// -// ... -// -// -// -// AccountCellMapItem( -// ACCT_ID -// , -// -// ACCT_ID -// -// -// ACCT_STORAGE -// -// ... -// ) _DotVar5 -// -// ... -// -// -// ... -// -// ... -// -// #And { false #Equals -// ACCT_ID -// in _DotVar5 keys( ) } - -// Converted to summary -// 313s - claim [DSValue.read.pass]: - #execute => #halt ... - ISTANBUL - true - - _ => #buf(32, #lookup(ACCT_STORAGE, 2)) // from counterexample - _ => EVMC_SUCCESS - - ACCT_ID - DSValue_bin_runtime - #computeValidJumpDests(DSValue_bin_runtime) - #abiCallData("read", .TypedArgs) +Bytes _CD => ?_ - 0 // from counterexample - #gas(VGas) => #gas(VGas +Int -2043) // from counterexample - 0 => ?_ - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - (_ => ?_) - - (_ => ?_) - - - ACCT_ID - ACCT_STORAGE => ?_ - (_ => ?_) - - requires notBool (255 &Int (#lookup( ACCT_STORAGE , 1 ) /Int 1461501637330902918203684832716283019655932542976)) ==Int 0 // from counterexample - -endmodule diff --git a/tests/specs/mcd/end-cash-pass-rough-spec.k b/tests/specs/mcd/end-cash-pass-rough-spec.k deleted file mode 100644 index c6ccbbadd3..0000000000 --- a/tests/specs/mcd/end-cash-pass-rough-spec.k +++ /dev/null @@ -1,485 +0,0 @@ -requires "verification.k" - -module END-CASH-PASS-ROUGH-SPEC - imports VERIFICATION - - // End_cash - claim [End.cash.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - End_bin_runtime - #computeValidJumpDests(End_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("cash", #bytes32(ABI_ilk), #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - End_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #End.out[ABI_ilk][CALLER_ID] <- Out +Int ABI_wad ] - ACCT_ID_ORIG_STORAGE - Nonce_End - - - Vat - Vat_balance - Vat_bin_runtime - Vat_STORAGE => Vat_STORAGE [ #Vat.gem[ABI_ilk][ACCT_ID] <- Gem_e -Int #rmul(ABI_wad, Fix) ] [ #Vat.gem[ABI_ilk][CALLER_ID] <- Gem_c +Int #rmul(ABI_wad, Fix) ] - Vat_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_End) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeBytes(32, ABI_ilk) - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeAddress(Vat) - andBool (#rangeUInt(256, Fix) - andBool (#rangeUInt(256, Bag) - andBool (#rangeUInt(256, Out) - andBool (#rangeUInt(256, Gem_e) - andBool (#rangeUInt(256, Gem_c) - andBool (#rangeUInt(256, Vat_balance) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Vat)) - andBool ((ACCT_ID =/=Int Vat) - andBool ((ACCT_ID =/=Int CALLER_ID) - andBool ((Vat =/=Int 0) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (#rangeUInt(256, Junk_7) - andBool (((Fix =/=Int 0)) - andBool (((Out +Int ABI_wad <=Int Bag)) - andBool (((VCallValue ==Int 0)) - andBool (((VCallDepth #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - End_bin_runtime - #computeValidJumpDests(End_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 14775 => 14800 - #gas(VGas) => #gas ( ( VGas +Int -54 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - End_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_End - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_End) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x +Int ABI_y))))))) - - - [trusted] - - - // End_rmul - claim [End.rmul.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - End_bin_runtime - #computeValidJumpDests(End_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : (ABI_x *Int ABI_y) /Int #Ray : WS - _ - 14623 => 14663 - #gas(VGas) => #if ABI_y ==Int 0 - #then #gas ( ( VGas +Int -127 ) ) - #else #gas ( ( VGas +Int -179 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - End_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_End - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_End) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x *Int ABI_y))))))) - - - [trusted] - - - // Vat_flux-diff - claim [Vat.flux-diff.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("flux", #bytes32(ABI_ilk), #address(ABI_src), #address(ABI_dst), #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( VGas -Int Csstore( ISTANBUL , ( Gem_src -Int ABI_wad ) , Gem_src , Junk_1 ) ) -Int Csstore( ISTANBUL , ( Gem_dst +Int ABI_wad ) , Gem_dst , Junk_2 ) ) +Int -8307 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.gem[ABI_ilk][ABI_src] <- Gem_src -Int ABI_wad ] [ #Vat.gem[ABI_ilk][ABI_dst] <- Gem_dst +Int ABI_wad ] - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeBytes(32, ABI_ilk) - andBool (#rangeAddress(ABI_src) - andBool (#rangeAddress(ABI_dst) - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeUInt(256, May) - andBool (#rangeUInt(256, Gem_src) - andBool (#rangeUInt(256, Gem_dst) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((ABI_src =/=Int ABI_dst) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool ((((May ==Int 1 orBool ABI_src ==Int CALLER_ID))) - andBool (((VCallValue ==Int 0)) - andBool ((#rangeUInt(256, Gem_src -Int ABI_wad)) - andBool ((#rangeUInt(256, Gem_dst +Int ABI_wad)))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Vat.gem[ABI_ilk][ABI_src]) ==Int Gem_src - andBool #lookup(ACCT_ID_STORAGE, #Vat.gem[ABI_ilk][ABI_dst]) ==Int Gem_dst - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.gem[ABI_ilk][ABI_src]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.gem[ABI_ilk][ABI_dst]) ==Int Junk_2 - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.gem[ABI_ilk][ABI_src] - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.gem[ABI_ilk][ABI_dst] - andBool #Vat.gem[ABI_ilk][ABI_src] =/=Int #Vat.gem[ABI_ilk][ABI_dst] - [trusted] - - -endmodule diff --git a/tests/specs/mcd/end-pack-pass-rough-spec.k b/tests/specs/mcd/end-pack-pass-rough-spec.k deleted file mode 100644 index 8ce9b8b4a6..0000000000 --- a/tests/specs/mcd/end-pack-pass-rough-spec.k +++ /dev/null @@ -1,486 +0,0 @@ -requires "verification.k" - -module END-PACK-PASS-ROUGH-SPEC - imports VERIFICATION - - // End_pack - claim [End.pack.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - End_bin_runtime - #computeValidJumpDests(End_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("pack", #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - End_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #End.bag[CALLER_ID] <- Bag +Int ABI_wad ] - ACCT_ID_ORIG_STORAGE - Nonce_End - - - Vat - Vat_balance - Vat_bin_runtime - Vat_STORAGE => Vat_STORAGE [ #Vat.dai[CALLER_ID] <- Dai -Int ABI_wad *Int #Ray ] [ #Vat.dai[Vow] <- Joy +Int ABI_wad *Int #Ray ] - Vat_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_End) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeAddress(Vat) - andBool (#rangeAddress(Vow) - andBool (#rangeUInt(256, Debt) - andBool (#rangeUInt(256, Bag) - andBool (#rangeUInt(256, Joy) - andBool (#rangeUInt(256, Dai) - andBool (#rangeUInt(256, Can) - andBool (#rangeUInt(256, Vat_balance) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Vat)) - andBool ((#notPrecompileAddress(Vow)) - andBool ((ACCT_ID =/=Int Vat) - andBool ((CALLER_ID =/=Int Vow) - andBool ((CALLER_ID =/=Int ACCT_ID) - andBool ((Vat =/=Int 0) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (((Debt =/=Int 0)) - andBool (((Can ==Int 1)) - andBool (((VCallValue ==Int 0)) - andBool (((VCallDepth #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - End_bin_runtime - #computeValidJumpDests(End_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x *Int ABI_y : WS - _ - 14690 => 14733 - #gas(VGas) => #if ABI_y ==Int 0 - #then #gas ( ( VGas +Int -54 ) ) - #else #gas ( ( VGas +Int -106 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - End_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_End - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_End) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x *Int ABI_y))))))) - - - [trusted] - - - // End_adduu - claim [End.adduu.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - End_bin_runtime - #computeValidJumpDests(End_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 14775 => 14800 - #gas(VGas) => #gas ( ( VGas +Int -54 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - End_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_End - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_End) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x +Int ABI_y))))))) - - - [trusted] - - - // Vat_move-diff - claim [Vat.move-diff.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("move", #address(ABI_src), #address(ABI_dst), #uint256(ABI_rad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( VGas -Int Csstore( ISTANBUL , ( Dai_src -Int ABI_rad ) , Dai_src , Junk_1 ) ) -Int Csstore( ISTANBUL , ( Dai_dst +Int ABI_rad ) , Dai_dst , Junk_2 ) ) +Int -7943 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.dai[ABI_src] <- Dai_src -Int ABI_rad ] [ #Vat.dai[ABI_dst] <- Dai_dst +Int ABI_rad ] - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeAddress(ABI_src) - andBool (#rangeAddress(ABI_dst) - andBool (#rangeUInt(256, ABI_rad) - andBool (#rangeUInt(256, Dai_dst) - andBool (#rangeUInt(256, Dai_src) - andBool (#rangeUInt(256, May) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((ABI_src =/=Int ABI_dst) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool ((((May ==Int 1 orBool ABI_src ==Int CALLER_ID))) - andBool (((VCallValue ==Int 0)) - andBool ((#rangeUInt(256, Dai_src -Int ABI_rad)) - andBool ((#rangeUInt(256, Dai_dst +Int ABI_rad))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_src]) ==Int Dai_src - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_dst]) ==Int Dai_dst - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_src]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_dst]) ==Int Junk_2 - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.dai[ABI_src] - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.dai[ABI_dst] - andBool #Vat.dai[ABI_src] =/=Int #Vat.dai[ABI_dst] - [trusted] - - -endmodule diff --git a/tests/specs/mcd/end-subuu-pass-spec.k b/tests/specs/mcd/end-subuu-pass-spec.k deleted file mode 100644 index 40bcbc22cf..0000000000 --- a/tests/specs/mcd/end-subuu-pass-spec.k +++ /dev/null @@ -1,104 +0,0 @@ -requires "verification.k" - -module END-SUBUU-PASS-SPEC - imports VERIFICATION - - // End_subuu - claim [End.subuu.pass]: - #execute ~> CONTINUATION => JUMP JMPTO ~> #pc [ JUMP ] ~> #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - End_bin_runtime - #computeValidJumpDests(End_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO:Int : WS => ABI_x -Int ABI_y : WS - _ - 14664 => 14689 - #gas(VGas) => #gas ( ( VGas +Int -62 ) ) // -54 - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - End_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - _Nonce_End => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x -Int ABI_y))))))) - - - -endmodule diff --git a/tests/specs/mcd/flapper-tend-guy-diff-pass-rough-spec.k b/tests/specs/mcd/flapper-tend-guy-diff-pass-rough-spec.k deleted file mode 100644 index a4bb115252..0000000000 --- a/tests/specs/mcd/flapper-tend-guy-diff-pass-rough-spec.k +++ /dev/null @@ -1,559 +0,0 @@ -requires "verification.k" - -module FLAPPER-TEND-GUY-DIFF-PASS-ROUGH-SPEC - imports VERIFICATION - - // Flapper_tend-guy-diff - claim [Flapper.tend-guy-diff.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flapper_bin_runtime - #computeValidJumpDests(Flapper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("tend", #uint256(ABI_id), #uint256(ABI_lot), #uint256(ABI_bid)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flapper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flapper.bids[ABI_id].bid <- ABI_bid ] [ #Flapper.bids[ABI_id].guy_tic_end <- #WordPackAddrUInt48UInt48(CALLER_ID, TIME +Int Ttl, End) ] - ACCT_ID_ORIG_STORAGE - Nonce_Flapper - - - DSToken - DSToken_balance - DSToken_bin_runtime - DSToken_STORAGE => DSToken_STORAGE [ #DSToken.allowance[CALLER_ID][ACCT_ID] <- #if (Allowed ==Int maxUInt256) #then Allowed #else Allowed -Int ABI_bid #fi ] [ #DSToken.balances[CALLER_ID] <- Gem_u -Int ABI_bid ] [ #DSToken.balances[Guy] <- Gem_g +Int Bid ] [ #DSToken.balances[ACCT_ID] <- Gem_a +Int (ABI_bid -Int Bid) ] - DSToken_ORIG_STORAGE - Nonce_DSToken - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Flapper) - andBool #rangeNonce(Nonce_DSToken) - - andBool (#rangeUInt(256, ABI_id) - andBool (#rangeUInt(256, ABI_lot) - andBool (#rangeUInt(256, ABI_bid) - andBool (#rangeAddress(DSToken) - andBool (#rangeUInt(256, Live) - andBool (#rangeUInt(48, Ttl) - andBool (#rangeUInt(48, Tau) - andBool (#rangeUInt(256, Beg) - andBool (#rangeUInt(256, Bid) - andBool (#rangeUInt(256, Lot) - andBool (#rangeAddress(Guy) - andBool (#rangeUInt(48, Tic) - andBool (#rangeUInt(48, End) - andBool (#rangeUInt(256, Allowed) - andBool (#rangeUInt(256, Gem_g) - andBool (#rangeUInt(256, Gem_a) - andBool (#rangeUInt(256, Gem_u) - andBool (#rangeAddress(Owner) - andBool (#rangeBool(Stopped) - andBool (#rangeUInt(256, DSToken_balance) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(DSToken)) - andBool ((#notPrecompileAddress(Guy)) - andBool ((#notPrecompileAddress(Owner)) - andBool ((ACCT_ID =/=Int DSToken) - andBool ((#rangeUInt(48, TIME)) - andBool ((CALLER_ID =/=Int ACCT_ID) - andBool ((CALLER_ID =/=Int Guy) - andBool ((ACCT_ID =/=Int Guy) - andBool ((DSToken =/=Int 0) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (#rangeUInt(256, Junk_7) - andBool (#rangeUInt(256, Junk_8) - andBool (#rangeUInt(256, Junk_9) - andBool (#rangeUInt(256, Junk_10) - andBool (#rangeUInt(256, Junk_11) - andBool (((VCallValue ==Int 0)) - andBool (((VCallDepth Int TIME orBool Tic ==Int 0)) - andBool (((End >Int TIME)) - andBool (((TIME +Int Ttl <=Int maxUInt48)) - andBool (((ABI_lot ==Int Lot)) - andBool (((ABI_bid >Int Bid)) - andBool (((ABI_bid *Int #Wad <=Int maxUInt256)) - andBool (((ABI_bid *Int #Wad >=Int Beg *Int Bid)) - andBool ((#rangeUInt(256, Gem_u -Int ABI_bid)) - andBool ((#rangeUInt(256, Gem_g +Int Bid)) - andBool ((#rangeUInt(256, Gem_a +Int (ABI_bid -Int Bid))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Flapper.gem) ==Int DSToken - andBool #lookup(ACCT_ID_STORAGE, #Flapper.live) ==Int Live - andBool #lookup(ACCT_ID_STORAGE, #Flapper.ttl_tau) ==Int #WordPackUInt48UInt48(Ttl, Tau) - andBool #lookup(ACCT_ID_STORAGE, #Flapper.beg) ==Int Beg - andBool #lookup(ACCT_ID_STORAGE, #Flapper.bids[ABI_id].bid) ==Int Bid - andBool #lookup(ACCT_ID_STORAGE, #Flapper.bids[ABI_id].lot) ==Int Lot - andBool #lookup(ACCT_ID_STORAGE, #Flapper.bids[ABI_id].guy_tic_end) ==Int #WordPackAddrUInt48UInt48(Guy, Tic, End) - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flapper.gem) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flapper.live) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flapper.ttl_tau) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flapper.beg) ==Int Junk_3 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flapper.bids[ABI_id].bid) ==Int Junk_4 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flapper.bids[ABI_id].lot) ==Int Junk_5 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flapper.bids[ABI_id].guy_tic_end) ==Int Junk_6 - andBool #Flapper.gem =/=Int #Flapper.live - andBool #Flapper.gem =/=Int #Flapper.ttl_tau - andBool #Flapper.gem =/=Int #Flapper.beg - andBool #Flapper.gem =/=Int #Flapper.bids[ABI_id].bid - andBool #Flapper.gem =/=Int #Flapper.bids[ABI_id].lot - andBool #Flapper.gem =/=Int #Flapper.bids[ABI_id].guy_tic_end - andBool #Flapper.live =/=Int #Flapper.ttl_tau - andBool #Flapper.live =/=Int #Flapper.beg - andBool #Flapper.live =/=Int #Flapper.bids[ABI_id].bid - andBool #Flapper.live =/=Int #Flapper.bids[ABI_id].lot - andBool #Flapper.live =/=Int #Flapper.bids[ABI_id].guy_tic_end - andBool #Flapper.ttl_tau =/=Int #Flapper.beg - andBool #Flapper.ttl_tau =/=Int #Flapper.bids[ABI_id].bid - andBool #Flapper.ttl_tau =/=Int #Flapper.bids[ABI_id].lot - andBool #Flapper.ttl_tau =/=Int #Flapper.bids[ABI_id].guy_tic_end - andBool #Flapper.beg =/=Int #Flapper.bids[ABI_id].bid - andBool #Flapper.beg =/=Int #Flapper.bids[ABI_id].lot - andBool #Flapper.beg =/=Int #Flapper.bids[ABI_id].guy_tic_end - andBool #Flapper.bids[ABI_id].bid =/=Int #Flapper.bids[ABI_id].lot - andBool #Flapper.bids[ABI_id].bid =/=Int #Flapper.bids[ABI_id].guy_tic_end - andBool #Flapper.bids[ABI_id].lot =/=Int #Flapper.bids[ABI_id].guy_tic_end - andBool #lookup(DSToken_STORAGE, #DSToken.allowance[CALLER_ID][ACCT_ID]) ==Int Allowed - andBool #lookup(DSToken_STORAGE, #DSToken.balances[CALLER_ID]) ==Int Gem_u - andBool #lookup(DSToken_STORAGE, #DSToken.balances[Guy]) ==Int Gem_g - andBool #lookup(DSToken_STORAGE, #DSToken.balances[ACCT_ID]) ==Int Gem_a - andBool #lookup(DSToken_STORAGE, #DSToken.owner_stopped) ==Int #WordPackAddrUInt8(Owner, Stopped) - andBool #lookup(DSToken_ORIG_STORAGE, #DSToken.allowance[CALLER_ID][ACCT_ID]) ==Int Junk_7 - andBool #lookup(DSToken_ORIG_STORAGE, #DSToken.balances[CALLER_ID]) ==Int Junk_8 - andBool #lookup(DSToken_ORIG_STORAGE, #DSToken.balances[Guy]) ==Int Junk_9 - andBool #lookup(DSToken_ORIG_STORAGE, #DSToken.balances[ACCT_ID]) ==Int Junk_10 - andBool #lookup(DSToken_ORIG_STORAGE, #DSToken.owner_stopped) ==Int Junk_11 - andBool #DSToken.allowance[CALLER_ID][ACCT_ID] =/=Int #DSToken.balances[CALLER_ID] - andBool #DSToken.allowance[CALLER_ID][ACCT_ID] =/=Int #DSToken.balances[Guy] - andBool #DSToken.allowance[CALLER_ID][ACCT_ID] =/=Int #DSToken.balances[ACCT_ID] - andBool #DSToken.allowance[CALLER_ID][ACCT_ID] =/=Int #DSToken.owner_stopped - andBool #DSToken.balances[CALLER_ID] =/=Int #DSToken.balances[Guy] - andBool #DSToken.balances[CALLER_ID] =/=Int #DSToken.balances[ACCT_ID] - andBool #DSToken.balances[CALLER_ID] =/=Int #DSToken.owner_stopped - andBool #DSToken.balances[Guy] =/=Int #DSToken.balances[ACCT_ID] - andBool #DSToken.balances[Guy] =/=Int #DSToken.owner_stopped - andBool #DSToken.balances[ACCT_ID] =/=Int #DSToken.owner_stopped - - // Flapper_addu48u48 - claim [Flapper.addu48u48.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Flapper_bin_runtime - #computeValidJumpDests(Flapper_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 8945 => 8986 - #gas(VGas) => #gas ( ( VGas +Int -66 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flapper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Flapper - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Flapper) - - andBool (#rangeUInt(48, ABI_x) - andBool (#rangeUInt(48, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(48, ABI_x +Int ABI_y))))))) - - - [trusted] - - - // Flapper_muluu - claim [Flapper.muluu.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Flapper_bin_runtime - #computeValidJumpDests(Flapper_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x *Int ABI_y : WS - _ - 8901 => 8944 - #gas(VGas) => #if ABI_y ==Int 0 - #then #gas ( ( VGas +Int -54 ) ) - #else #gas ( ( VGas +Int -106 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flapper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Flapper - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Flapper) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x *Int ABI_y))))))) - - - [trusted] - - - // DSToken_move - claim [DSToken.move.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - DSToken_bin_runtime - #computeValidJumpDests(DSToken_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("move", #address(ABI_src), #address(ABI_dst), #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #if ( #lookup( ACCT_ID_STORAGE , #hashedLocation("Solidity", 2, ABI_src CALLER_ID .IntList) ) ==Int maxUInt256 andBool ( Allowance ==Int maxUInt256 andBool ( maxUInt256 ==Int maxUInt256 orBool ABI_wad <=Int maxUInt256 ) ) ) - #then #gas ( ( ( ( VGas -Int Csstore( ISTANBUL , ( Gem_s -Int ABI_wad ) , Gem_s , Junk_1 ) ) -Int Csstore( ISTANBUL , ( Gem_d +Int ABI_wad ) , Gem_d , Junk_2 ) ) +Int -7281 ) ) - #else #gas ( ( ( ( ( VGas -Int Csstore( ISTANBUL , ( Allowance -Int ABI_wad ) , Allowance , Junk_0 ) ) -Int Csstore( ISTANBUL , ( Gem_s -Int ABI_wad ) , Gem_s , Junk_1 ) ) -Int Csstore( ISTANBUL , ( Gem_d +Int ABI_wad ) , Gem_d , Junk_2 ) ) +Int -9538 ) ) - #fi - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - DSToken_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #DSToken.allowance[ABI_src][CALLER_ID] <- #if (ABI_src ==Int CALLER_ID orBool Allowance ==Int maxUInt256) #then Allowance #else Allowance -Int ABI_wad #fi ] [ #DSToken.balances[ABI_src] <- Gem_s -Int ABI_wad ] [ #DSToken.balances[ABI_dst] <- Gem_d +Int ABI_wad ] - ACCT_ID_ORIG_STORAGE - Nonce_DSToken - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_DSToken) - - andBool (#rangeAddress(ABI_src) - andBool (#rangeAddress(ABI_dst) - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeUInt(256, Gem_s) - andBool (#rangeUInt(256, Gem_d) - andBool (#rangeUInt(256, Allowance) - andBool (#rangeAddress(Owner) - andBool (#rangeBool(Stopped) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Owner)) - andBool ((ABI_src =/=Int ABI_dst) - andBool ((ABI_src =/=Int CALLER_ID) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (((#rangeUInt(256, Gem_s -Int ABI_wad))) - andBool (((#rangeUInt(256, Gem_d +Int ABI_wad))) - andBool (((Allowance ==Int maxUInt256) orBool (ABI_wad <=Int Allowance)) - andBool ((VCallValue ==Int 0) - andBool ((Stopped ==Int 0)))))))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #DSToken.allowance[ABI_src][CALLER_ID]) ==Int Allowance - andBool #lookup(ACCT_ID_STORAGE, #DSToken.balances[ABI_src]) ==Int Gem_s - andBool #lookup(ACCT_ID_STORAGE, #DSToken.balances[ABI_dst]) ==Int Gem_d - andBool #lookup(ACCT_ID_STORAGE, #DSToken.owner_stopped) ==Int #WordPackAddrUInt8(Owner, Stopped) - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.allowance[ABI_src][CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.balances[ABI_src]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.balances[ABI_dst]) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.owner_stopped) ==Int Junk_3 - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.balances[ABI_src] - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.balances[ABI_dst] - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.owner_stopped - andBool #DSToken.balances[ABI_src] =/=Int #DSToken.balances[ABI_dst] - andBool #DSToken.balances[ABI_src] =/=Int #DSToken.owner_stopped - andBool #DSToken.balances[ABI_dst] =/=Int #DSToken.owner_stopped - [trusted] - - -endmodule diff --git a/tests/specs/mcd/flapper-yank-pass-rough-spec.k b/tests/specs/mcd/flapper-yank-pass-rough-spec.k deleted file mode 100644 index a3fff85f44..0000000000 --- a/tests/specs/mcd/flapper-yank-pass-rough-spec.k +++ /dev/null @@ -1,305 +0,0 @@ -requires "verification.k" - -module FLAPPER-YANK-PASS-ROUGH-SPEC - imports VERIFICATION - - // Flapper_yank - claim [Flapper.yank.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flapper_bin_runtime - #computeValidJumpDests(Flapper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("yank", #uint256(ABI_id)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flapper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flapper.bids[ABI_id].bid <- 0 ] [ #Flapper.bids[ABI_id].lot <- 0 ] [ #Flapper.bids[ABI_id].guy_tic_end <- 0 ] - ACCT_ID_ORIG_STORAGE - Nonce_Flapper - - - DSToken - DSToken_balance - DSToken_bin_runtime - DSToken_STORAGE => DSToken_STORAGE [ #DSToken.balances[ACCT_ID] <- Gem_a -Int Bid ] [ #DSToken.balances[Guy] <- Gem_g +Int Bid ] - DSToken_ORIG_STORAGE - Nonce_DSToken - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_id) - andBool (#rangeUInt(256, Live) - andBool (#rangeAddress(DSToken) - andBool (#rangeUInt(256, Bid) - andBool (#rangeUInt(256, Lot) - andBool (#rangeAddress(Guy) - andBool (#rangeUInt(48, Tic) - andBool (#rangeUInt(48, End) - andBool (#rangeUInt(256, Gem_a) - andBool (#rangeUInt(256, Gem_g) - andBool (#rangeBool(Stopped) - andBool (#rangeAddress(Owner) - andBool (#rangeUInt(256, DSToken_balance) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(DSToken)) - andBool ((#notPrecompileAddress(Guy)) - andBool ((#notPrecompileAddress(Owner)) - andBool ((ACCT_ID =/=Int DSToken) - andBool (((DSToken =/=Int 0)) - andBool ((ACCT_ID =/=Int Guy) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (#rangeUInt(256, Junk_7) - andBool (((Live ==Int 0)) - andBool (((Guy =/=Int 0)) - andBool (((Stopped ==Int 0)) - andBool (((VCallDepth #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - DSToken_bin_runtime - #computeValidJumpDests(DSToken_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("move", #address(ABI_src), #address(ABI_dst), #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #if ( #lookup( ACCT_ID_STORAGE , #hashedLocation("Solidity", 2, ABI_src CALLER_ID .IntList) ) ==Int maxUInt256 andBool ( Allowance ==Int maxUInt256 andBool ( maxUInt256 ==Int maxUInt256 orBool ABI_wad <=Int maxUInt256 ) ) ) - #then #gas ( ( ( ( VGas -Int Csstore( ISTANBUL , ( Gem_s -Int ABI_wad ) , Gem_s , Junk_1 ) ) -Int Csstore( ISTANBUL , ( Gem_d +Int ABI_wad ) , Gem_d , Junk_2 ) ) +Int -7281 ) ) - #else #gas ( ( ( ( ( VGas -Int Csstore( ISTANBUL , ( Allowance -Int ABI_wad ) , Allowance , Junk_0 ) ) -Int Csstore( ISTANBUL , ( Gem_s -Int ABI_wad ) , Gem_s , Junk_1 ) ) -Int Csstore( ISTANBUL , ( Gem_d +Int ABI_wad ) , Gem_d , Junk_2 ) ) +Int -9538 ) ) - #fi - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - DSToken_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #DSToken.allowance[ABI_src][CALLER_ID] <- #if (ABI_src ==Int CALLER_ID orBool Allowance ==Int maxUInt256) #then Allowance #else Allowance -Int ABI_wad #fi ] [ #DSToken.balances[ABI_src] <- Gem_s -Int ABI_wad ] [ #DSToken.balances[ABI_dst] <- Gem_d +Int ABI_wad ] - ACCT_ID_ORIG_STORAGE - Nonce_DSToken - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeAddress(ABI_src) - andBool (#rangeAddress(ABI_dst) - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeUInt(256, Gem_s) - andBool (#rangeUInt(256, Gem_d) - andBool (#rangeUInt(256, Allowance) - andBool (#rangeAddress(Owner) - andBool (#rangeBool(Stopped) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Owner)) - andBool ((ABI_src =/=Int ABI_dst) - andBool ((ABI_src =/=Int CALLER_ID) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (((#rangeUInt(256, Gem_s -Int ABI_wad))) - andBool (((#rangeUInt(256, Gem_d +Int ABI_wad))) - andBool (((Allowance ==Int maxUInt256) orBool (ABI_wad <=Int Allowance)) - andBool ((VCallValue ==Int 0) - andBool ((Stopped ==Int 0)))))))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #DSToken.allowance[ABI_src][CALLER_ID]) ==Int Allowance - andBool #lookup(ACCT_ID_STORAGE, #DSToken.balances[ABI_src]) ==Int Gem_s - andBool #lookup(ACCT_ID_STORAGE, #DSToken.balances[ABI_dst]) ==Int Gem_d - andBool #lookup(ACCT_ID_STORAGE, #DSToken.owner_stopped) ==Int #WordPackAddrUInt8(Owner, Stopped) - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.allowance[ABI_src][CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.balances[ABI_src]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.balances[ABI_dst]) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.owner_stopped) ==Int Junk_3 - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.balances[ABI_src] - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.balances[ABI_dst] - andBool #DSToken.allowance[ABI_src][CALLER_ID] =/=Int #DSToken.owner_stopped - andBool #DSToken.balances[ABI_src] =/=Int #DSToken.balances[ABI_dst] - andBool #DSToken.balances[ABI_src] =/=Int #DSToken.owner_stopped - andBool #DSToken.balances[ABI_dst] =/=Int #DSToken.owner_stopped - andBool #rangeNonce(Nonce_DSToken) - [trusted] - - -endmodule diff --git a/tests/specs/mcd/flipper-addu48u48-fail-rough-spec.k b/tests/specs/mcd/flipper-addu48u48-fail-rough-spec.k deleted file mode 100644 index 9256dc8f8a..0000000000 --- a/tests/specs/mcd/flipper-addu48u48-fail-rough-spec.k +++ /dev/null @@ -1,109 +0,0 @@ -requires "verification.k" - -module FLIPPER-ADDU48U48-FAIL-ROUGH-SPEC - imports VERIFICATION - - // Flipper_addu48u48 - claim [Flipper.addu48u48.fail.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => ?FAILURE:EndStatusCode - _VCallStack - _ - _ => ?_ - - Flipper_bin_runtime - #computeValidJumpDests(Flipper_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => ?_ - _ - 11354 => ?_ - #gas(VGas) => ?_ - VMemoryUsed - _ => ?_ - _ - VCallDepth => ?_ - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flipper_bin_runtime - ACCT_ID_STORAGE => ?_ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Flipper - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Flipper) - - andBool (#rangeUInt(48, ABI_x) - andBool (#rangeUInt(48, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed))))) - - - andBool notBool ( - ((#rangeUInt(48, ABI_x:Int +Int ABI_y:Int))) - ) - ensures - ?FAILURE =/=K EVMC_SUCCESS - -endmodule diff --git a/tests/specs/mcd/flipper-bids-pass-rough-spec.k b/tests/specs/mcd/flipper-bids-pass-rough-spec.k deleted file mode 100644 index ac3e3fb979..0000000000 --- a/tests/specs/mcd/flipper-bids-pass-rough-spec.k +++ /dev/null @@ -1,145 +0,0 @@ -requires "verification.k" - -module FLIPPER-BIDS-PASS-ROUGH-SPEC - imports VERIFICATION - - // Flipper_bids - claim [Flipper.bids.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, Bid) +Bytes #buf(32, Lot) +Bytes #buf(32, Guy) +Bytes #buf(32, Tic) +Bytes #buf(32, End) +Bytes #buf(32, Usr) +Bytes #buf(32, Gal) +Bytes #buf(32, Tab) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flipper_bin_runtime - #computeValidJumpDests(Flipper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("bids", #uint256(ABI_n)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flipper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Flipper => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_n) - andBool (#rangeUInt(256, Bid) - andBool (#rangeUInt(256, Lot) - andBool (#rangeAddress(Guy) - andBool (#rangeUInt(48, Tic) - andBool (#rangeUInt(48, End) - andBool (#rangeAddress(Usr) - andBool (#rangeAddress(Gal) - andBool (#rangeUInt(256, Tab) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#notPrecompileAddress(Guy) - andBool (#notPrecompileAddress(Usr) - andBool (#notPrecompileAddress(Gal) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool ((VCallValue ==Int 0))))))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Flipper.bids[ABI_n].bid) ==Int Bid - andBool #lookup(ACCT_ID_STORAGE, #Flipper.bids[ABI_n].lot) ==Int Lot - andBool #lookup(ACCT_ID_STORAGE, #Flipper.bids[ABI_n].guy_tic_end) ==Int #WordPackAddrUInt48UInt48(Guy, Tic, End) - andBool #lookup(ACCT_ID_STORAGE, #Flipper.bids[ABI_n].usr) ==Int Usr - andBool #lookup(ACCT_ID_STORAGE, #Flipper.bids[ABI_n].gal) ==Int Gal - andBool #lookup(ACCT_ID_STORAGE, #Flipper.bids[ABI_n].tab) ==Int Tab - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flipper.bids[ABI_n].bid) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flipper.bids[ABI_n].lot) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flipper.bids[ABI_n].guy_tic_end) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flipper.bids[ABI_n].usr) ==Int Junk_3 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flipper.bids[ABI_n].gal) ==Int Junk_4 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flipper.bids[ABI_n].tab) ==Int Junk_5 - andBool #Flipper.bids[ABI_n].bid =/=Int #Flipper.bids[ABI_n].lot - andBool #Flipper.bids[ABI_n].bid =/=Int #Flipper.bids[ABI_n].guy_tic_end - andBool #Flipper.bids[ABI_n].bid =/=Int #Flipper.bids[ABI_n].usr - andBool #Flipper.bids[ABI_n].bid =/=Int #Flipper.bids[ABI_n].gal - andBool #Flipper.bids[ABI_n].bid =/=Int #Flipper.bids[ABI_n].tab - andBool #Flipper.bids[ABI_n].lot =/=Int #Flipper.bids[ABI_n].guy_tic_end - andBool #Flipper.bids[ABI_n].lot =/=Int #Flipper.bids[ABI_n].usr - andBool #Flipper.bids[ABI_n].lot =/=Int #Flipper.bids[ABI_n].gal - andBool #Flipper.bids[ABI_n].lot =/=Int #Flipper.bids[ABI_n].tab - andBool #Flipper.bids[ABI_n].guy_tic_end =/=Int #Flipper.bids[ABI_n].usr - andBool #Flipper.bids[ABI_n].guy_tic_end =/=Int #Flipper.bids[ABI_n].gal - andBool #Flipper.bids[ABI_n].guy_tic_end =/=Int #Flipper.bids[ABI_n].tab - andBool #Flipper.bids[ABI_n].usr =/=Int #Flipper.bids[ABI_n].gal - andBool #Flipper.bids[ABI_n].usr =/=Int #Flipper.bids[ABI_n].tab - andBool #Flipper.bids[ABI_n].gal =/=Int #Flipper.bids[ABI_n].tab - -endmodule diff --git a/tests/specs/mcd/flipper-tau-pass-spec.k b/tests/specs/mcd/flipper-tau-pass-spec.k deleted file mode 100644 index c08f3d047d..0000000000 --- a/tests/specs/mcd/flipper-tau-pass-spec.k +++ /dev/null @@ -1,106 +0,0 @@ -requires "verification.k" - -module FLIPPER-TAU-PASS-SPEC - imports VERIFICATION - - // Flipper_tau - claim [Flipper.tau.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, Tau) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flipper_bin_runtime - #computeValidJumpDests(Flipper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("tau", .TypedArgs) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( VGas +Int -1169 ) ) - 0 => ?_ - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flipper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Flipper - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(48, Ttl) - andBool (#rangeUInt(48, Tau) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool ((VCallValue ==Int 0)))))) - - andBool #lookup(ACCT_ID_STORAGE, #Flipper.ttl_tau) ==Int #WordPackUInt48UInt48(Ttl, Tau) - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flipper.ttl_tau) ==Int Junk_0 - andBool #rangeNonce(Nonce_Flipper) - -endmodule diff --git a/tests/specs/mcd/flipper-ttl-pass-spec.k b/tests/specs/mcd/flipper-ttl-pass-spec.k deleted file mode 100644 index 8b0dd2763b..0000000000 --- a/tests/specs/mcd/flipper-ttl-pass-spec.k +++ /dev/null @@ -1,105 +0,0 @@ -requires "verification.k" - -module FLIPPER-TTL-PASS-SPEC - imports VERIFICATION - - // Flipper_ttl - claim [Flipper.ttl.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, Ttl) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flipper_bin_runtime - #computeValidJumpDests(Flipper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("ttl", .TypedArgs) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( VGas +Int -1120 ) ) - 0 => ?_ - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flipper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Flipper => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(48, Ttl) - andBool (#rangeUInt(48, Tau) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool ((VCallValue ==Int 0)))))) - - andBool #lookup(ACCT_ID_STORAGE, #Flipper.ttl_tau) ==Int #WordPackUInt48UInt48(Ttl, Tau) - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flipper.ttl_tau) ==Int Junk_0 - -endmodule diff --git a/tests/specs/mcd/flopper-cage-pass-spec.k b/tests/specs/mcd/flopper-cage-pass-spec.k deleted file mode 100644 index 6d282657f1..0000000000 --- a/tests/specs/mcd/flopper-cage-pass-spec.k +++ /dev/null @@ -1,117 +0,0 @@ -requires "verification.k" - -module FLOPPER-CAGE-PASS-SPEC - imports VERIFICATION - - // Flopper_cage - claim [Flopper.cage.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("cage", .TypedArgs) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( VGas -Int Csstore( ISTANBUL , 0 , Live , Junk_1 ) ) -Int Csstore( ISTANBUL , CALLER_ID , Vow , Junk_2 ) ) +Int -6351 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flopper.live <- 0 ] [ #Flopper.vow <- CALLER_ID ] - ACCT_ID_ORIG_STORAGE - _Nonce_Flopper => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, Ward) - andBool (#rangeUInt(256, Live) - andBool (#rangeAddress(Vow) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#notPrecompileAddress(Vow) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool ((Ward ==Int 1) - andBool ((VCallValue ==Int 0))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Flopper.wards[CALLER_ID]) ==Int Ward - andBool #lookup(ACCT_ID_STORAGE, #Flopper.live) ==Int Live - andBool #lookup(ACCT_ID_STORAGE, #Flopper.vow) ==Int Vow - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.wards[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.live) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.vow) ==Int Junk_2 - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.live - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.vow - andBool #Flopper.live =/=Int #Flopper.vow - -endmodule diff --git a/tests/specs/mcd/flopper-dent-guy-diff-tic-not-0-pass-rough-spec.k b/tests/specs/mcd/flopper-dent-guy-diff-tic-not-0-pass-rough-spec.k deleted file mode 100644 index b3614c6b34..0000000000 --- a/tests/specs/mcd/flopper-dent-guy-diff-tic-not-0-pass-rough-spec.k +++ /dev/null @@ -1,525 +0,0 @@ -requires "verification.k" - -module FLOPPER-DENT-GUY-DIFF-TIC-NOT-0-PASS-ROUGH-SPEC - imports VERIFICATION - - // Flopper_dent-guy-diff-tic-not-0 - claim [Flopper.dent-guy-diff-tic-not-0.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("dent", #uint256(ABI_id), #uint256(ABI_lot), #uint256(ABI_bid)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flopper.bids[ABI_id].lot <- ABI_lot ] [ #Flopper.bids[ABI_id].guy_tic_end <- #WordPackAddrUInt48UInt48(CALLER_ID, TIME +Int Ttl, End) ] - ACCT_ID_ORIG_STORAGE - Nonce_Flopper - - - Vat - Vat_balance - Vat_bin_runtime - Vat_STORAGE => Vat_STORAGE [ #Vat.dai[CALLER_ID] <- Dai_a -Int ABI_bid ] [ #Vat.dai[Guy] <- Dai_g +Int ABI_bid ] - Vat_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Flopper) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_id) - andBool (#rangeUInt(256, ABI_lot) - andBool (#rangeUInt(256, ABI_bid) - andBool (#rangeUInt(256, Live) - andBool (#rangeAddress(Vat) - andBool (#rangeUInt(256, Beg) - andBool (#rangeUInt(48, Ttl) - andBool (#rangeUInt(48, Tau) - andBool (#rangeUInt(256, Bid) - andBool (#rangeUInt(256, Lot) - andBool (#rangeAddress(Guy) - andBool (#rangeUInt(48, Tic) - andBool (#rangeUInt(48, End) - andBool (#rangeUInt(256, CanMove) - andBool (#rangeUInt(256, Dai_a) - andBool (#rangeUInt(256, Dai_g) - andBool (#rangeUInt(256, Vat_balance) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Vat)) - andBool ((#notPrecompileAddress(Guy)) - andBool ((ACCT_ID =/=Int Vat) - andBool ((CALLER_ID =/=Int ACCT_ID) - andBool ((CALLER_ID =/=Int Guy) - andBool ((#rangeUInt(48, TIME)) - andBool ((Tic =/=Int 0) - andBool ((Vat =/=Int 0) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (#rangeUInt(256, Junk_7) - andBool (#rangeUInt(256, Junk_8) - andBool (#rangeUInt(256, Junk_9) - andBool ((((Live ==Int 1))) - andBool ((((Guy =/=Int 0))) - andBool ((((Tic >Int TIME))) - andBool ((((End >Int TIME))) - andBool ((((ABI_bid ==Int Bid))) - andBool ((((ABI_lot #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x *Int ABI_y : WS - _ - 8685 => 8728 - #gas(VGas) => #if ABI_y ==Int 0 - #then #gas ( ( VGas +Int -54 ) ) - #else #gas ( ( VGas +Int -106 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Flopper - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Flopper) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x *Int ABI_y))))))) - - - [trusted] - - - // Flopper_addu48u48 - claim [Flopper.addu48u48.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 8757 => 8798 - #gas(VGas) => #gas ( ( VGas +Int -66 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Flopper - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Flopper) - - andBool (#rangeUInt(48, ABI_x) - andBool (#rangeUInt(48, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(48, ABI_x +Int ABI_y))))))) - - [trusted] - - - // Vat_move-diff - claim [Vat.move-diff.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("move", #address(ABI_src), #address(ABI_dst), #uint256(ABI_rad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( VGas -Int Csstore( ISTANBUL , ( Dai_src -Int ABI_rad ) , Dai_src , Junk_1 ) ) -Int Csstore( ISTANBUL , ( Dai_dst +Int ABI_rad ) , Dai_dst , Junk_2 ) ) +Int -7943 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.dai[ABI_src] <- Dai_src -Int ABI_rad ] [ #Vat.dai[ABI_dst] <- Dai_dst +Int ABI_rad ] - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeAddress(ABI_src) - andBool (#rangeAddress(ABI_dst) - andBool (#rangeUInt(256, ABI_rad) - andBool (#rangeUInt(256, Dai_dst) - andBool (#rangeUInt(256, Dai_src) - andBool (#rangeUInt(256, May) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((ABI_src =/=Int ABI_dst) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool ((((May ==Int 1 orBool ABI_src ==Int CALLER_ID))) - andBool (((VCallValue ==Int 0)) - andBool ((#rangeUInt(256, Dai_src -Int ABI_rad)) - andBool ((#rangeUInt(256, Dai_dst +Int ABI_rad))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_src]) ==Int Dai_src - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_dst]) ==Int Dai_dst - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_src]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_dst]) ==Int Junk_2 - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.dai[ABI_src] - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.dai[ABI_dst] - andBool #Vat.dai[ABI_src] =/=Int #Vat.dai[ABI_dst] - [trusted] - - -endmodule diff --git a/tests/specs/mcd/flopper-dent-guy-same-pass-rough-spec.k b/tests/specs/mcd/flopper-dent-guy-same-pass-rough-spec.k deleted file mode 100644 index 4f9947b1d2..0000000000 --- a/tests/specs/mcd/flopper-dent-guy-same-pass-rough-spec.k +++ /dev/null @@ -1,372 +0,0 @@ -requires "verification.k" - -module FLOPPER-DENT-GUY-SAME-PASS-ROUGH-SPEC - imports VERIFICATION - - // Flopper_dent-guy-same - claim [Flopper.dent-guy-same.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("dent", #uint256(ABI_id), #uint256(ABI_lot), #uint256(ABI_bid)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flopper.bids[ABI_id].lot <- ABI_lot ] [ #Flopper.bids[ABI_id].guy_tic_end <- #WordPackAddrUInt48UInt48(Guy, TIME +Int Ttl, End) ] - ACCT_ID_ORIG_STORAGE - _Nonce_Flopper => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_id) - andBool (#rangeUInt(256, ABI_lot) - andBool (#rangeUInt(256, ABI_bid) - andBool (#rangeUInt(256, Live) - andBool (#rangeAddress(Vat) - andBool (#rangeUInt(256, Beg) - andBool (#rangeUInt(48, Ttl) - andBool (#rangeUInt(48, Tau) - andBool (#rangeUInt(256, Bid) - andBool (#rangeUInt(256, Lot) - andBool (#rangeAddress(Guy) - andBool (#rangeUInt(48, Tic) - andBool (#rangeUInt(48, End) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Vat)) - andBool ((#notPrecompileAddress(Guy)) - andBool ((CALLER_ID =/=Int ACCT_ID) - andBool ((CALLER_ID ==Int Guy) - andBool ((#rangeUInt(48, TIME)) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (((Live ==Int 1)) - andBool (((Guy =/=Int 0)) - andBool (((Tic >Int TIME orBool Tic ==Int 0)) - andBool (((End >Int TIME)) - andBool (((ABI_bid ==Int Bid)) - andBool (((ABI_lot #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x *Int ABI_y : WS - _ - 8685 => 8728 - #gas(VGas) => #if ABI_y ==Int 0 - #then #gas ( ( VGas +Int -54 ) ) - #else #gas ( ( VGas +Int -106 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Flopper => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x *Int ABI_y))))))) - - - [trusted] - - - // Flopper_addu48u48 - claim [Flopper.addu48u48.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 8757 => 8798 - #gas(VGas) => #gas ( ( VGas +Int -66 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Flopper => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(48, ABI_x) - andBool (#rangeUInt(48, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(48, ABI_x +Int ABI_y))))))) - - - [trusted] - - -endmodule diff --git a/tests/specs/mcd/flopper-file-pass-rough-spec.k b/tests/specs/mcd/flopper-file-pass-rough-spec.k deleted file mode 100644 index 1ed54d1d72..0000000000 --- a/tests/specs/mcd/flopper-file-pass-rough-spec.k +++ /dev/null @@ -1,126 +0,0 @@ -requires "verification.k" - -module FLOPPER-FILE-PASS-ROUGH-SPEC - imports VERIFICATION - - // Flopper_file - claim [Flopper.file.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("file", #bytes32(ABI_what), #uint256(ABI_data)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flopper.beg <- (#if ABI_what ==Int #string2Word("beg") #then ABI_data #else Beg #fi) ] [ #Flopper.pad <- (#if ABI_what ==Int #string2Word("pad") #then ABI_data #else Pad #fi) ] [ #Flopper.ttl_tau <- (#if ABI_what ==Int #string2Word("ttl") #then #WordPackUInt48UInt48(maxUInt48 &Int ABI_data, Tau) #else (#if ABI_what ==Int #string2Word("tau") #then #WordPackUInt48UInt48(Ttl, maxUInt48 &Int ABI_data) #else #WordPackUInt48UInt48(Ttl, Tau) #fi) #fi) ] - ACCT_ID_ORIG_STORAGE - _Nonce_Flopper => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeBytes(32, ABI_what) - andBool (#rangeUInt(256, ABI_data) - andBool (#rangeUInt(256, May) - andBool (#rangeUInt(256, Beg) - andBool (#rangeUInt(256, Pad) - andBool (#rangeUInt(48, Ttl) - andBool (#rangeUInt(48, Tau) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool ((May ==Int 1) - andBool ((VCallValue ==Int 0) - andBool (((ABI_what ==Int #string2Word("beg")) orBool (ABI_what ==Int #string2Word("pad")) orBool (ABI_what ==Int #string2Word("ttl")) orBool (ABI_what ==Int #string2Word("tau")))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Flopper.wards[CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Flopper.beg) ==Int Beg - andBool #lookup(ACCT_ID_STORAGE, #Flopper.pad) ==Int Pad - andBool #lookup(ACCT_ID_STORAGE, #Flopper.ttl_tau) ==Int #WordPackUInt48UInt48(Ttl, Tau) - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.wards[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.beg) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.pad) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.ttl_tau) ==Int Junk_3 - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.beg - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.pad - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.ttl_tau - andBool #Flopper.beg =/=Int #Flopper.pad - andBool #Flopper.beg =/=Int #Flopper.ttl_tau - andBool #Flopper.pad =/=Int #Flopper.ttl_tau -endmodule \ No newline at end of file diff --git a/tests/specs/mcd/flopper-kick-pass-rough-spec.k b/tests/specs/mcd/flopper-kick-pass-rough-spec.k deleted file mode 100644 index 9303b65005..0000000000 --- a/tests/specs/mcd/flopper-kick-pass-rough-spec.k +++ /dev/null @@ -1,261 +0,0 @@ -requires "verification.k" - -module FLOPPER-KICK-PASS-ROUGH-SPEC - imports VERIFICATION - - // Flopper_kick - claim [Flopper.kick.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, 1 +Int Kicks) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("kick", #address(ABI_gal), #uint256(ABI_lot), #uint256(ABI_bid)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flopper.kicks <- 1 +Int Kicks ] [ #Flopper.bids[1 +Int Kicks].bid <- ABI_bid ] [ #Flopper.bids[1 +Int Kicks].lot <- ABI_lot ] [ #Flopper.bids[1 +Int Kicks].guy_tic_end <- #WordPackAddrUInt48UInt48(ABI_gal, Old_tic, TIME +Int Tau) ] - ACCT_ID_ORIG_STORAGE - _Nonce_Flopper => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeAddress(ABI_gal) - andBool (#rangeUInt(256, ABI_lot) - andBool (#rangeUInt(256, ABI_bid) - andBool (#rangeUInt(256, Live) - andBool (#rangeUInt(256, Kicks) - andBool (#rangeUInt(48, Ttl) - andBool (#rangeUInt(48, Tau) - andBool (#rangeUInt(256, Old_lot) - andBool (#rangeUInt(256, Old_bid) - andBool (#rangeAddress(Old_guy) - andBool (#rangeUInt(48, Old_tic) - andBool (#rangeUInt(48, Old_end) - andBool (#rangeUInt(256, Ward) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Old_guy)) - andBool ((#rangeUInt(48, TIME)) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool ((((Ward ==Int 1))) - andBool ((((Live ==Int 1))) - andBool ((((VCallValue ==Int 0))) - andBool (((#rangeUInt(256, Kicks +Int 1))) - andBool ((#rangeUInt(48, TIME +Int Tau)))))))))))))))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Flopper.wards[CALLER_ID]) ==Int Ward - andBool #lookup(ACCT_ID_STORAGE, #Flopper.live) ==Int Live - andBool #lookup(ACCT_ID_STORAGE, #Flopper.kicks) ==Int Kicks - andBool #lookup(ACCT_ID_STORAGE, #Flopper.ttl_tau) ==Int #WordPackUInt48UInt48(Ttl, Tau) - andBool #lookup(ACCT_ID_STORAGE, #Flopper.bids[1 +Int Kicks].bid) ==Int Old_bid - andBool #lookup(ACCT_ID_STORAGE, #Flopper.bids[1 +Int Kicks].lot) ==Int Old_lot - andBool #lookup(ACCT_ID_STORAGE, #Flopper.bids[1 +Int Kicks].guy_tic_end) ==Int #WordPackAddrUInt48UInt48(Old_guy, Old_tic, Old_end) - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.wards[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.live) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.kicks) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.ttl_tau) ==Int Junk_3 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.bids[1 +Int Kicks].bid) ==Int Junk_4 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.bids[1 +Int Kicks].lot) ==Int Junk_5 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.bids[1 +Int Kicks].guy_tic_end) ==Int Junk_6 - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.live - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.kicks - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.ttl_tau - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.bids[1 +Int Kicks].bid - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.bids[1 +Int Kicks].lot - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.bids[1 +Int Kicks].guy_tic_end - andBool #Flopper.live =/=Int #Flopper.kicks - andBool #Flopper.live =/=Int #Flopper.ttl_tau - andBool #Flopper.live =/=Int #Flopper.bids[1 +Int Kicks].bid - andBool #Flopper.live =/=Int #Flopper.bids[1 +Int Kicks].lot - andBool #Flopper.live =/=Int #Flopper.bids[1 +Int Kicks].guy_tic_end - andBool #Flopper.kicks =/=Int #Flopper.ttl_tau - andBool #Flopper.kicks =/=Int #Flopper.bids[1 +Int Kicks].bid - andBool #Flopper.kicks =/=Int #Flopper.bids[1 +Int Kicks].lot - andBool #Flopper.kicks =/=Int #Flopper.bids[1 +Int Kicks].guy_tic_end - andBool #Flopper.ttl_tau =/=Int #Flopper.bids[1 +Int Kicks].bid - andBool #Flopper.ttl_tau =/=Int #Flopper.bids[1 +Int Kicks].lot - andBool #Flopper.ttl_tau =/=Int #Flopper.bids[1 +Int Kicks].guy_tic_end - andBool #Flopper.bids[1 +Int Kicks].bid =/=Int #Flopper.bids[1 +Int Kicks].lot - andBool #Flopper.bids[1 +Int Kicks].bid =/=Int #Flopper.bids[1 +Int Kicks].guy_tic_end - andBool #Flopper.bids[1 +Int Kicks].lot =/=Int #Flopper.bids[1 +Int Kicks].guy_tic_end - - // Flopper_addu48u48 - claim [Flopper.addu48u48.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 8757 => 8798 - #gas(VGas) => #gas ( ( VGas +Int -66 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Flopper => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(48, ABI_x) - andBool (#rangeUInt(48, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(48, ABI_x +Int ABI_y))))))) - - - [trusted] - - -endmodule diff --git a/tests/specs/mcd/flopper-tick-pass-rough-spec.k b/tests/specs/mcd/flopper-tick-pass-rough-spec.k deleted file mode 100644 index 5d4a9e50f0..0000000000 --- a/tests/specs/mcd/flopper-tick-pass-rough-spec.k +++ /dev/null @@ -1,232 +0,0 @@ -requires "verification.k" - -module FLOPPER-TICK-PASS-ROUGH-SPEC - imports VERIFICATION - - // Flopper_tick - claim [Flopper.tick.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("tick", #uint256(ABI_id)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flopper.bids[ABI_id].lot <- (Pad *Int Lot) /Int #Wad ] [ #Flopper.bids[ABI_id].guy_tic_end <- #WordPackAddrUInt48UInt48(Guy, Tic, TIME +Int Tau) ] - ACCT_ID_ORIG_STORAGE - _Nonce_Flopper => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_id) - andBool (#rangeUInt(256, Pad) - andBool (#rangeUInt(48, Ttl) - andBool (#rangeUInt(48, Tau) - andBool (#rangeUInt(256, Lot) - andBool (#rangeAddress(Guy) - andBool (#rangeUInt(48, Tic) - andBool (#rangeUInt(48, End) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Guy)) - andBool ((#rangeUInt(48, TIME)) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (((VCallValue ==Int 0)) - andBool (((Tic ==Int 0)) - andBool (((End #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 8757 => 8798 - #gas(VGas) => #gas ( ( VGas +Int -66 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Flopper => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(48, ABI_x) - andBool (#rangeUInt(48, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(48, ABI_x +Int ABI_y))))))) - - - [trusted] - - -endmodule diff --git a/tests/specs/mcd/functional-spec.k b/tests/specs/mcd/functional-spec.k deleted file mode 100644 index b8d257bd84..0000000000 --- a/tests/specs/mcd/functional-spec.k +++ /dev/null @@ -1,136 +0,0 @@ -requires "verification.k" - -module FUNCTIONAL-SPEC-SYNTAX - imports VERIFICATION - - syntax KItem ::= runLemma ( Step ) [symbol(runLemma)] | doneLemma ( Step ) - // ------------------------------------------------------- - rule runLemma(S) => doneLemma(S) ... - - syntax Step ::= Bool | Int | Bytes - // ---------------------------------- - -endmodule - -module FUNCTIONAL-SPEC - imports FUNCTIONAL-SPEC-SYNTAX - - // Arithmetic - - claim runLemma((X +Int pow256) -Int chop(Y)) => doneLemma(X -Int Y) ... - requires #rangeUInt(256, X) - andBool #rangeSInt(256, Y) - andBool Y runLemma(chop(Art_i *Int (ABI_rate +Int pow256))) => doneLemma(chop(Art_i *Int ABI_rate)) ... - requires #rangeUInt(256, Art_i) - andBool Art_i <=Int maxSInt256 - andBool #rangeSInt(256, Art_i *Int ABI_rate) - - claim runLemma(maxUInt48 &Int ABI_x <=Int maxUInt48 &Int ABI_x +Int ABI_y) => doneLemma(false) ... - requires #rangeUInt(48, ABI_x) - andBool #rangeUInt(48, ABI_y) - andBool notBool #rangeUInt(48, ABI_x +Int ABI_y) - - claim runLemma( (maxUInt48 &Int W1) +Int (maxUInt160 &Int W2) ) - => doneLemma( X +Int Y ) ... - requires (W1 ==Int #WordPackUInt48UInt48(X, _)) - andBool (W2 ==Int #WordPackAddrUInt48UInt48(Y, _, _)) - - claim runLemma(bool2Word(ABI_src:Int ==Int CALLER_ID:Int) |Int bool2Word(X)) => doneLemma(bool2Word(ABI_src ==Int CALLER_ID orBool X)) ... - requires #rangeUInt(256, ABI_src) - andBool #rangeUInt(256, CALLER_ID) - - claim runLemma(bool2Word(ABI_src ==Int CALLER_ID orBool X) ==Int 0) => doneLemma(notBool(ABI_src ==Int CALLER_ID orBool X)) ... - requires #rangeUInt(256, ABI_src) - andBool #rangeUInt(256, CALLER_ID) - - claim runLemma( chop( A -Int B ) <=Int A ) => doneLemma( false ) ... - requires #rangeUInt(256, A) andBool #rangeUInt(256, B) andBool A -Int B runLemma((GAL |Int (notMaxUInt160 &Int GUY_TIC_END)) modInt pow256) => doneLemma(GAL |Int (notMaxUInt160 &Int GUY_TIC_END)) ... - requires #rangeUInt(256, GUY_TIC_END) - andBool #rangeAddress(GAL) - - claim runLemma(TIME +Int (TTL_TAU /Int pow48)) => doneLemma(TIME +Int TAU) ... - requires TTL_TAU ==Int #WordPackUInt48UInt48(TTL, TAU) - andBool #rangeUInt(48, TIME +Int TAU) - - claim runLemma(maxUInt48 &Int ((GAL |Int (notMaxUInt160 &Int GUY_TIC_END)) /Int pow160)) => doneLemma(TIC) ... - requires GUY_TIC_END ==Int #WordPackAddrUInt48UInt48(GUY, TIC, END) - andBool #rangeAddress(GAL) - - claim runLemma(maxUInt160 &Int (GAL |Int (notMaxUInt160 &Int GUY_TIC_END))) => doneLemma(GAL) ... - requires GUY_TIC_END ==Int #WordPackAddrUInt48UInt48(GUY, TIC, END) - andBool #rangeAddress(GAL) - - claim [wordPackSimplify1]: runLemma((((TIME +Int (maxUInt48 &Int (TTL_TAU /Int pow48))) *Int pow208) |Int (maxUInt208 &Int (GAL |Int (notMaxUInt160 &Int GUY_TIC_END))))) => doneLemma(#WordPackAddrUInt48UInt48(GAL, TIC, TIME +Int TAU)) ... - requires TTL_TAU ==Int #WordPackUInt48UInt48(TTL, TAU) - andBool GUY_TIC_END ==Int #WordPackAddrUInt48UInt48(GUY, TIC, END) - andBool #rangeAddress(GAL) - andBool #rangeUInt(48, TIME +Int TAU) - - claim [wordPackSimplify2]: runLemma((((TIME +Int (maxUInt48 &Int TTL_TAU)) *Int pow160) |Int (maskWordPackAddrUInt48UInt48_2 &Int GUY_TIC_END))) => doneLemma(#WordPackAddrUInt48UInt48(GUY, TIME +Int TTL, END)) ... - requires TTL_TAU ==Int #WordPackUInt48UInt48(TTL, TAU) - andBool GUY_TIC_END ==Int #WordPackAddrUInt48UInt48(GUY, TIC, END) - andBool #rangeUInt(48, TIME +Int TTL) - - claim runLemma(maxUInt48 &Int ((CALLER_ID |Int (notMaxUInt160 &Int #lookup(M, KX))) /Int pow208)) => doneLemma(maxUInt48 &Int (#lookup(M, KX) /Int pow208)) ... - requires #rangeAddress(CALLER_ID) - - claim runLemma(TIME +Int ( maxUInt48 &Int #lookup ( ACCT_ID_STORAGE [ keccak ( #buf ( 32 , ABI_id ) +Bytes X ) +Int 1 <- #lookup ( ACCT_ID_STORAGE , 5 ) *Int #lookup ( ACCT_ID_STORAGE , keccak ( #buf ( 32 , ABI_id ) +Bytes X ) +Int 1 ) /Int 1000000000000000000 ] , 6 ) /Int pow48 ) doneLemma(true) ... - requires #lookup(ACCT_ID_STORAGE, 6) ==Int #WordPackUInt48UInt48(_, Tau) - andBool #rangeUInt(48, TIME +Int Tau) - - claim [bytesDisjointSetCommutative1]: runLemma( ACCT_ID_STORAGE [ keccak ( #buf ( 32 , ABI_id ) +Bytes X) +Int 1 <- ABI_lot:Int ] [ keccak ( #buf ( 32 , ABI_id ) +Bytes X) +Int 2 <- #WordPackAddrUInt48UInt48 ( CALLER_ID , TIME +Int ( maxUInt48 &Int #lookup ( ACCT_ID_STORAGE , 6 ) ) , #lookup ( ACCT_ID_STORAGE , keccak ( #buf ( 32 , ABI_id ) +Bytes X) +Int 2 ) /Int pow208 ) ] - ==K - ACCT_ID_STORAGE [ keccak ( #buf ( 32 , ABI_id ) +Bytes X) +Int 2 <- #WordPackAddrUInt48UInt48 ( CALLER_ID , TIME +Int ( maxUInt48 &Int #lookup ( ACCT_ID_STORAGE , 6 ) ) , #lookup ( ACCT_ID_STORAGE , keccak ( #buf ( 32 , ABI_id ) +Bytes X) +Int 2 ) /Int pow208 ) ] [ keccak ( #buf ( 32 , ABI_id ) +Bytes X) +Int 1 <- ABI_lot:Int ]) - => doneLemma(true) ... - - claim runLemma(#lookup( M:Map [ keccak(_) <- _ ], I:Int )) - => doneLemma(#lookup( M , I )) ... - requires #rangeSmall(I) - - // Memory operations - - claim [bufferRangeSelectSymbolic]: runLemma(#range(M:Bytes [ 0 := #buf(4, X) ] [ 0 <- 10 ] [ 1 <- 11 ] [ 2 <- 12 ] [ 3 <- 13 ], 0, 4)) => doneLemma(10 : 11 : 12 : 13 : .Bytes) ... - - claim runLemma( M:Bytes [ 132 := #buf(32, B11) ] [ 128 := #buf(32, B21) +Bytes #buf(32, B22) ] ) => doneLemma( M [ 128 := (#buf(32, B21) +Bytes #buf(32, B22)) ] ) ... - requires #rangeUInt(256, B11) andBool #rangeUInt(256, B21) andBool #rangeUInt(256, B22) - - claim runLemma( M:Bytes [ 128 := #buf(32, B31) +Bytes #buf(32, B32) ] [ 128 := #buf(32, B41) ] ) => doneLemma( M [ 128 := #buf(32, B41) ] [ 160 := #buf(32, B32) ] ) ... - requires #rangeUInt(256, B31) andBool #rangeUInt(256, B32) andBool #rangeUInt(256, B41) - - claim runLemma( M:Bytes [ 128 := 217 : 99 : 141 : 54 : .Bytes ] - [ 132 := #buf(32, B11) ] - [ 128 := #buf(32, B21) +Bytes #buf(32, B22) +Bytes #buf(32, B23) +Bytes #buf(32, B24) +Bytes #buf(32, B25) ] - [ 128 := 217 : 99 : 141 : 54 : .Bytes ] - [ 132 := #buf(32, B11) ] - [ 128 := #buf(32, B31) +Bytes #buf(32, B32) ] - [ 128 := #buf(32, B41) ] ) - => doneLemma( M [ 128 := #buf(32, B41) ] - [ 160 := #buf(32, B32) ] - [ 192 := #buf(32, B23) +Bytes #buf(32, B24) +Bytes #buf(32, B25) ] ) - ... - - requires #rangeUInt(256, B11) - andBool #rangeUInt(256, B21) andBool #rangeUInt(256, B22) andBool #rangeUInt(256, B23) andBool #rangeUInt(256, B24) andBool #rangeUInt(256, B25) - andBool #rangeUInt(256, B31) andBool #rangeUInt(256, B32) - andBool #rangeUInt(256, B41) - - claim runLemma(maxUInt48 &Int (maxUInt48 -Int 1) doneLemma(true) ... - claim runLemma(maxUInt160 &Int (maxUInt160 -Int 1) doneLemma(true) ... - - claim runLemma((maxUInt48 &Int maxUInt48) /Int maxUInt48) => doneLemma(1) ... - claim runLemma((maxUInt160 &Int maxUInt160) /Int maxUInt160) => doneLemma(1) ... - - claim runLemma((maxUInt48 &Int M) /Int (maxUInt48 +Int 1)) => doneLemma(0) ... - requires M >Int 0 - - claim runLemma((maxUInt160 &Int M) /Int (maxUInt160 +Int 1)) => doneLemma(0) ... - requires M >Int 0 - -endmodule diff --git a/tests/specs/mcd/gemjoin-exit-pass-rough-spec.k b/tests/specs/mcd/gemjoin-exit-pass-rough-spec.k deleted file mode 100644 index 8a17a9b737..0000000000 --- a/tests/specs/mcd/gemjoin-exit-pass-rough-spec.k +++ /dev/null @@ -1,415 +0,0 @@ -requires "verification.k" - -module GEMJOIN-EXIT-PASS-ROUGH-SPEC - imports VERIFICATION - - // GemJoin_exit - claim [GemJoin.exit.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - GemJoin_bin_runtime - #computeValidJumpDests(GemJoin_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("exit", #address(ABI_usr), #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - GemJoin_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_GemJoin - - - Vat - Vat_balance - Vat_bin_runtime - Vat_STORAGE => Vat_STORAGE [ #Vat.gem[Ilk][CALLER_ID] <- Wad -Int ABI_wad ] - Vat_ORIG_STORAGE - Nonce_Vat - - - DSToken - DSToken_balance - DSToken_bin_runtime - DSToken_STORAGE => DSToken_STORAGE [ #DSToken.balances[ACCT_ID] <- Bal_adapter -Int ABI_wad ] [ #DSToken.balances[ABI_usr] <- Bal_usr +Int ABI_wad ] - DSToken_ORIG_STORAGE - Nonce_DSToken - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_GemJoin) - andBool #rangeNonce(Nonce_Vat) - andBool #rangeNonce(Nonce_DSToken) - - andBool (#rangeAddress(ABI_usr) - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeAddress(Vat) - andBool (#rangeBytes(32, Ilk) - andBool (#rangeAddress(DSToken) - andBool (#rangeUInt(256, May) - andBool (#rangeUInt(256, Wad) - andBool (#rangeUInt(256, Bal_usr) - andBool (#rangeUInt(256, Bal_adapter) - andBool (#rangeAddress(Owner) - andBool (#rangeBool(Stopped) - andBool (#rangeUInt(256, Vat_balance) - andBool (#rangeUInt(256, DSToken_balance) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Vat)) - andBool ((#notPrecompileAddress(DSToken)) - andBool ((#notPrecompileAddress(Owner)) - andBool ((ACCT_ID =/=Int Vat) - andBool ((ACCT_ID =/=Int DSToken) - andBool ((ACCT_ID =/=Int ABI_usr) - andBool ((Vat =/=Int 0) - andBool ((DSToken =/=Int 0) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (#rangeUInt(256, Junk_7) - andBool (((VCallValue ==Int 0)) - andBool (((VCallDepth #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("slip", #bytes32(ABI_ilk), #address(ABI_usr), #int256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #if ( ABI_wad - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.gem[ABI_ilk][ABI_usr] <- Gem +Int ABI_wad ] - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeBytes(32, ABI_ilk) - andBool (#rangeAddress(ABI_usr) - andBool (#rangeSInt(256, ABI_wad) - andBool (#rangeUInt(256, May) - andBool (#rangeUInt(256, Gem) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (((May ==Int 1)) - andBool (((VCallValue ==Int 0)) - andBool ((#rangeUInt(256, Gem +Int ABI_wad))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.wards[CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Vat.gem[ABI_ilk][ABI_usr]) ==Int Gem - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.wards[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.gem[ABI_ilk][ABI_usr]) ==Int Junk_1 - andBool #Vat.wards[CALLER_ID] =/=Int #Vat.gem[ABI_ilk][ABI_usr] - [trusted] - - - // DSToken_transfer - claim [DSToken.transfer.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, 1) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - DSToken_bin_runtime - #computeValidJumpDests(DSToken_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("transfer", #address(ABI_usr), #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( VGas -Int Csstore( ISTANBUL , ( Gem_c -Int ABI_wad ) , Gem_c , Junk_0 ) ) -Int Csstore( ISTANBUL , ( Gem_u +Int ABI_wad ) , Gem_u , Junk_1 ) ) +Int -6391 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - DSToken_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #DSToken.balances[CALLER_ID] <- Gem_c -Int ABI_wad ] [ #DSToken.balances[ABI_usr] <- Gem_u +Int ABI_wad ] - ACCT_ID_ORIG_STORAGE - Nonce_DSToken - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_DSToken) - - andBool (#rangeAddress(ABI_usr) - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeUInt(256, Gem_c) - andBool (#rangeUInt(256, Gem_u) - andBool (#rangeAddress(Owner) - andBool (#rangeBool(Stopped) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Owner)) - andBool ((ABI_usr =/=Int CALLER_ID) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (((#rangeUInt(256, Gem_c -Int ABI_wad))) - andBool (((#rangeUInt(256, Gem_u +Int ABI_wad))) - andBool ((Stopped ==Int 0) - andBool ((VCallValue ==Int 0))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #DSToken.balances[CALLER_ID]) ==Int Gem_c - andBool #lookup(ACCT_ID_STORAGE, #DSToken.balances[ABI_usr]) ==Int Gem_u - andBool #lookup(ACCT_ID_STORAGE, #DSToken.owner_stopped) ==Int #WordPackAddrUInt8(Owner, Stopped) - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.balances[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.balances[ABI_usr]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #DSToken.owner_stopped) ==Int Junk_2 - andBool #DSToken.balances[CALLER_ID] =/=Int #DSToken.balances[ABI_usr] - andBool #DSToken.balances[CALLER_ID] =/=Int #DSToken.owner_stopped - andBool #DSToken.balances[ABI_usr] =/=Int #DSToken.owner_stopped - [trusted] - - -endmodule diff --git a/tests/specs/mcd/pot-join-pass-rough-spec.k b/tests/specs/mcd/pot-join-pass-rough-spec.k deleted file mode 100644 index 10cb1e8797..0000000000 --- a/tests/specs/mcd/pot-join-pass-rough-spec.k +++ /dev/null @@ -1,493 +0,0 @@ -requires "verification.k" - -module POT-JOIN-PASS-ROUGH-SPEC - imports VERIFICATION - - // Pot_join - claim [Pot.join.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Pot_bin_runtime - #computeValidJumpDests(Pot_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("join", #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Pot_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Pot.pie[CALLER_ID] <- Pie_u +Int ABI_wad ] [ #Pot.Pie <- Pie_tot +Int ABI_wad ] - ACCT_ID_ORIG_STORAGE - Nonce_Pot - - - Vat - Vat_balance - Vat_bin_runtime - Vat_STORAGE => Vat_STORAGE [ #Vat.dai[CALLER_ID] <- Dai_u -Int Chi *Int ABI_wad ] [ #Vat.dai[ACCT_ID] <- Dai_p +Int Chi *Int ABI_wad ] - Vat_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Pot) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeUInt(256, Pie_u) - andBool (#rangeUInt(256, Pie_tot) - andBool (#rangeUInt(256, Chi) - andBool (#rangeUInt(256, Rho) - andBool (#rangeAddress(Vat) - andBool (#rangeUInt(256, Can) - andBool (#rangeUInt(256, Dai_u) - andBool (#rangeUInt(256, Dai_p) - andBool (#rangeUInt(256, Vat_balance) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Vat)) - andBool ((ACCT_ID =/=Int Vat) - andBool ((ACCT_ID =/=Int CALLER_ID) - andBool ((Vat =/=Int 0) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (#rangeUInt(256, Junk_7) - andBool (((VCallValue ==Int 0)) - andBool (((VCallDepth #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Pot_bin_runtime - #computeValidJumpDests(Pot_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 4851 => 4876 - #gas(VGas) => #gas ( ( VGas +Int -54 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Pot_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Pot - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Pot) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x +Int ABI_y))))))) - - - [trusted] - - - // Pot_muluu - claim [Pot.muluu.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Pot_bin_runtime - #computeValidJumpDests(Pot_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x *Int ABI_y : WS - _ - 4877 => 4920 - #gas(VGas) => #if ABI_y ==Int 0 - #then #gas ( ( VGas +Int -54 ) ) - #else #gas ( ( VGas +Int -106 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Pot_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Pot - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Pot) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x *Int ABI_y))))))) - - - [trusted] - - - // Vat_move-diff - claim [Vat.move-diff.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("move", #address(ABI_src), #address(ABI_dst), #uint256(ABI_rad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( VGas -Int Csstore( ISTANBUL , ( Dai_src -Int ABI_rad ) , Dai_src , Junk_1 ) ) -Int Csstore( ISTANBUL , ( Dai_dst +Int ABI_rad ) , Dai_dst , Junk_2 ) ) +Int -7943 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.dai[ABI_src] <- Dai_src -Int ABI_rad ] [ #Vat.dai[ABI_dst] <- Dai_dst +Int ABI_rad ] - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeAddress(ABI_src) - andBool (#rangeAddress(ABI_dst) - andBool (#rangeUInt(256, ABI_rad) - andBool (#rangeUInt(256, Dai_dst) - andBool (#rangeUInt(256, Dai_src) - andBool (#rangeUInt(256, May) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((ABI_src =/=Int ABI_dst) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool ((((May ==Int 1 orBool ABI_src ==Int CALLER_ID))) - andBool (((VCallValue ==Int 0)) - andBool ((#rangeUInt(256, Dai_src -Int ABI_rad)) - andBool ((#rangeUInt(256, Dai_dst +Int ABI_rad))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_src]) ==Int Dai_src - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_dst]) ==Int Dai_dst - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_src]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_dst]) ==Int Junk_2 - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.dai[ABI_src] - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.dai[ABI_dst] - andBool #Vat.dai[ABI_src] =/=Int #Vat.dai[ABI_dst] - [trusted] - - -endmodule diff --git a/tests/specs/mcd/storage.k b/tests/specs/mcd/storage.k deleted file mode 100644 index 534eb0c84f..0000000000 --- a/tests/specs/mcd/storage.k +++ /dev/null @@ -1,375 +0,0 @@ -requires "edsl.md" - -module DSS-STORAGE - imports EDSL - - // ### Vat - // ------- - - syntax Int ::= "#Vat.wards" "[" Int "]" [macro] - | "#Vat.can" "[" Int "][" Int "]" [macro] - | "#Vat.ilks" "[" Int "].Art" [macro] - | "#Vat.ilks" "[" Int "].rate" [macro] - | "#Vat.ilks" "[" Int "].spot" [macro] - | "#Vat.ilks" "[" Int "].line" [macro] - | "#Vat.ilks" "[" Int "].dust" [macro] - | "#Vat.urns" "[" Int "][" Int "].ink" [macro] - | "#Vat.urns" "[" Int "][" Int "].art" [macro] - | "#Vat.gem" "[" Int "][" Int "]" [macro] - | "#Vat.dai" "[" Int "]" [macro] - | "#Vat.sin" "[" Int "]" [macro] - | "#Vat.debt" [macro] - | "#Vat.vice" [macro] - | "#Vat.Line" [macro] - | "#Vat.live" [macro] - // ----------------------------------------------------------- - rule #Vat.wards[A] => #hashedLocation("Solidity", 0, A) - rule #Vat.can[A][B] => #hashedLocation("Solidity", 1, A B) - rule #Vat.ilks[ILK].Art => #hashedLocation("Solidity", 2, ILK) +Int 0 - rule #Vat.ilks[ILK].rate => #hashedLocation("Solidity", 2, ILK) +Int 1 - rule #Vat.ilks[ILK].spot => #hashedLocation("Solidity", 2, ILK) +Int 2 - rule #Vat.ilks[ILK].line => #hashedLocation("Solidity", 2, ILK) +Int 3 - rule #Vat.ilks[ILK].dust => #hashedLocation("Solidity", 2, ILK) +Int 4 - rule #Vat.urns[ILK][USR].ink => #hashedLocation("Solidity", 3, ILK USR) - rule #Vat.urns[ILK][USR].art => #hashedLocation("Solidity", 3, ILK USR) +Int 1 - rule #Vat.gem[ILK][USR] => #hashedLocation("Solidity", 4, ILK USR) - rule #Vat.dai[A] => #hashedLocation("Solidity", 5, A) - rule #Vat.sin[A] => #hashedLocation("Solidity", 6, A) - rule #Vat.debt => 7 - rule #Vat.vice => 8 - rule #Vat.Line => 9 - rule #Vat.live => 10 - - // ### Dai - // ------- - - syntax Int ::= "#Dai.wards" "[" Int "]" [macro] - | "#Dai.totalSupply" [macro] - | "#Dai.balanceOf" "[" Int "]" [macro] - | "#Dai.allowance" "[" Int "][" Int "]" [macro] - | "#Dai.nonces" "[" Int "]" [macro] - | "#Dai.DOMAIN_SEPARATOR" [macro] - // ------------------------------------------------------------ - rule #Dai.wards[A] => #hashedLocation("Solidity", 0, A) - rule #Dai.totalSupply => 1 - rule #Dai.balanceOf[A] => #hashedLocation("Solidity", 2, A) - rule #Dai.allowance[A][B] => #hashedLocation("Solidity", 3, A B) - rule #Dai.nonces[A] => #hashedLocation("Solidity", 4, A) - rule #Dai.DOMAIN_SEPARATOR => 5 - - // ### Jug - // ------- - - syntax Int ::= "#Jug.wards" "[" Int "]" [macro] - | "#Jug.ilks" "[" Int "].duty" [macro] - | "#Jug.ilks" "[" Int "].rho" [macro] - | "#Jug.vat" [macro] - | "#Jug.vow" [macro] - | "#Jug.base" [macro] - // --------------------------------------------------- - rule #Jug.wards[A] => #hashedLocation("Solidity", 0, A) - rule #Jug.ilks[ILK].duty => #hashedLocation("Solidity", 1, ILK) +Int 0 - rule #Jug.ilks[ILK].rho => #hashedLocation("Solidity", 1, ILK) +Int 1 - rule #Jug.vat => 2 - rule #Jug.vow => 3 - rule #Jug.base => 4 - - // ### Drip - // -------- - - syntax Int ::= "#Drip.wards" "[" Int "]" [macro] - | "#Drip.ilks" "[" Int "].tax" [macro] - | "#Drip.ilks" "[" Int "].rho" [macro] - | "#Drip.vat" [macro] - | "#Drip.vow" [macro] - | "#Drip.repo" [macro] - // --------------------------------------------------- - rule #Drip.wards[A] => #hashedLocation("Solidity", 0, A) - rule #Drip.ilks[ILK].tax => #hashedLocation("Solidity", 1, ILK) +Int 0 - rule #Drip.ilks[ILK].rho => #hashedLocation("Solidity", 1, ILK) +Int 1 - rule #Drip.vat => 2 - rule #Drip.vow => 3 - rule #Drip.repo => 4 - - // ### Vow - // ------- - - syntax Int ::= "#Vow.wards" "[" Int "]" [macro] - | "#Vow.vat" [macro] - | "#Vow.flapper" [macro] - | "#Vow.flopper" [macro] - | "#Vow.sin" "[" Int "]" [macro] - | "#Vow.Sin" [macro] - | "#Vow.Ash" [macro] - | "#Vow.wait" [macro] - | "#Vow.dump" [macro] - | "#Vow.sump" [macro] - | "#Vow.bump" [macro] - | "#Vow.hump" [macro] - | "#Vow.live" [macro] - // ----------------------------------------------- - rule #Vow.wards[A] => #hashedLocation("Solidity", 0, A) - rule #Vow.vat => 1 - rule #Vow.flapper => 2 - rule #Vow.flopper => 3 - rule #Vow.sin[A] => #hashedLocation("Solidity", 4, A) - rule #Vow.Sin => 5 - rule #Vow.Ash => 6 - rule #Vow.wait => 7 - rule #Vow.dump => 8 - rule #Vow.sump => 9 - rule #Vow.bump => 10 - rule #Vow.hump => 11 - rule #Vow.live => 12 - - // ### Cat - // ------- - - syntax Int ::= "#Cat.wards" "[" Int "]" [macro] - | "#Cat.ilks" "[" Int "].flip" [macro] - | "#Cat.ilks" "[" Int "].chop" [macro] - | "#Cat.ilks" "[" Int "].lump" [macro] - | "#Cat.live" [macro] - | "#Cat.vat" [macro] - | "#Cat.vow" [macro] - // --------------------------------------------------- - rule #Cat.wards[A] => #hashedLocation("Solidity", 0, A) - rule #Cat.ilks[ILK].flip => #hashedLocation("Solidity", 1, ILK) +Int 0 - rule #Cat.ilks[ILK].chop => #hashedLocation("Solidity", 1, ILK) +Int 1 - rule #Cat.ilks[ILK].lump => #hashedLocation("Solidity", 1, ILK) +Int 2 - rule #Cat.live => 2 - rule #Cat.vat => 3 - rule #Cat.vow => 4 - - // ### GemJoin - // ----------- - - syntax Int ::= "#GemJoin.wards" "[" Int "]" [macro] - | "#GemJoin.vat" [macro] - | "#GemJoin.ilk" [macro] - | "#GemJoin.gem" [macro] - | "#GemJoin.dec" [macro] - | "#GemJoin.live" [macro] - // --------------------------------------------------- - rule #GemJoin.wards[A] => #hashedLocation("Solidity", 0, A) - rule #GemJoin.vat => 1 - rule #GemJoin.ilk => 2 - rule #GemJoin.gem => 3 - rule #GemJoin.dec => 4 - rule #GemJoin.live => 5 - - // ### DaiJoin - // ----------- - - syntax Int ::= "#DaiJoin.wards" "[" Int "]" [macro] - | "#DaiJoin.vat" [macro] - | "#DaiJoin.dai" [macro] - | "#DaiJoin.live" [macro] - // --------------------------------------------------- - rule #DaiJoin.wards[A] => #hashedLocation("Solidity", 0, A) - rule #DaiJoin.vat => 1 - rule #DaiJoin.dai => 2 - rule #DaiJoin.live => 3 - - // ### Flip - // -------- - - syntax Int ::= "#Flipper.wards" "[" Int "]" [macro] - | "#Flipper.bids" "[" Int "].bid" [macro] - | "#Flipper.bids" "[" Int "].lot" [macro] - | "#Flipper.bids" "[" Int "].guy_tic_end" [macro] - | "#Flipper.bids" "[" Int "].usr" [macro] - | "#Flipper.bids" "[" Int "].gal" [macro] - | "#Flipper.bids" "[" Int "].tab" [macro] - | "#Flipper.vat" [macro] - | "#Flipper.ilk" [macro] - | "#Flipper.beg" [macro] - | "#Flipper.ttl_tau" [macro] - | "#Flipper.kicks" [macro] - // -------------------------------------------------------------- - rule #Flipper.wards[A] => #hashedLocation("Solidity", 0, A) - rule #Flipper.bids[N].bid => #hashedLocation("Solidity", 1, N) +Int 0 - rule #Flipper.bids[N].lot => #hashedLocation("Solidity", 1, N) +Int 1 - rule #Flipper.bids[N].guy_tic_end => #hashedLocation("Solidity", 1, N) +Int 2 - rule #Flipper.bids[N].usr => #hashedLocation("Solidity", 1, N) +Int 3 - rule #Flipper.bids[N].gal => #hashedLocation("Solidity", 1, N) +Int 4 - rule #Flipper.bids[N].tab => #hashedLocation("Solidity", 1, N) +Int 5 - rule #Flipper.vat => 2 - rule #Flipper.ilk => 3 - rule #Flipper.beg => 4 - rule #Flipper.ttl_tau => 5 - rule #Flipper.kicks => 6 - - // ### Flop - // -------- - - syntax Int ::= "#Flopper.wards" "[" Int "]" [macro] - | "#Flopper.bids" "[" Int "].bid" [macro] - | "#Flopper.bids" "[" Int "].lot" [macro] - | "#Flopper.bids" "[" Int "].guy_tic_end" [macro] - | "#Flopper.vat" [macro] - | "#Flopper.gem" [macro] - | "#Flopper.beg" [macro] - | "#Flopper.pad" [macro] - | "#Flopper.ttl_tau" [macro] - | "#Flopper.kicks" [macro] - | "#Flopper.live" [macro] - | "#Flopper.vow" [macro] - // -------------------------------------------------------------- - rule #Flopper.wards[A] => #hashedLocation("Solidity", 0, A) - rule #Flopper.bids[N].bid => #hashedLocation("Solidity", 1, N) +Int 0 - rule #Flopper.bids[N].lot => #hashedLocation("Solidity", 1, N) +Int 1 - rule #Flopper.bids[N].guy_tic_end => #hashedLocation("Solidity", 1, N) +Int 2 - rule #Flopper.vat => 2 - rule #Flopper.gem => 3 - rule #Flopper.beg => 4 - rule #Flopper.pad => 5 - rule #Flopper.ttl_tau => 6 - rule #Flopper.kicks => 7 - rule #Flopper.live => 8 - rule #Flopper.vow => 9 - - // ### Flap - // -------- - - syntax Int ::= "#Flapper.wards" "[" Int "]" [macro] - | "#Flapper.bids" "[" Int "].bid" [macro] - | "#Flapper.bids" "[" Int "].lot" [macro] - | "#Flapper.bids" "[" Int "].guy_tic_end" [macro] - | "#Flapper.vat" [macro] - | "#Flapper.gem" [macro] - | "#Flapper.beg" [macro] - | "#Flapper.ttl_tau" [macro] - | "#Flapper.kicks" [macro] - | "#Flapper.live" [macro] - // -------------------------------------------------------------- - rule #Flapper.wards[A] => #hashedLocation("Solidity", 0, A) - rule #Flapper.bids[N].bid => #hashedLocation("Solidity", 1, N) +Int 0 - rule #Flapper.bids[N].lot => #hashedLocation("Solidity", 1, N) +Int 1 - rule #Flapper.bids[N].guy_tic_end => #hashedLocation("Solidity", 1, N) +Int 2 - rule #Flapper.vat => 2 - rule #Flapper.gem => 3 - rule #Flapper.beg => 4 - rule #Flapper.ttl_tau => 5 - rule #Flapper.kicks => 6 - rule #Flapper.live => 7 - - // ### GemLike - // ----------- - - syntax Int ::= "#Gem.balances" "[" Int "]" [macro] - | "#Gem.stopped" [macro] - | "#Gem.allowance" "[" Int "][" Int "]" [macro] - // ------------------------------------------------------------ - rule #Gem.balances[A] => #hashedLocation("Solidity", 3, A) - rule #Gem.stopped => 4 - rule #Gem.allowance[A][B] => #hashedLocation("Solidity", 8, A B) - - // ### End - // ------- - - syntax Int ::= "#End.wards" "[" Int "]" [macro] - | "#End.vat" [macro] - | "#End.cat" [macro] - | "#End.vow" [macro] - | "#End.pot" [macro] - | "#End.spot" [macro] - | "#End.live" [macro] - | "#End.when" [macro] - | "#End.wait" [macro] - | "#End.debt" [macro] - | "#End.tag" "[" Int "]" [macro] - | "#End.gap" "[" Int "]" [macro] - | "#End.Art" "[" Int "]" [macro] - | "#End.fix" "[" Int "]" [macro] - | "#End.bag" "[" Int "]" [macro] - | "#End.out" "[" Int "][" Int "]" [macro] - // ------------------------------------------------------ - rule #End.wards[A] => #hashedLocation("Solidity", 0, A) - rule #End.vat => 1 - rule #End.cat => 2 - rule #End.vow => 3 - rule #End.pot => 4 - rule #End.spot => 5 - rule #End.live => 6 - rule #End.when => 7 - rule #End.wait => 8 - rule #End.debt => 9 - rule #End.tag[ILK] => #hashedLocation("Solidity", 10, ILK) - rule #End.gap[ILK] => #hashedLocation("Solidity", 11, ILK) - rule #End.Art[ILK] => #hashedLocation("Solidity", 12, ILK) - rule #End.fix[ILK] => #hashedLocation("Solidity", 13, ILK) - rule #End.bag[USR] => #hashedLocation("Solidity", 14, USR) - rule #End.out[ILK][USR] => #hashedLocation("Solidity", 15, ILK USR) - - // ### Pot - // ------- - - syntax Int ::= "#Pot.wards" "[" Int "]" [macro] - | "#Pot.pie" "[" Int "]" [macro] - | "#Pot.Pie" [macro] - | "#Pot.dsr" [macro] - | "#Pot.chi" [macro] - | "#Pot.vat" [macro] - | "#Pot.vow" [macro] - | "#Pot.rho" [macro] - | "#Pot.live" [macro] - // ----------------------------------------------- - rule #Pot.wards[A] => #hashedLocation("Solidity", 0, A) - rule #Pot.pie[USR] => #hashedLocation("Solidity", 1, USR) - rule #Pot.Pie => 2 - rule #Pot.dsr => 3 - rule #Pot.chi => 4 - rule #Pot.vat => 5 - rule #Pot.vow => 6 - rule #Pot.rho => 7 - rule #Pot.live => 8 - - // ### DSToken - // ----------- - - syntax Int ::= "#DSToken.supply" [macro] - | "#DSToken.balances" "[" Int "]" [macro] - | "#DSToken.allowance" "[" Int "][" Int "]" [macro] - | "#DSToken.authority" [macro] - | "#DSToken.owner_stopped" [macro] - | "#DSToken.symbol" [macro] - | "#DSToken.decimals" [macro] - // ---------------------------------------------------------------- - rule #DSToken.supply => 0 - rule #DSToken.balances[A] => #hashedLocation("Solidity", 1, A) - rule #DSToken.allowance[A][B] => #hashedLocation("Solidity", 2, A B) - rule #DSToken.authority => 3 - rule #DSToken.owner_stopped => 4 - rule #DSToken.symbol => 5 - rule #DSToken.decimals => 6 - - // ### DSValue - // ----------- - - syntax Int ::= "#DSValue.authority" [macro] - | "#DSValue.owner_has" [macro] - | "#DSValue.val" [macro] - // ------------------------------------------- - rule #DSValue.authority => 0 - rule #DSValue.owner_has => 1 - rule #DSValue.val => 2 - - // ### Spotter - // ----------- - - syntax Int ::= "#Spotter.wards" "[" Int "]" [macro] - | "#Spotter.ilks" "[" Int "].pip" [macro] - | "#Spotter.ilks" "[" Int "].mat" [macro] - | "#Spotter.vat" [macro] - | "#Spotter.par" [macro] - | "#Spotter.live" [macro] - // ------------------------------------------------------ - rule #Spotter.wards[A] => #hashedLocation("Solidity", 0, A) - rule #Spotter.ilks[ILK].pip => #hashedLocation("Solidity", 1, ILK) +Int 0 - rule #Spotter.ilks[ILK].mat => #hashedLocation("Solidity", 1, ILK) +Int 1 - rule #Spotter.vat => 2 - rule #Spotter.par => 3 - rule #Spotter.live => 4 - -endmodule diff --git a/tests/specs/mcd/vat-addui-fail-rough-spec.k b/tests/specs/mcd/vat-addui-fail-rough-spec.k deleted file mode 100644 index 23efdad594..0000000000 --- a/tests/specs/mcd/vat-addui-fail-rough-spec.k +++ /dev/null @@ -1,109 +0,0 @@ -requires "verification.k" - -module VAT-ADDUI-FAIL-ROUGH-SPEC - imports VERIFICATION - - // Vat_addui - claim [Vat.addui.fail.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => ?FAILURE:EndStatusCode - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - chop(ABI_y) : ABI_x : JMPTO : WS => ?_ - _ - 13112 => ?_ - #gas(VGas) => ?_ - VMemoryUsed - _ => ?_ - _ - VCallDepth => ?_ - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ?_ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeSInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1015) - andBool (#rangeUInt(256, VMemoryUsed))))) - - - andBool notBool ( - ((#rangeUInt(256, ABI_x:Int +Int ABI_y:Int))) - ) - ensures - ?FAILURE =/=K EVMC_SUCCESS - -endmodule diff --git a/tests/specs/mcd/vat-addui-pass-spec.k b/tests/specs/mcd/vat-addui-pass-spec.k deleted file mode 100644 index 7290ad29ae..0000000000 --- a/tests/specs/mcd/vat-addui-pass-spec.k +++ /dev/null @@ -1,108 +0,0 @@ -requires "verification.k" - -module VAT-ADDUI-PASS-SPEC - imports VERIFICATION - - // Vat_addui - claim [Vat.addui.pass]: - #execute ~> CONTINUATION => JUMP JMPTO ~> #pc [ JUMP ] ~> #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - chop(ABI_y) : ABI_x : JMPTO : WS => ABI_x +Int ABI_y : WS - _ - 13112 => 13174 - #gas(VGas) => #if ( ABI_y - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeSInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1015) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x +Int ABI_y))))))) - -endmodule \ No newline at end of file diff --git a/tests/specs/mcd/vat-deny-diff-fail-rough-spec.k b/tests/specs/mcd/vat-deny-diff-fail-rough-spec.k deleted file mode 100644 index 28e9dfd61d..0000000000 --- a/tests/specs/mcd/vat-deny-diff-fail-rough-spec.k +++ /dev/null @@ -1,124 +0,0 @@ -requires "verification.k" - -module VAT-DENY-DIFF-FAIL-ROUGH-SPEC - imports VERIFICATION - - // Vat_deny-diff - claim [Vat.deny-diff.fail.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => ?FAILURE:EndStatusCode - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("deny", #address(ABI_usr)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth => ?_ - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ?_ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeAddress(ABI_usr) - andBool (#rangeUInt(256, May) - andBool (#rangeUInt(256, Live) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((CALLER_ID =/=Int ABI_usr) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3)))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.wards[CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Vat.wards[ABI_usr]) ==Int Junk_0 - andBool #lookup(ACCT_ID_STORAGE, #Vat.live) ==Int Live - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.wards[CALLER_ID]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.wards[ABI_usr]) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.live) ==Int Junk_3 - andBool #Vat.wards[CALLER_ID] =/=Int #Vat.wards[ABI_usr] - andBool #Vat.wards[CALLER_ID] =/=Int #Vat.live - andBool #Vat.wards[ABI_usr] =/=Int #Vat.live - andBool notBool ( - ((May:Int ==Int 1) - andBool ((Live:Int ==Int 1) - andBool ((VCallValue:Int ==Int 0)))) - ) - ensures - ?FAILURE =/=K EVMC_SUCCESS - -endmodule diff --git a/tests/specs/mcd/vat-flux-diff-pass-rough-spec.k b/tests/specs/mcd/vat-flux-diff-pass-rough-spec.k deleted file mode 100644 index 94edd7403f..0000000000 --- a/tests/specs/mcd/vat-flux-diff-pass-rough-spec.k +++ /dev/null @@ -1,323 +0,0 @@ -requires "verification.k" - -module VAT-FLUX-DIFF-PASS-ROUGH-SPEC - imports VERIFICATION - - // Vat_flux-diff - claim [Vat.flux-diff.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("flux", #bytes32(ABI_ilk), #address(ABI_src), #address(ABI_dst), #uint256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.gem[ABI_ilk][ABI_src] <- Gem_src -Int ABI_wad ] [ #Vat.gem[ABI_ilk][ABI_dst] <- Gem_dst +Int ABI_wad ] - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeBytes(32, ABI_ilk) - andBool (#rangeAddress(ABI_src) - andBool (#rangeAddress(ABI_dst) - andBool (#rangeUInt(256, ABI_wad) - andBool (#rangeUInt(256, May) - andBool (#rangeUInt(256, Gem_src) - andBool (#rangeUInt(256, Gem_dst) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((ABI_src =/=Int ABI_dst) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool ((((May ==Int 1 orBool ABI_src ==Int CALLER_ID))) - andBool (((VCallValue ==Int 0)) - andBool ((#rangeUInt(256, Gem_src -Int ABI_wad)) - andBool ((#rangeUInt(256, Gem_dst +Int ABI_wad)))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Vat.gem[ABI_ilk][ABI_src]) ==Int Gem_src - andBool #lookup(ACCT_ID_STORAGE, #Vat.gem[ABI_ilk][ABI_dst]) ==Int Gem_dst - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.gem[ABI_ilk][ABI_src]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.gem[ABI_ilk][ABI_dst]) ==Int Junk_2 - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.gem[ABI_ilk][ABI_src] - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.gem[ABI_ilk][ABI_dst] - andBool #Vat.gem[ABI_ilk][ABI_src] =/=Int #Vat.gem[ABI_ilk][ABI_dst] - - // Vat_subuu - claim [Vat.subuu.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x -Int ABI_y : WS - _ - 13060 => 13085 - #gas(VGas) => #gas ( ( VGas +Int -54 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x -Int ABI_y))))))) - - - [trusted] - - - // Vat_adduu - claim [Vat.adduu.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 13086 => 13111 - #gas(VGas) => #gas ( ( VGas +Int -54 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x +Int ABI_y))))))) - - - [trusted] - - -endmodule diff --git a/tests/specs/mcd/vat-fold-pass-rough-spec.k b/tests/specs/mcd/vat-fold-pass-rough-spec.k deleted file mode 100644 index 44972005e3..0000000000 --- a/tests/specs/mcd/vat-fold-pass-rough-spec.k +++ /dev/null @@ -1,358 +0,0 @@ -requires "verification.k" - -module VAT-FOLD-PASS-ROUGH-SPEC - imports VERIFICATION - - // Vat_fold - claim [Vat.fold.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("fold", #bytes32(ABI_i), #address(ABI_u), #int256(ABI_rate)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.ilks[ABI_i].rate <- Rate_i +Int ABI_rate ] [ #Vat.dai[ABI_u] <- Dai_u +Int Art_i *Int ABI_rate ] [ #Vat.debt <- Debt +Int Art_i *Int ABI_rate ] - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeBytes(32, ABI_i) - andBool (#rangeAddress(ABI_u) - andBool (#rangeSInt(256, ABI_rate) - andBool (#rangeUInt(256, May) - andBool (#rangeUInt(256, Rate_i) - andBool (#rangeUInt(256, Dai_u) - andBool (#rangeUInt(256, Art_i) - andBool (#rangeUInt(256, Debt) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool ((((VCallValue ==Int 0))) - andBool ((((May ==Int 1))) - andBool ((((Live ==Int 1))) - andBool ((((Art_i <=Int maxSInt256))) - andBool (((#rangeSInt(256, Art_i *Int ABI_rate))) - andBool ((#rangeUInt(256, Rate_i +Int ABI_rate)) - andBool ((#rangeUInt(256, Dai_u +Int (Art_i *Int ABI_rate))) - andBool ((#rangeUInt(256, Debt +Int (Art_i *Int ABI_rate)))))))))))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.wards[CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Vat.ilks[ABI_i].Art) ==Int Art_i - andBool #lookup(ACCT_ID_STORAGE, #Vat.live) ==Int Live - andBool #lookup(ACCT_ID_STORAGE, #Vat.ilks[ABI_i].rate) ==Int Rate_i - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_u]) ==Int Dai_u - andBool #lookup(ACCT_ID_STORAGE, #Vat.debt) ==Int Debt - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.wards[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.ilks[ABI_i].Art) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.live) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.ilks[ABI_i].rate) ==Int Junk_3 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_u]) ==Int Junk_4 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.debt) ==Int Junk_5 - andBool #Vat.wards[CALLER_ID] =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.wards[CALLER_ID] =/=Int #Vat.live - andBool #Vat.wards[CALLER_ID] =/=Int #Vat.ilks[ABI_i].rate - andBool #Vat.wards[CALLER_ID] =/=Int #Vat.dai[ABI_u] - andBool #Vat.wards[CALLER_ID] =/=Int #Vat.debt - andBool #Vat.ilks[ABI_i].Art =/=Int #Vat.live - andBool #Vat.ilks[ABI_i].Art =/=Int #Vat.ilks[ABI_i].rate - andBool #Vat.ilks[ABI_i].Art =/=Int #Vat.dai[ABI_u] - andBool #Vat.ilks[ABI_i].Art =/=Int #Vat.debt - andBool #Vat.live =/=Int #Vat.ilks[ABI_i].rate - andBool #Vat.live =/=Int #Vat.dai[ABI_u] - andBool #Vat.live =/=Int #Vat.debt - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.dai[ABI_u] - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.debt - andBool #Vat.dai[ABI_u] =/=Int #Vat.debt - - // Vat_addui - claim [Vat.addui.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - chop(ABI_y) : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 13112 => 13174 - #gas(VGas) => #if ( ABI_y - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeSInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1015) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x +Int ABI_y))))))) - - - [trusted] - - - // Vat_mului - claim [Vat.mului.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - chop(ABI_y) : ABI_x : JMPTO : WS => JMPTO : chop(ABI_x *Int ABI_y) : WS - _ - 13175 => 13233 - #gas(VGas) => #if ABI_y ==Int 0 - #then #gas ( ( VGas +Int -96 ) ) - #else #gas ( ( VGas +Int -132 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeSInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeSInt(256, ABI_x)) - andBool ((#rangeSInt(256, ABI_x *Int ABI_y)))))))) - - - [trusted] - - -endmodule diff --git a/tests/specs/mcd/vat-fork-diff-pass-rough-spec.k b/tests/specs/mcd/vat-fork-diff-pass-rough-spec.k deleted file mode 100644 index d8e8d1f5f8..0000000000 --- a/tests/specs/mcd/vat-fork-diff-pass-rough-spec.k +++ /dev/null @@ -1,505 +0,0 @@ -requires "verification.k" - -module VAT-FORK-DIFF-PASS-ROUGH-SPEC - imports VERIFICATION - - // Vat_fork-diff - claim [Vat.fork-diff.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("fork", #bytes32(ABI_ilk), #address(ABI_src), #address(ABI_dst), #int256(ABI_dink), #int256(ABI_dart)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.urns[ABI_ilk][ABI_src].ink <- Ink_u -Int ABI_dink ] [ #Vat.urns[ABI_ilk][ABI_src].art <- Art_u -Int ABI_dart ] [ #Vat.urns[ABI_ilk][ABI_dst].ink <- Ink_v +Int ABI_dink ] [ #Vat.urns[ABI_ilk][ABI_dst].art <- Art_v +Int ABI_dart ] - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeBytes(32, ABI_ilk) - andBool (#rangeAddress(ABI_src) - andBool (#rangeAddress(ABI_dst) - andBool (#rangeSInt(256, ABI_dink) - andBool (#rangeSInt(256, ABI_dart) - andBool (#rangeUInt(256, Can_src) - andBool (#rangeUInt(256, Can_dst) - andBool (#rangeUInt(256, Rate) - andBool (#rangeUInt(256, Spot) - andBool (#rangeUInt(256, Dust) - andBool (#rangeUInt(256, Ink_u) - andBool (#rangeUInt(256, Art_u) - andBool (#rangeUInt(256, Ink_v) - andBool (#rangeUInt(256, Art_v) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((ABI_src =/=Int ABI_dst) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (#rangeUInt(256, Junk_7) - andBool (#rangeUInt(256, Junk_8) - andBool (((VCallValue ==Int 0)) - andBool ((((ABI_src ==Int CALLER_ID) orBool (Can_src ==Int 1))) - andBool ((((ABI_dst ==Int CALLER_ID) orBool (Can_dst ==Int 1))) - andBool ((((Art_u -Int ABI_dart) *Int Rate <=Int (Ink_u -Int ABI_dink) *Int Spot)) - andBool ((((Art_v +Int ABI_dart) *Int Rate <=Int (Ink_v +Int ABI_dink) *Int Spot)) - andBool (((((Art_u -Int ABI_dart) *Int Rate >=Int Dust) orBool (Art_u -Int ABI_dart ==Int 0))) - andBool (((((Art_v +Int ABI_dart) *Int Rate >=Int Dust) orBool (Art_v +Int ABI_dart ==Int 0))) - andBool ((#rangeUInt(256, Ink_u -Int ABI_dink)) - andBool ((#rangeUInt(256, Ink_v +Int ABI_dink)) - andBool ((#rangeUInt(256, Art_u -Int ABI_dart)) - andBool ((#rangeUInt(256, Art_v +Int ABI_dart)) - andBool ((#rangeUInt(256, (Ink_u -Int ABI_dink) *Int Spot)) - andBool ((#rangeUInt(256, (Ink_v +Int ABI_dink) *Int Spot)))))))))))))))))))))))))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int Can_src - andBool #lookup(ACCT_ID_STORAGE, #Vat.can[ABI_dst][CALLER_ID]) ==Int Can_dst - andBool #lookup(ACCT_ID_STORAGE, #Vat.ilks[ABI_ilk].rate) ==Int Rate - andBool #lookup(ACCT_ID_STORAGE, #Vat.ilks[ABI_ilk].spot) ==Int Spot - andBool #lookup(ACCT_ID_STORAGE, #Vat.ilks[ABI_ilk].dust) ==Int Dust - andBool #lookup(ACCT_ID_STORAGE, #Vat.urns[ABI_ilk][ABI_src].ink) ==Int Ink_u - andBool #lookup(ACCT_ID_STORAGE, #Vat.urns[ABI_ilk][ABI_src].art) ==Int Art_u - andBool #lookup(ACCT_ID_STORAGE, #Vat.urns[ABI_ilk][ABI_dst].ink) ==Int Ink_v - andBool #lookup(ACCT_ID_STORAGE, #Vat.urns[ABI_ilk][ABI_dst].art) ==Int Art_v - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.can[ABI_dst][CALLER_ID]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.ilks[ABI_ilk].rate) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.ilks[ABI_ilk].spot) ==Int Junk_3 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.ilks[ABI_ilk].dust) ==Int Junk_4 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.urns[ABI_ilk][ABI_src].ink) ==Int Junk_5 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.urns[ABI_ilk][ABI_src].art) ==Int Junk_6 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.urns[ABI_ilk][ABI_dst].ink) ==Int Junk_7 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.urns[ABI_ilk][ABI_dst].art) ==Int Junk_8 - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.can[ABI_dst][CALLER_ID] - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.ilks[ABI_ilk].rate - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.ilks[ABI_ilk].spot - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.ilks[ABI_ilk].dust - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.urns[ABI_ilk][ABI_src].ink - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.urns[ABI_ilk][ABI_src].art - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.urns[ABI_ilk][ABI_dst].ink - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.urns[ABI_ilk][ABI_dst].art - andBool #Vat.can[ABI_dst][CALLER_ID] =/=Int #Vat.ilks[ABI_ilk].rate - andBool #Vat.can[ABI_dst][CALLER_ID] =/=Int #Vat.ilks[ABI_ilk].spot - andBool #Vat.can[ABI_dst][CALLER_ID] =/=Int #Vat.ilks[ABI_ilk].dust - andBool #Vat.can[ABI_dst][CALLER_ID] =/=Int #Vat.urns[ABI_ilk][ABI_src].ink - andBool #Vat.can[ABI_dst][CALLER_ID] =/=Int #Vat.urns[ABI_ilk][ABI_src].art - andBool #Vat.can[ABI_dst][CALLER_ID] =/=Int #Vat.urns[ABI_ilk][ABI_dst].ink - andBool #Vat.can[ABI_dst][CALLER_ID] =/=Int #Vat.urns[ABI_ilk][ABI_dst].art - andBool #Vat.ilks[ABI_ilk].rate =/=Int #Vat.ilks[ABI_ilk].spot - andBool #Vat.ilks[ABI_ilk].rate =/=Int #Vat.ilks[ABI_ilk].dust - andBool #Vat.ilks[ABI_ilk].rate =/=Int #Vat.urns[ABI_ilk][ABI_src].ink - andBool #Vat.ilks[ABI_ilk].rate =/=Int #Vat.urns[ABI_ilk][ABI_src].art - andBool #Vat.ilks[ABI_ilk].rate =/=Int #Vat.urns[ABI_ilk][ABI_dst].ink - andBool #Vat.ilks[ABI_ilk].rate =/=Int #Vat.urns[ABI_ilk][ABI_dst].art - andBool #Vat.ilks[ABI_ilk].spot =/=Int #Vat.ilks[ABI_ilk].dust - andBool #Vat.ilks[ABI_ilk].spot =/=Int #Vat.urns[ABI_ilk][ABI_src].ink - andBool #Vat.ilks[ABI_ilk].spot =/=Int #Vat.urns[ABI_ilk][ABI_src].art - andBool #Vat.ilks[ABI_ilk].spot =/=Int #Vat.urns[ABI_ilk][ABI_dst].ink - andBool #Vat.ilks[ABI_ilk].spot =/=Int #Vat.urns[ABI_ilk][ABI_dst].art - andBool #Vat.ilks[ABI_ilk].dust =/=Int #Vat.urns[ABI_ilk][ABI_src].ink - andBool #Vat.ilks[ABI_ilk].dust =/=Int #Vat.urns[ABI_ilk][ABI_src].art - andBool #Vat.ilks[ABI_ilk].dust =/=Int #Vat.urns[ABI_ilk][ABI_dst].ink - andBool #Vat.ilks[ABI_ilk].dust =/=Int #Vat.urns[ABI_ilk][ABI_dst].art - andBool #Vat.urns[ABI_ilk][ABI_src].ink =/=Int #Vat.urns[ABI_ilk][ABI_src].art - andBool #Vat.urns[ABI_ilk][ABI_src].ink =/=Int #Vat.urns[ABI_ilk][ABI_dst].ink - andBool #Vat.urns[ABI_ilk][ABI_src].ink =/=Int #Vat.urns[ABI_ilk][ABI_dst].art - andBool #Vat.urns[ABI_ilk][ABI_src].art =/=Int #Vat.urns[ABI_ilk][ABI_dst].ink - andBool #Vat.urns[ABI_ilk][ABI_src].art =/=Int #Vat.urns[ABI_ilk][ABI_dst].art - andBool #Vat.urns[ABI_ilk][ABI_dst].ink =/=Int #Vat.urns[ABI_ilk][ABI_dst].art - - // Vat_addui - claim [Vat.addui.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - chop(ABI_y) : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 13112 => 13174 - #gas(VGas) => #if ( ABI_y - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeSInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1015) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x +Int ABI_y))))))) - - - [trusted] - - - // Vat_subui - claim [Vat.subui.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - chop(ABI_y) : ABI_x : JMPTO : WS => JMPTO : ABI_x -Int ABI_y : WS - _ - 13304 => 13366 - #gas(VGas) => #if ( ABI_y =/=Int 0 andBool 0 <=Int ABI_y ) - #then #gas ( ( VGas +Int -128 ) ) - #else #if 0 <=Int ABI_y - #then #gas ( ( VGas +Int -114 ) ) - #else #gas ( ( VGas +Int -128 ) ) - #fi - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeSInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1015) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x -Int ABI_y))))))) - - - [trusted] - - - // Vat_muluu - claim [Vat.muluu.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x *Int ABI_y : WS - _ - 13234 => 13277 - #gas(VGas) => #if ABI_y ==Int 0 - #then #gas ( ( VGas +Int -54 ) ) - #else #gas ( ( VGas +Int -106 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x *Int ABI_y))))))) - - - [trusted] - - -endmodule diff --git a/tests/specs/mcd/vat-frob-diff-zero-dart-pass-rough-spec.k b/tests/specs/mcd/vat-frob-diff-zero-dart-pass-rough-spec.k deleted file mode 100644 index 42ad39b78e..0000000000 --- a/tests/specs/mcd/vat-frob-diff-zero-dart-pass-rough-spec.k +++ /dev/null @@ -1,391 +0,0 @@ -requires "verification.k" - -module VAT-FROB-DIFF-ZERO-DART-PASS-ROUGH-SPEC - imports VERIFICATION - - // Vat_frob-diff-zero-dart - claim [Vat.frob-diff-zero-dart.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("frob", #bytes32(ABI_i), #address(ABI_u), #address(ABI_v), #address(ABI_w), #int256(ABI_dink), #int256(ABI_dart)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.gem[ABI_i][ABI_v] <- Gem_iv -Int ABI_dink ] [ #Vat.urns[ABI_i][ABI_u].ink <- Urn_ink +Int ABI_dink ] - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeBytes(32, ABI_i) - andBool (#rangeAddress(ABI_u) - andBool (#rangeAddress(ABI_v) - andBool (#rangeAddress(ABI_w) - andBool (#rangeSInt(256, ABI_dink) - andBool (#rangeSInt(256, ABI_dart) - andBool (#rangeUInt(256, Ilk_rate) - andBool (#rangeUInt(256, Ilk_line) - andBool (#rangeUInt(256, Ilk_spot) - andBool (#rangeUInt(256, Ilk_dust) - andBool (#rangeUInt(256, Ilk_Art) - andBool (#rangeUInt(256, Urn_ink) - andBool (#rangeUInt(256, Urn_art) - andBool (#rangeUInt(256, Gem_iv) - andBool (#rangeUInt(256, Dai_w) - andBool (#rangeUInt(256, Debt) - andBool (#rangeUInt(256, Line) - andBool (#rangeUInt(256, Can_u) - andBool (#rangeUInt(256, Can_v) - andBool (#rangeUInt(256, Can_w) - andBool (#rangeUInt(256, Live) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((ABI_u =/=Int ABI_v) - andBool ((ABI_v =/=Int ABI_w) - andBool ((ABI_u =/=Int ABI_w) - andBool ((ABI_dink =/=Int 0) - andBool ((ABI_dart ==Int 0) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (#rangeUInt(256, Junk_7) - andBool (#rangeUInt(256, Junk_8) - andBool (#rangeUInt(256, Junk_9) - andBool (#rangeUInt(256, Junk_10) - andBool (#rangeUInt(256, Junk_11) - andBool (#rangeUInt(256, Junk_12) - andBool (#rangeUInt(256, Junk_13) - andBool (#rangeUInt(256, Junk_14) - andBool ((((#rangeUInt(256, Urn_ink +Int ABI_dink)))) - andBool ((((#rangeUInt(256, Gem_iv -Int ABI_dink)))) - andBool ((((#rangeUInt(256, (Urn_ink +Int ABI_dink) *Int Ilk_spot)))) - andBool ((((#rangeUInt(256, Urn_art *Int Ilk_rate)))) - andBool ((((#rangeUInt(256, Ilk_Art *Int Ilk_rate)))) - andBool (((#rangeSInt(256, Ilk_rate))) - andBool ((VCallValue ==Int 0) - andBool ((Live ==Int 1) - andBool ((Ilk_rate =/=Int 0) - andBool (((ABI_dink >=Int 0) orBool (((Urn_art *Int Ilk_rate) <=Int ((Urn_ink +Int ABI_dink) *Int Ilk_spot)))) - andBool (((ABI_dink >=Int 0) orBool (ABI_u ==Int CALLER_ID orBool Can_u ==Int 1)) - andBool (((ABI_dink <=Int 0) orBool (ABI_v ==Int CALLER_ID orBool Can_v ==Int 1)) - andBool (((Urn_art ==Int 0) orBool ((Urn_art *Int Ilk_rate) >=Int Ilk_dust))))))))))))))))))))))))))))))))))))))))))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.ilks[ABI_i].rate) ==Int Ilk_rate - andBool #lookup(ACCT_ID_STORAGE, #Vat.ilks[ABI_i].line) ==Int Ilk_line - andBool #lookup(ACCT_ID_STORAGE, #Vat.ilks[ABI_i].spot) ==Int Ilk_spot - andBool #lookup(ACCT_ID_STORAGE, #Vat.ilks[ABI_i].dust) ==Int Ilk_dust - andBool #lookup(ACCT_ID_STORAGE, #Vat.Line) ==Int Line - andBool #lookup(ACCT_ID_STORAGE, #Vat.can[ABI_u][CALLER_ID]) ==Int Can_u - andBool #lookup(ACCT_ID_STORAGE, #Vat.can[ABI_v][CALLER_ID]) ==Int Can_v - andBool #lookup(ACCT_ID_STORAGE, #Vat.can[ABI_w][CALLER_ID]) ==Int Can_w - andBool #lookup(ACCT_ID_STORAGE, #Vat.debt) ==Int Debt - andBool #lookup(ACCT_ID_STORAGE, #Vat.gem[ABI_i][ABI_v]) ==Int Gem_iv - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_w]) ==Int Dai_w - andBool #lookup(ACCT_ID_STORAGE, #Vat.urns[ABI_i][ABI_u].ink) ==Int Urn_ink - andBool #lookup(ACCT_ID_STORAGE, #Vat.urns[ABI_i][ABI_u].art) ==Int Urn_art - andBool #lookup(ACCT_ID_STORAGE, #Vat.ilks[ABI_i].Art) ==Int Ilk_Art - andBool #lookup(ACCT_ID_STORAGE, #Vat.live) ==Int Live - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.ilks[ABI_i].rate) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.ilks[ABI_i].line) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.ilks[ABI_i].spot) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.ilks[ABI_i].dust) ==Int Junk_3 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.Line) ==Int Junk_4 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.can[ABI_u][CALLER_ID]) ==Int Junk_5 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.can[ABI_v][CALLER_ID]) ==Int Junk_6 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.can[ABI_w][CALLER_ID]) ==Int Junk_7 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.debt) ==Int Junk_8 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.gem[ABI_i][ABI_v]) ==Int Junk_9 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_w]) ==Int Junk_10 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.urns[ABI_i][ABI_u].ink) ==Int Junk_11 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.urns[ABI_i][ABI_u].art) ==Int Junk_12 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.ilks[ABI_i].Art) ==Int Junk_13 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.live) ==Int Junk_14 - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.ilks[ABI_i].line - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.ilks[ABI_i].spot - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.ilks[ABI_i].dust - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.Line - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.can[ABI_u][CALLER_ID] - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.can[ABI_v][CALLER_ID] - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.can[ABI_w][CALLER_ID] - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.debt - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.gem[ABI_i][ABI_v] - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.dai[ABI_w] - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.urns[ABI_i][ABI_u].ink - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.ilks[ABI_i].rate =/=Int #Vat.live - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.ilks[ABI_i].spot - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.ilks[ABI_i].dust - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.Line - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.can[ABI_u][CALLER_ID] - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.can[ABI_v][CALLER_ID] - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.can[ABI_w][CALLER_ID] - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.debt - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.gem[ABI_i][ABI_v] - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.dai[ABI_w] - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.urns[ABI_i][ABI_u].ink - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.ilks[ABI_i].line =/=Int #Vat.live - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.ilks[ABI_i].dust - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.Line - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.can[ABI_u][CALLER_ID] - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.can[ABI_v][CALLER_ID] - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.can[ABI_w][CALLER_ID] - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.debt - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.gem[ABI_i][ABI_v] - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.dai[ABI_w] - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.urns[ABI_i][ABI_u].ink - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.ilks[ABI_i].spot =/=Int #Vat.live - andBool #Vat.ilks[ABI_i].dust =/=Int #Vat.Line - andBool #Vat.ilks[ABI_i].dust =/=Int #Vat.can[ABI_u][CALLER_ID] - andBool #Vat.ilks[ABI_i].dust =/=Int #Vat.can[ABI_v][CALLER_ID] - andBool #Vat.ilks[ABI_i].dust =/=Int #Vat.can[ABI_w][CALLER_ID] - andBool #Vat.ilks[ABI_i].dust =/=Int #Vat.debt - andBool #Vat.ilks[ABI_i].dust =/=Int #Vat.gem[ABI_i][ABI_v] - andBool #Vat.ilks[ABI_i].dust =/=Int #Vat.dai[ABI_w] - andBool #Vat.ilks[ABI_i].dust =/=Int #Vat.urns[ABI_i][ABI_u].ink - andBool #Vat.ilks[ABI_i].dust =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.ilks[ABI_i].dust =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.ilks[ABI_i].dust =/=Int #Vat.live - andBool #Vat.Line =/=Int #Vat.can[ABI_u][CALLER_ID] - andBool #Vat.Line =/=Int #Vat.can[ABI_v][CALLER_ID] - andBool #Vat.Line =/=Int #Vat.can[ABI_w][CALLER_ID] - andBool #Vat.Line =/=Int #Vat.debt - andBool #Vat.Line =/=Int #Vat.gem[ABI_i][ABI_v] - andBool #Vat.Line =/=Int #Vat.dai[ABI_w] - andBool #Vat.Line =/=Int #Vat.urns[ABI_i][ABI_u].ink - andBool #Vat.Line =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.Line =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.Line =/=Int #Vat.live - andBool #Vat.can[ABI_u][CALLER_ID] =/=Int #Vat.can[ABI_v][CALLER_ID] - andBool #Vat.can[ABI_u][CALLER_ID] =/=Int #Vat.can[ABI_w][CALLER_ID] - andBool #Vat.can[ABI_u][CALLER_ID] =/=Int #Vat.debt - andBool #Vat.can[ABI_u][CALLER_ID] =/=Int #Vat.gem[ABI_i][ABI_v] - andBool #Vat.can[ABI_u][CALLER_ID] =/=Int #Vat.dai[ABI_w] - andBool #Vat.can[ABI_u][CALLER_ID] =/=Int #Vat.urns[ABI_i][ABI_u].ink - andBool #Vat.can[ABI_u][CALLER_ID] =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.can[ABI_u][CALLER_ID] =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.can[ABI_u][CALLER_ID] =/=Int #Vat.live - andBool #Vat.can[ABI_v][CALLER_ID] =/=Int #Vat.can[ABI_w][CALLER_ID] - andBool #Vat.can[ABI_v][CALLER_ID] =/=Int #Vat.debt - andBool #Vat.can[ABI_v][CALLER_ID] =/=Int #Vat.gem[ABI_i][ABI_v] - andBool #Vat.can[ABI_v][CALLER_ID] =/=Int #Vat.dai[ABI_w] - andBool #Vat.can[ABI_v][CALLER_ID] =/=Int #Vat.urns[ABI_i][ABI_u].ink - andBool #Vat.can[ABI_v][CALLER_ID] =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.can[ABI_v][CALLER_ID] =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.can[ABI_v][CALLER_ID] =/=Int #Vat.live - andBool #Vat.can[ABI_w][CALLER_ID] =/=Int #Vat.debt - andBool #Vat.can[ABI_w][CALLER_ID] =/=Int #Vat.gem[ABI_i][ABI_v] - andBool #Vat.can[ABI_w][CALLER_ID] =/=Int #Vat.dai[ABI_w] - andBool #Vat.can[ABI_w][CALLER_ID] =/=Int #Vat.urns[ABI_i][ABI_u].ink - andBool #Vat.can[ABI_w][CALLER_ID] =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.can[ABI_w][CALLER_ID] =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.can[ABI_w][CALLER_ID] =/=Int #Vat.live - andBool #Vat.debt =/=Int #Vat.gem[ABI_i][ABI_v] - andBool #Vat.debt =/=Int #Vat.dai[ABI_w] - andBool #Vat.debt =/=Int #Vat.urns[ABI_i][ABI_u].ink - andBool #Vat.debt =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.debt =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.debt =/=Int #Vat.live - andBool #Vat.gem[ABI_i][ABI_v] =/=Int #Vat.dai[ABI_w] - andBool #Vat.gem[ABI_i][ABI_v] =/=Int #Vat.urns[ABI_i][ABI_u].ink - andBool #Vat.gem[ABI_i][ABI_v] =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.gem[ABI_i][ABI_v] =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.gem[ABI_i][ABI_v] =/=Int #Vat.live - andBool #Vat.dai[ABI_w] =/=Int #Vat.urns[ABI_i][ABI_u].ink - andBool #Vat.dai[ABI_w] =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.dai[ABI_w] =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.dai[ABI_w] =/=Int #Vat.live - andBool #Vat.urns[ABI_i][ABI_u].ink =/=Int #Vat.urns[ABI_i][ABI_u].art - andBool #Vat.urns[ABI_i][ABI_u].ink =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.urns[ABI_i][ABI_u].ink =/=Int #Vat.live - andBool #Vat.urns[ABI_i][ABI_u].art =/=Int #Vat.ilks[ABI_i].Art - andBool #Vat.urns[ABI_i][ABI_u].art =/=Int #Vat.live - andBool #Vat.ilks[ABI_i].Art =/=Int #Vat.live - - // Vat_muluu - claim [Vat.muluu.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x *Int ABI_y : WS - _ - 13234 => 13277 - #gas(VGas) => #if ABI_y ==Int 0 - #then #gas ( ( VGas +Int -54 ) ) - #else #gas ( ( VGas +Int -106 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x *Int ABI_y))))))) - - - [trusted] - - -endmodule diff --git a/tests/specs/mcd/vat-move-diff-rough-spec.k b/tests/specs/mcd/vat-move-diff-rough-spec.k deleted file mode 100644 index 5c412124ab..0000000000 --- a/tests/specs/mcd/vat-move-diff-rough-spec.k +++ /dev/null @@ -1,328 +0,0 @@ -requires "verification.k" - - -module VAT-MOVE-DIFF-ROUGH-SPEC - imports VAT-MOVE-DIFF-ROUGH-ARITH-SPEC - - // Vat_move-diff - claim [Vat.move-diff.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("move", #address(ABI_src), #address(ABI_dst), #uint256(ABI_rad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.dai[ABI_src] <- Dai_src -Int ABI_rad ] [ #Vat.dai[ABI_dst] <- Dai_dst +Int ABI_rad ] - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeAddress(ABI_src) - andBool (#rangeAddress(ABI_dst) - andBool (#rangeUInt(256, ABI_rad) - andBool (#rangeUInt(256, Dai_dst) - andBool (#rangeUInt(256, Dai_src) - andBool (#rangeUInt(256, May) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((ABI_src =/=Int ABI_dst) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool ((((May ==Int 1 orBool ABI_src ==Int CALLER_ID))) - andBool (((VCallValue ==Int 0)) - andBool ((#rangeUInt(256, Dai_src -Int ABI_rad)) - andBool ((#rangeUInt(256, Dai_dst +Int ABI_rad))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_src]) ==Int Dai_src - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_dst]) ==Int Dai_dst - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.can[ABI_src][CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_src]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_dst]) ==Int Junk_2 - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.dai[ABI_src] - andBool #Vat.can[ABI_src][CALLER_ID] =/=Int #Vat.dai[ABI_dst] - andBool #Vat.dai[ABI_src] =/=Int #Vat.dai[ABI_dst] - [depends(VAT-MOVE-DIFF-ROUGH-ARITH-SPEC.Vat.adduu.pass,VAT-MOVE-DIFF-ROUGH-ARITH-SPEC.Vat.subuu.pass)] - -endmodule - - -module VAT-MOVE-DIFF-ROUGH-ARITH-SPEC - imports VERIFICATION - - // Vat_adduu - claim [Vat.adduu.pass]: - #execute ~> CONTINUATION => JUMP JMPTO ~> #pc [ JUMP ] ~> #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => ABI_x +Int ABI_y : WS - _ - 13086 => 13111 - #gas(VGas) => #gas ( ( VGas -Int 62 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x +Int ABI_y))))))) - [trusted] - - // Vat_subuu - claim [Vat.subuu.pass]: - #execute ~> CONTINUATION => JUMP JMPTO ~> #pc [ JUMP ] ~> #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => ABI_x -Int ABI_y : WS - _ - 13060 => 13085 - #gas(VGas) => #gas ( ( VGas -Int 62 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x -Int ABI_y))))))) - [trusted] - -endmodule - diff --git a/tests/specs/mcd/vat-mului-pass-spec.k b/tests/specs/mcd/vat-mului-pass-spec.k deleted file mode 100644 index e88e4eaf46..0000000000 --- a/tests/specs/mcd/vat-mului-pass-spec.k +++ /dev/null @@ -1,109 +0,0 @@ -requires "verification.k" - -module VAT-MULUI-PASS-SPEC - imports VERIFICATION - - // Vat_mului - claim [Vat.mului.pass]: - #execute ~> CONTINUATION => JUMP JMPTO ~> #pc [ JUMP ] ~> #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - chop(ABI_y) : ABI_x : JMPTO : WS => chop(ABI_x *Int ABI_y) : WS - _ - 13175 => 13233 - #gas(VGas) => #if ABI_y ==Int 0 - #then #gas ( ( VGas +Int -104 ) ) - #else #gas ( ( VGas +Int -140 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeSInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeSInt(256, ABI_x)) - andBool ((#rangeSInt(256, ABI_x *Int ABI_y)))))))) - - - -endmodule diff --git a/tests/specs/mcd/vat-muluu-pass-spec.k b/tests/specs/mcd/vat-muluu-pass-spec.k deleted file mode 100644 index 8807d04c84..0000000000 --- a/tests/specs/mcd/vat-muluu-pass-spec.k +++ /dev/null @@ -1,106 +0,0 @@ - -requires "verification.k" - -module VAT-MULUU-PASS-SPEC - imports VERIFICATION - - // Vat_muluu - claim [Vat.muluu.pass]: - #execute ~> CONTINUATION => JUMP JMPTO ~> #pc [ JUMP ] ~> #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => ABI_x *Int ABI_y : WS - _ - 13234 => 13277 - #gas(VGas) => #if ABI_y ==Int 0 - #then #gas ( ( VGas +Int -62 ) ) - #else #gas ( ( VGas +Int -114 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x *Int ABI_y))))))) - -endmodule \ No newline at end of file diff --git a/tests/specs/mcd/vat-slip-pass-rough-spec.k b/tests/specs/mcd/vat-slip-pass-rough-spec.k deleted file mode 100644 index 04de646c34..0000000000 --- a/tests/specs/mcd/vat-slip-pass-rough-spec.k +++ /dev/null @@ -1,219 +0,0 @@ -requires "verification.k" - -module VAT-SLIP-PASS-ROUGH-SPEC - imports VERIFICATION - - // Vat_slip - claim [Vat.slip.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("slip", #bytes32(ABI_ilk), #address(ABI_usr), #int256(ABI_wad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.gem[ABI_ilk][ABI_usr] <- Gem +Int ABI_wad ] - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeBytes(32, ABI_ilk) - andBool (#rangeAddress(ABI_usr) - andBool (#rangeSInt(256, ABI_wad) - andBool (#rangeUInt(256, May) - andBool (#rangeUInt(256, Gem) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (((May ==Int 1)) - andBool (((VCallValue ==Int 0)) - andBool ((#rangeUInt(256, Gem +Int ABI_wad))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.wards[CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Vat.gem[ABI_ilk][ABI_usr]) ==Int Gem - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.wards[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.gem[ABI_ilk][ABI_usr]) ==Int Junk_1 - andBool #Vat.wards[CALLER_ID] =/=Int #Vat.gem[ABI_ilk][ABI_usr] - - [depends(Vat.addui.pass)] - - // Vat_addui - claim [Vat.addui.pass]: - #execute ~> CONTINUATION => JUMP JMPTO ~> #pc [ JUMP ] ~> #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - chop(ABI_y) : ABI_x : JMPTO : WS => ABI_x +Int ABI_y : WS - _ - 13112 => 13174 - #gas(VGas) => #if ( ABI_y - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - _Nonce_Vat => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeSInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1015) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x +Int ABI_y))))))) - [trusted] - -endmodule diff --git a/tests/specs/mcd/vat-subui-fail-rough-spec.k b/tests/specs/mcd/vat-subui-fail-rough-spec.k deleted file mode 100644 index 8dd59bf7ba..0000000000 --- a/tests/specs/mcd/vat-subui-fail-rough-spec.k +++ /dev/null @@ -1,109 +0,0 @@ -requires "verification.k" - -module VAT-SUBUI-FAIL-ROUGH-SPEC - imports VERIFICATION - - // Vat_subui - claim [Vat.subui.fail.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => ?FAILURE:EndStatusCode - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - chop(ABI_y) : ABI_x : JMPTO : WS => ?_ - _ - 13304 => ?_ - #gas(VGas) => ?_ - VMemoryUsed - _ => ?_ - _ - VCallDepth => ?_ - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ?_ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeSInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1015) - andBool (#rangeUInt(256, VMemoryUsed))))) - andBool #rangeNonce(Nonce_Vat) - - - andBool notBool ( - ((#rangeUInt(256, ABI_x:Int -Int ABI_y:Int))) - ) - ensures - ?FAILURE =/=K EVMC_SUCCESS - -endmodule diff --git a/tests/specs/mcd/vat-subui-pass-rough-spec.k b/tests/specs/mcd/vat-subui-pass-rough-spec.k deleted file mode 100644 index 476002f3e9..0000000000 --- a/tests/specs/mcd/vat-subui-pass-rough-spec.k +++ /dev/null @@ -1,105 +0,0 @@ -requires "verification.k" - -module VAT-SUBUI-PASS-ROUGH-SPEC - imports VERIFICATION - - // Vat_subui - claim [Vat.subui.pass.rough]: - #execute ~> CONTINUATION => JUMP JMPTO ~> #pc [ JUMP ] ~> #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - chop(ABI_y) : ABI_x : JMPTO : WS => ABI_x -Int ABI_y : WS - _ - 13304 => 13366 - #gas(VGas) => ?_ - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeSInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1015) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x -Int ABI_y))))))) - - - -endmodule diff --git a/tests/specs/mcd/vat-subui-pass-spec.k b/tests/specs/mcd/vat-subui-pass-spec.k deleted file mode 100644 index 63bd09ff0f..0000000000 --- a/tests/specs/mcd/vat-subui-pass-spec.k +++ /dev/null @@ -1,111 +0,0 @@ -requires "verification.k" - -module VAT-SUBUI-PASS-SPEC - imports VERIFICATION - - // Vat_subui - claim [Vat.subui.pass]: - #execute ~> CONTINUATION => JUMP JMPTO ~> #pc [ JUMP ] ~> #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - chop(ABI_y) : ABI_x : JMPTO : WS => ABI_x -Int ABI_y : WS - _ - 13304 => 13366 - #gas(VGas) => #if ( ABI_y =/=Int 0 andBool 0 <=Int ABI_y ) - #then #gas ( ( VGas +Int -136 ) ) - #else #if 0 <=Int ABI_y - #then #gas ( ( VGas +Int -122 ) ) - #else #gas ( ( VGas +Int -136 ) ) - #fi - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeSInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1015) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x -Int ABI_y))))))) - - - -endmodule diff --git a/tests/specs/mcd/verification.k b/tests/specs/mcd/verification.k deleted file mode 100644 index 3f5f7b22f2..0000000000 --- a/tests/specs/mcd/verification.k +++ /dev/null @@ -1,442 +0,0 @@ -requires "lemmas/lemmas.k" -requires "bin_runtime.k" -requires "storage.k" -requires "word-pack.k" - -module VERIFICATION - imports DSS-BIN-RUNTIME - imports DSS-STORAGE - imports LEMMAS-MCD - imports LEMMAS-MCD-SYNTAX -endmodule - -module LEMMAS-MCD-SYNTAX - imports EVM - - // ######################## - // Constants - // ######################## - - syntax Int ::= "#Wad" [macro] - | "#Ray" [macro] - | "#Rad" [macro] - // ----------------------------- - rule #Wad => 1000000000000000000 - rule #Ray => 1000000000000000000000000000 - rule #Rad => 1000000000000000000000000000000000000000000000 - - // ######################## - // Word Reasoning - // ######################## - - syntax Bool ::= #notPrecompileAddress ( Int ) [function] - // -------------------------------------------------------- - rule #notPrecompileAddress ( X ) => 0 ==Int X orBool (10 <=Int X andBool #rangeAddress(X)) - - syntax Int ::= #string2Word ( String ) [function] - // ------------------------------------------------- - rule #string2Word(S) => #asWord(#padRightToWidth(32, String2Bytes(S))) - - // ######################## - // Arithmetic - // ######################## - - syntax Int ::= #rmul ( Int , Int ) [function, smtlib(smt_rmul)] - // --------------------------------------------------------------- - rule #rmul(X, Y) => (X *Int Y) /Int #Ray - -endmodule - -module LEMMAS-MCD [symbolic] - imports LEMMAS - imports LEMMAS-MCD-SYNTAX - imports WORD-PACK - - // ######################## - // Arithmetic - // ######################## - - rule chop(Y) => Y +Int pow256 requires #range( 0 -Int maxUInt256 <= Y < 0 ) [simplification] - - rule sgn(chop(X)) ==Int 1 => 0 <=Int X requires #rangeSInt(256, X) [simplification] - rule sgn(chop(X)) ==Int -1 => X X ==Int 0 requires #rangeSInt(256, X) [simplification] - - rule bool2Word( X:Bool ) |Int bool2Word( Y:Bool ) => bool2Word(X orBool Y) [simplification] - rule bool2Word( X:Bool ) ==Int 0 => notBool X [simplification] - - // ### vat-subui-fail-rough - // - // Via Z3 4.8.7 - // (declare-const pow256 Int) - // (assert (= pow256 115792089237316195423570985008687907853269984665640564039457584007913129639936)) - // - // ; 2^255 - // (declare-const pow255 Int) - // (assert (= pow255 57896044618658097711785492504343953926634992332820282019728792003956564819968)) - // - // ; chop - // (define-fun chop ((x Int)) Int (mod x pow256)) - // - // ; uint256 - // (define-fun uint256 ((x Int)) Bool (and (>= x 0) (< x pow256))) - // - // ; sint256 - // (define-fun sint256 ((x Int)) Bool (and (>= x (- pow255)) (< x pow255))) - // - // ;;;; proof - // - // (declare-const x Int) - // (declare-const y Int) - // - // (assert (uint256 x)) - // (assert (sint256 y)) - // (assert (<= y 0)) - // (assert (not (uint256 (- x y)))) - // - // (assert (not (= (chop (- x y)) (- x (+ y pow256))))) - // (check-sat) - rule chop ( X -Int Y ) => X -Int (Y +Int pow256) - requires #rangeUInt(256, X) - andBool #rangeSInt(256, Y) - andBool Y <=Int 0 - andBool notBool #rangeUInt(256, X -Int Y) [simplification] - - rule { chop(X) #Equals chop(Y) } => { X #Equals Y } - requires #rangeSInt(256, X) andBool #rangeSInt(256, Y) - [simplification] - - // ######################## - // Buffer Reasoning - // ######################## - - rule { #buf(32, BY:Int):Bytes #Equals #buf(32, BZ:Int):Bytes } => { BY #Equals BZ } - requires #rangeUInt(256, BY) andBool #rangeUInt(256, BZ) [simplification] - - rule { BA1:Bytes +Bytes (BA2:Bytes +Bytes BA3:Bytes) #Equals BA4:Bytes +Bytes BA3 } => { (BA1 +Bytes BA2) #Equals BA4 } [simplification] - - rule { BA1:Bytes #Equals BA2:Bytes +Bytes BA3:Bytes } => - { true #Equals BA1 ==K BA2 andBool .Bytes ==K BA3 } - requires (lengthBytes(BA1) ==Int lengthBytes(BA2)) - [simplification] - - // ######################## - // Map - // ######################## - - rule #range(M:Bytes [ K <- V ] , START, WIDTH) => #range(M [ K := V : .Bytes ], START, WIDTH) requires K +Int 1 ==Int START +Int WIDTH andBool START <=Int K andBool 0 #range(M [ K := V : VS' ], START, WIDTH) requires K' +Int lengthBytes(VS') ==Int START +Int WIDTH andBool START <=Int K andBool 0 { V1 #Equals V2 } - [simplification] - - // ######################## - // Buffer Reasoning - // ######################## - - rule #range( (W0 : WS) , 0 , WIDTH ) => W0 : ( #range(WS, 0, WIDTH -Int 1 )) requires 0 #range( WS, START -Int 1, WIDTH ) requires 0 false requires #rangeSmall(I) [simplification] - rule keccak(_) +Int I1 ==Int I2 => false - requires #rangeSmall(I1) andBool #rangeSmall(I2) [simplification] - - // ######################## - // Word Reasoning - // ######################## - - rule #sizeWordStack(WS, N) => #sizeWordStack(WS, 0) +Int N requires N =/=Int 0 [simplification] - - // ### vat-addui-fail-rough - // - // Proof: - // case sgn(X) ==Int 1 - // X s X bool2Word(false) // #rangeUInt(256, X) - // case sgn(X) ==Int -1 - // X s bool2Word(true) // sgn(X) ==Int -1 andBool sgn(0) ==Int 1 - // - // Via Z3 4.8.7: - // ; 2^256 - // (declare-const pow256 Int) - // (assert (= pow256 115792089237316195423570985008687907853269984665640564039457584007913129639936)) - // - // ; 2^255 - // (declare-const pow255 Int) - // (assert (= pow255 57896044618658097711785492504343953926634992332820282019728792003956564819968)) - // - // ; sgn - // (declare-fun sgn (Int) Int) - // (assert (forall ((x Int)) (=> (and (>= x 0) (< x pow255)) (= (sgn x) 1)))) - // (assert (forall ((x Int)) (=> (and (>= x pow255) (< x pow256)) (= (sgn x) -1)))) - // - // ; s (and (= (sgn x) 1) (= (sgn y) 1)) (= (slt x y) (< x y))))) - // (assert (forall ((x Int) (y Int)) (=> (and (= (sgn x) 1) (= (sgn y) -1)) (= (slt x y) false)))) - // (assert (forall ((x Int) (y Int)) (=> (and (= (sgn x) -1) (= (sgn y) 1)) (= (slt x y) true)))) - // (assert (forall ((x Int) (y Int)) (=> (and (= (sgn x) -1) (= (sgn y) -1)) (= (slt x y) (> x y))))) - // - // ;;;; proof - // - // ; uint256 - // (declare-const x Int) - // (assert (and (>= x 0) (< x pow256))) - // - // (assert (not - // (= (slt x 0) (= (sgn x) -1)) - // )) - // (check-sat) - rule X s bool2Word(sgn(X) ==Int -1) requires #rangeUInt(256, X) [simplification] - - rule X -Word Y <=Int X => #rangeUInt(256, X -Int Y) requires #rangeUInt(256, X) andBool #rangeUInt(256, Y) [simplification] - - rule 0 <=Int X +Int Y => true requires 0 <=Int X andBool 0 <=Int Y [simplification] - - // ;(set-option :smt.mbqi true) - // - // ; 2^256 - // (declare-const pow256 Int) - // (assert (= pow256 115792089237316195423570985008687907853269984665640564039457584007913129639936)) - // - // ; 2^255 - // (declare-const pow255 Int) - // (assert (= pow255 57896044618658097711785492504343953926634992332820282019728792003956564819968)) - // - // ; sgn - // (declare-fun sgn (Int) Int) - // (assert (forall ((x Int)) (=> (and (>= x 0) (< x pow255)) (= (sgn x) 1)))) - // (assert (forall ((x Int)) (=> (and (>= x pow255) (< x pow256)) (= (sgn x) -1)))) - // - // ; s (and (= (sgn x) 1) (= (sgn y) 1)) (= (slt x y) (< x y))))) - // (assert (forall ((x Int) (y Int)) (=> (and (= (sgn x) 1) (= (sgn y) -1)) (= (slt x y) false)))) - // (assert (forall ((x Int) (y Int)) (=> (and (= (sgn x) -1) (= (sgn y) 1)) (= (slt x y) true)))) - // (assert (forall ((x Int) (y Int)) (=> (and (= (sgn x) -1) (= (sgn y) -1)) (= (slt x y) (> x y))))) - // - // ; chop - // (define-fun chop ((x Int)) Int (mod x pow256)) - // ;(simplify (chop -1)) - // - // ; /Word - // (define-fun zdiv ((x Int) (y Int)) Int (ite (= y 0) 0 (div x y))) - // - // ; /sWord - // (declare-fun sdiv (Int Int) Int) - // (assert (forall ((x Int) (y Int)) (=> (> (* (sgn x) (sgn y)) 0) (= (sdiv x y) (zdiv (abs x) (abs y)) )))) - // (assert (forall ((x Int) (y Int)) (=> (< (* (sgn x) (sgn y)) 0) (= (sdiv x y) (- (zdiv (abs x) (abs y))))))) - // - // ; uint256 - // (define-fun uint256 ((x Int)) Bool (and (>= x 0) (< x pow256))) - // - // ; sint256 - // (define-fun sint256 ((x Int)) Bool (and (>= x (- pow255)) (< x pow255))) - // - // ;;;; - // - // (declare-const x Int) - // (declare-const y Int) - - // Via Z3 4.7.1: - // (push) - // (assert (not (=> (uint256 x) (= (slt 0 x) (and (= (sgn x) 1) (not (= x 0))) ) ) )) - // (check-sat) - // (pop) - rule 0 s bool2Word(sgn(X) ==Int 1 andBool X =/=Int 0) requires #rangeUInt(256, X) [simplification] - - // Via Z3 4.7.1: - // (push) - // (assert (not (=> true (= (chop (- x (chop y))) (chop (- x y)) ) ) )) - // (check-sat) - // (pop) - rule X -Word chop(Y) => chop(X -Int Y) [simplification] - - rule ADDR in (SetItem(I) REST) => ADDR in REST requires #notPrecompileAddress(ADDR) andBool notBool #notPrecompileAddress(I) [simplification] - - // This proof ends up with side-conditions which look like this: - // Tic ==K 0 andBool 0 ==K maxUInt48 &Int (#lookup(STORAGE, ADDR) /Int pow160) andBool Tic ==K maxUInt48 &Int (#lookup(STORAGE, ADDR) /Int pow160) - // So we need this rule to do the structural simplification because the Java backend will not use this string of equalities to do the simplification directly. - rule #WordPackAddrUInt48UInt48(ADDR, maxUInt48 &Int (ADDR_UINT48_UINT48 /Int pow160), UINT48_2) => #WordPackAddrUInt48UInt48(ADDR, 0, UINT48_2) requires maxUInt48 &Int (ADDR_UINT48_UINT48 /Int pow160) ==Int 0 [simplification] - - // ######################## - // Map - // ######################## - - rule M:Bytes [ K <- V ] [ K' <- V' ] => M [ K' <- V' ] [ K <- V ] requires K' M [ K' <- V' ] [ K := BUF ] requires K' M requires #lookup(M, K) ==Int V [simplification] - - rule M [ K := BUF:Bytes ] [ K' := BUF':Bytes ] => M [ K := (#range(BUF , 0 , K' -Int K )) ] [ K' := BUF' ] - requires K M [ K1 <- V1' ] [ K2 <- V2 ] requires K1 =/=Int K2 [simplification] - - rule M [ K1 := (BUF11 +Bytes BUF12) ] [ K2 := BUF2 ] => M [ K1 +Int lengthBytes(BUF11) := BUF12 ] [ K2 := BUF2 ] - requires K2 <=Int K1 - andBool K1 +Int lengthBytes(BUF11) <=Int K2 +Int lengthBytes(BUF2) - [simplification] - - // ######################## - // Arithmetic - // ######################## - - rule X <=Int maxUInt48 &Int (X +Int Y) => false - requires #rangeUInt(48, X) - andBool #rangeUInt(48, Y) - andBool notBool #rangeUInt(48, X +Int Y) [simplification] - - rule chop(N +Int M) true requires #rangeUInt(256, N) - andBool #rangeUInt(256, M) - andBool notBool #rangeUInt(256, N +Int M) - [simplification] - - // This lemma is considered "safe enough" because `keccak` is a hash function over a large range and is very unlikely to overflow. - // Note that this case comes from a solidity struct being accessed (hence the integer offsets), so it's an assumption built into the Solidity compiler anyway. - rule chop(keccak(BA) +Int N) => keccak(BA) +Int N requires 0 <=Int N andBool N chop(X *Int Y) [simplification] - - // Proof #rangeUInt(256, X) andBool #rangeSInt(256, Y) andBool #rangeSInt(256, X *Int Y) andBool Y =/=Int 0 - // chop(X *Int Y) /sWord chop(Y) - // => #sgnInterp(sgn(chop(X *Int Y)) *Int sgn(chop(Y)), abs(chop(X *Int Y)) /Word abs(chop(Y))) - // Focus: sgn(chop(X *Int Y)) *Int sgn(chop(Y)) - // case 0 <=Int Y - // sgn(chop(X *Int Y)) *Int sgn(chop(Y)) - // => sgn(chop(X *Int Y)) *Int sgn(Y) // chop(Y) ==Int Y - // => sgn(X *Int Y) *Int sgn(Y) // 0 <=Int X andBool 0 <=Int Y - // => 1 *Int 1 // 0 <=Int X *Int Y andBool 0 <=Int Y - // => 1 - // case Y sgn(X *Int Y +Int pow256) *Int sgn(Y +Int pow256) // chop(Y) ==Int Y +Int pow256 - // => -1 *Int -1 // X *Int Y 1 - // Focus: abs(chop(X *Int Y)) /Word abs(chop(Y)) - // case 0 <=Int Y - // abs(chop(X *Int Y)) /Word abs(chop(Y)) - // => abs(chop(X *Int Y)) /Int abs(chop(Y)) - // => abs(X *Int Y) /Int abs(Y) // 0 <=Int X andBool 0 <=Int Y andBool #rangeSigne andBool chop(Y) ==Int Y - // => X *Int Y /Int Y // #rangeSInt(256, X *Int Y) andBool 0 <=Int X *Int Y andBool #rangeSInt(256, Y) andBool 0 <=Int Y - // => X - // case Y abs(X *Int Y +Int pow256) /Int abs(Y +Int pow256) // #rangeSInt(256, X *Int Y) andBool chop(Y) ==Int Y +Int pow256 - // => (0 -Word (X *Int Y +Int pow256)) /Int (0 -Word (Y +Int pow256)) // #rangeSInt(256, X *Int Y) andBool X *Int Y (pow256 -Int (X *Int Y +Int pow256)) /Int (pow256 -Int (Y +Int pow256)) // 0 (X *Int Y) /Int Y - // => X - // - // Via Z3 4.7.1: - // ; 2^4 and 2^3 instead of 2^256 and 2^255 for small model proof - // (declare-const pow256 Int) - // (assert (= pow256 16)) - // (declare-const pow255 Int) - // (assert (= pow255 8)) - // - // ; sgn - // (declare-fun sgn (Int) Int) - // (assert (forall ((x Int)) (=> (and (>= x 0) (< x pow255)) (= (sgn x) 1)))) - // (assert (forall ((x Int)) (=> (and (>= x pow255) (< x pow256)) (= (sgn x) -1)))) - // - // ; s (and (= (sgn x) 1) (= (sgn y) 1)) (= (slt x y) (< x y))))) - // (assert (forall ((x Int) (y Int)) (=> (and (= (sgn x) 1) (= (sgn y) -1)) (= (slt x y) false)))) - // (assert (forall ((x Int) (y Int)) (=> (and (= (sgn x) -1) (= (sgn y) 1)) (= (slt x y) true)))) - // (assert (forall ((x Int) (y Int)) (=> (and (= (sgn x) -1) (= (sgn y) -1)) (= (slt x y) (> x y))))) - // - // ; chop - // (define-fun chop ((x Int)) Int (mod x pow256)) - // - // ; /Word - // ;(define-fun zdiv ((x Int) (y Int)) Int (ite (= y 0) 0 (div x y))) - // (define-fun zdiv ((x Int) (y Int)) Int (div x y)) ; y is non-zero in the query below - // - // ; /sWord - // (declare-fun sdiv (Int Int) Int) - // (assert (forall ((x Int) (y Int)) (=> (> (* (sgn x) (sgn y)) 0) (= (sdiv x y) (zdiv (abs x) (abs y)) )))) - // (assert (forall ((x Int) (y Int)) (=> (< (* (sgn x) (sgn y)) 0) (= (sdiv x y) (- (zdiv (abs x) (abs y))))))) - // - // ; uint256 - // (define-fun uint256 ((x Int)) Bool (and (>= x 0) (< x pow256))) - // - // ; sint256 - // (define-fun sint256 ((x Int)) Bool (and (>= x (- pow255)) (< x pow255))) - // - // ;;;; proof - // - // (declare-const x Int) - // (declare-const y Int) - // - // (assert (uint256 x)) - // (assert (sint256 y)) - // (assert (sint256 (* x y))) - // (assert (not (= y 0))) - // - // (assert (not - // (= (sdiv (chop (* x y)) (chop y)) x) - // )) - // (check-sat) - rule chop(X *Int Y) /sWord chop(Y) => X requires #rangeUInt(256, X) andBool #rangeSInt(256, Y) andBool #rangeSInt(256, X *Int Y) andBool Y =/=Int 0 [simplification] - - rule chop(X +Int chop(Y)) => chop(X +Int Y) [simplification] - - rule maxUInt48 &Int (X +Int Y) true - requires #rangeUInt(48, X) - andBool #rangeUInt(48, Y) - andBool notBool (X +Int Y true requires 0 <=Int X andBool 0 <=Int Y [simplification] - rule 0 <=Int X &Int Y => true requires 0 <=Int X andBool 0 <=Int Y [simplification] - - rule X |Int Y true requires X true requires X (maxUInt160 &Int X) |Int (maxUInt160 &Int Y) [simplification] - - rule chop(X *Int Y) => X *Int Y requires 0 <=Int X andBool 0 <=Int Y andBool X *Int Y false requires 0 <=Int Y [simplification] - rule X +Int Y false requires 0 <=Int Y [simplification] - - rule ACCTID ==K ACCTID' => ACCTID ==Int ACCTID' [simplification] - rule ACCTID =/=K ACCTID' => ACCTID =/=Int ACCTID' [simplification] - - rule ((K |-> _) REST) [ K' <- undef ] => REST requires K ==K K' [simplification] - rule ((K |-> V) REST) [ K' <- undef ] => (K |-> V) (REST [ K' <- undef ]) requires K =/=K K' [simplification] - - rule chop( X -Int chop(Y)) => chop( X -Int Y) [simplification] - rule chop((X -Int chop(Y)) *Int Z) => chop((X -Int Y) *Int Z) [simplification] - - rule chop(X +Int pow256) => chop(X) [simplification] - rule chop(chop(X) *Int Y) => chop(X *Int Y) [simplification] - - rule (I1 +Int I2) -Int I1 => I2 [simplification] - - rule ((I1 -Int I2) -Int I3) +Int I2 => I1 -Int I3 [simplification] - - rule M:Map [ K1 <- _ ] [ K2 <- V2 ] [ K3 <- V3 ] [ K1 <- V4 ] => M [ K1 <- V4 ] [ K2 <- V2 ] [ K3 <- V3 ] requires K1 =/=Int K2 andBool K1 =/=Int K3 [simplification] - - rule chop(X *Int (Y +Int pow256)) => chop(X *Int Y) [simplification] - - // ######################## - // Boolean Logic - // ######################## - - rule X:Int ==Int A:Int orBool X ==Int B:Int orBool X ==Int C:Int orBool X ==Int D:Int => X ==Int D - requires X =/=Int A andBool X =/=Int B andBool X =/=Int C - [simplification] - -endmodule diff --git a/tests/specs/mcd/vow-cage-deficit-pass-rough-spec.k b/tests/specs/mcd/vow-cage-deficit-pass-rough-spec.k deleted file mode 100644 index 78de452579..0000000000 --- a/tests/specs/mcd/vow-cage-deficit-pass-rough-spec.k +++ /dev/null @@ -1,964 +0,0 @@ -requires "verification.k" - -module VOW-CAGE-DEFICIT-PASS-ROUGH-SPEC - imports VERIFICATION - - // Vow_cage-deficit - claim [Vow.cage-deficit.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vow_bin_runtime - #computeValidJumpDests(Vow_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("cage", .TypedArgs) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vow_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vow.live <- 0 ] [ #Vow.Sin <- 0 ] [ #Vow.Ash <- 0 ] - ACCT_ID_ORIG_STORAGE - Nonce_Vow - - - Vat - Vat_balance - Vat_bin_runtime - Vat_STORAGE => Vat_STORAGE [ #Vat.dai[Flapper] <- 0 ] [ #Vat.dai[ACCT_ID] <- 0 ] [ #Vat.sin[ACCT_ID] <- Sin_v -Int (Dai_v +Int Dai_f) ] [ #Vat.vice <- Vice -Int (Dai_v +Int Dai_f) ] [ #Vat.debt <- Debt -Int (Dai_v +Int Dai_f) ] - Vat_ORIG_STORAGE - Nonce_Vat - - - Flapper - Flapper_balance - Flapper_bin_runtime - Flapper_STORAGE => Flapper_STORAGE [ #Flapper.live <- 0 ] - Flapper_ORIG_STORAGE - Nonce_Flapper - - - Flopper - Flopper_balance - Flopper_bin_runtime - Flopper_STORAGE => Flopper_STORAGE [ #Flopper.live <- 0 ] [ #Flopper.vow <- ACCT_ID ] - Flopper_ORIG_STORAGE - Nonce_Flopper - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vow) - andBool #rangeNonce(Nonce_Vat) - andBool #rangeNonce(Nonce_Flapper) - andBool #rangeNonce(Nonce_Flopper) - - andBool (#rangeAddress(Vat) - andBool (#rangeAddress(Flapper) - andBool (#rangeAddress(Flopper) - andBool (#rangeAddress(FlapVat) - andBool (#rangeUInt(256, MayFlap) - andBool (#rangeUInt(256, MayFlop) - andBool (#rangeUInt(256, Dai_v) - andBool (#rangeUInt(256, Sin_v) - andBool (#rangeUInt(256, Dai_f) - andBool (#rangeUInt(256, Debt) - andBool (#rangeUInt(256, Vice) - andBool (#rangeUInt(256, Live) - andBool (#rangeUInt(256, Sin) - andBool (#rangeUInt(256, Ash) - andBool (#rangeUInt(256, FlapLive) - andBool (#rangeUInt(256, FlopLive) - andBool (#rangeAddress(FlopVow) - andBool (#rangeUInt(256, Vat_balance) - andBool (#rangeUInt(256, Flapper_balance) - andBool (#rangeUInt(256, Flopper_balance) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Vat)) - andBool ((#notPrecompileAddress(Flapper)) - andBool ((#notPrecompileAddress(Flopper)) - andBool ((#notPrecompileAddress(FlapVat)) - andBool ((#notPrecompileAddress(FlopVow)) - andBool ((ACCT_ID =/=Int Vat) - andBool ((ACCT_ID =/=Int Flapper) - andBool ((ACCT_ID =/=Int Flopper) - andBool ((Dai_v +Int Dai_f #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vow_bin_runtime - #computeValidJumpDests(Vow_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : #if ABI_x >Int ABI_y #then ABI_y #else ABI_x #fi : WS - _ - 9829 => 9854 - #gas(VGas) => #if ABI_x <=Int ABI_y - #then #gas ( ( VGas +Int -49 ) ) - #else #gas ( ( VGas +Int -59 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vow_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Vow - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vow) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed))))) - - - [trusted] - - - // Vat_dai - claim [Vat.dai.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, Rad) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("dai", #address(ABI_usr)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( VGas +Int -1236 ) ) - 0 => ?_ - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeAddress(ABI_usr) - andBool (#rangeUInt(256, Rad) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool ((VCallValue ==Int 0)))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_usr]) ==Int Rad - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_usr]) ==Int Junk_0 - [trusted] - - - // Vat_sin - claim [Vat.sin.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, Rad) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("sin", #address(ABI_usr)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( VGas +Int -1235 ) ) - 0 => ?_ - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeAddress(ABI_usr) - andBool (#rangeUInt(256, Rad) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool ((VCallValue ==Int 0)))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.sin[ABI_usr]) ==Int Rad - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.sin[ABI_usr]) ==Int Junk_0 - [trusted] - - - // Vat_heal - claim [Vat.heal.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("heal", #uint256(ABI_rad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( ( ( VGas -Int Csstore( ISTANBUL , ( Sin -Int ABI_rad ) , Sin , Junk_0 ) ) -Int Csstore( ISTANBUL , ( Dai -Int ABI_rad ) , Dai , Junk_1 ) ) -Int Csstore( ISTANBUL , ( Vice -Int ABI_rad ) , Vice , Junk_2 ) ) -Int Csstore( ISTANBUL , ( Debt -Int ABI_rad ) , Debt , Junk_3 ) ) +Int -8616 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.sin[CALLER_ID] <- Sin -Int ABI_rad ] [ #Vat.dai[CALLER_ID] <- Dai -Int ABI_rad ] [ #Vat.vice <- Vice -Int ABI_rad ] [ #Vat.debt <- Debt -Int ABI_rad ] - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_rad) - andBool (#rangeUInt(256, Dai) - andBool (#rangeUInt(256, Sin) - andBool (#rangeUInt(256, Debt) - andBool (#rangeUInt(256, Vice) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (((VCallValue ==Int 0)) - andBool ((#rangeUInt(256, Dai -Int ABI_rad)) - andBool ((#rangeUInt(256, Sin -Int ABI_rad)) - andBool ((#rangeUInt(256, Debt -Int ABI_rad)) - andBool ((#rangeUInt(256, Vice -Int ABI_rad))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.sin[CALLER_ID]) ==Int Sin - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[CALLER_ID]) ==Int Dai - andBool #lookup(ACCT_ID_STORAGE, #Vat.vice) ==Int Vice - andBool #lookup(ACCT_ID_STORAGE, #Vat.debt) ==Int Debt - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.sin[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[CALLER_ID]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.vice) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.debt) ==Int Junk_3 - andBool #Vat.sin[CALLER_ID] =/=Int #Vat.dai[CALLER_ID] - andBool #Vat.sin[CALLER_ID] =/=Int #Vat.vice - andBool #Vat.sin[CALLER_ID] =/=Int #Vat.debt - andBool #Vat.dai[CALLER_ID] =/=Int #Vat.vice - andBool #Vat.dai[CALLER_ID] =/=Int #Vat.debt - andBool #Vat.vice =/=Int #Vat.debt - [trusted] - - - // Flapper_cage - claim [Flapper.cage.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flapper_bin_runtime - #computeValidJumpDests(Flapper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("cage", #uint256(ABI_rad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( ( VGas -Int Csstore( ISTANBUL , 0 , Live , Junk_2 ) ) -Int Csstore( ISTANBUL , ( Dai_a -Int ABI_rad ) , Dai_a , Junk_5 ) ) -Int Csstore( ISTANBUL , ( Dai_u +Int ABI_rad ) , Dai_u , Junk_6 ) ) +Int -15964 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flapper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flapper.live <- 0 ] - ACCT_ID_ORIG_STORAGE - Nonce_Flapper - - - Vat - Vat_balance - Vat_bin_runtime - Vat_STORAGE => Vat_STORAGE [ #Vat.dai[ACCT_ID] <- Dai_a -Int ABI_rad ] [ #Vat.dai[CALLER_ID] <- Dai_u +Int ABI_rad ] - Vat_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Flapper) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_rad) - andBool (#rangeAddress(Vat) - andBool (#rangeUInt(256, Ward) - andBool (#rangeUInt(256, Live) - andBool (#rangeUInt(256, Dai_a) - andBool (#rangeUInt(256, Dai_u) - andBool (#rangeUInt(256, Vat_balance) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Vat)) - andBool ((CALLER_ID =/=Int ACCT_ID) - andBool (ACCT_ID =/=Int Vat - andBool ((Vat =/=Int 0) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (((Ward ==Int 1)) - andBool (((VCallDepth #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("cage", .TypedArgs) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( VGas -Int Csstore( ISTANBUL , 0 , Live , Junk_1 ) ) -Int Csstore( ISTANBUL , CALLER_ID , Vow , Junk_2 ) ) +Int -6351 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flopper.live <- 0 ] [ #Flopper.vow <- CALLER_ID ] - ACCT_ID_ORIG_STORAGE - Nonce_Flopper - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Flopper) - - andBool (#rangeUInt(256, Ward) - andBool (#rangeUInt(256, Live) - andBool (#rangeAddress(Vow) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#notPrecompileAddress(Vow) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool ((Ward ==Int 1) - andBool ((VCallValue ==Int 0))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Flopper.wards[CALLER_ID]) ==Int Ward - andBool #lookup(ACCT_ID_STORAGE, #Flopper.live) ==Int Live - andBool #lookup(ACCT_ID_STORAGE, #Flopper.vow) ==Int Vow - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.wards[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.live) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.vow) ==Int Junk_2 - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.live - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.vow - andBool #Flopper.live =/=Int #Flopper.vow - [trusted] - - -endmodule diff --git a/tests/specs/mcd/vow-cage-surplus-pass-rough-spec.k b/tests/specs/mcd/vow-cage-surplus-pass-rough-spec.k deleted file mode 100644 index 1234ffc7a4..0000000000 --- a/tests/specs/mcd/vow-cage-surplus-pass-rough-spec.k +++ /dev/null @@ -1,965 +0,0 @@ -requires "verification.k" - -module VOW-CAGE-SURPLUS-PASS-ROUGH-SPEC - imports VERIFICATION - - // Vow_cage-surplus - claim [Vow.cage-surplus.pass.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vow_bin_runtime - #computeValidJumpDests(Vow_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("cage", .TypedArgs) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vow_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vow.live <- 0 ] [ #Vow.Sin <- 0 ] [ #Vow.Ash <- 0 ] - ACCT_ID_ORIG_STORAGE - Nonce_Vow - - - Vat - Vat_balance - Vat_bin_runtime - Vat_STORAGE => Vat_STORAGE [ #Vat.dai[Flapper] <- 0 ] [ #Vat.dai[ACCT_ID] <- (Dai_v +Int Dai_f) -Int Sin_v ] [ #Vat.sin[ACCT_ID] <- 0 ] [ #Vat.vice <- Vice -Int Sin_v ] [ #Vat.debt <- Debt -Int Sin_v ] - Vat_ORIG_STORAGE - Nonce_Vat - - - Flapper - Flapper_balance - Flapper_bin_runtime - Flapper_STORAGE => Flapper_STORAGE [ #Flapper.live <- 0 ] - Flapper_ORIG_STORAGE - Nonce_Flapper - - - Flopper - Flopper_balance - Flopper_bin_runtime - Flopper_STORAGE => Flopper_STORAGE [ #Flopper.live <- 0 ] [ #Flopper.vow <- ACCT_ID ] - Flopper_ORIG_STORAGE - Nonce_Flopper - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeAddress(Vat) - andBool (#rangeAddress(Flapper) - andBool (#rangeAddress(Flopper) - andBool (#rangeAddress(FlapVat) - andBool (#rangeUInt(256, MayFlap) - andBool (#rangeUInt(256, MayFlop) - andBool (#rangeUInt(256, Dai_v) - andBool (#rangeUInt(256, Sin_v) - andBool (#rangeUInt(256, Dai_f) - andBool (#rangeUInt(256, Debt) - andBool (#rangeUInt(256, Vice) - andBool (#rangeUInt(256, Live) - andBool (#rangeUInt(256, Sin) - andBool (#rangeUInt(256, Ash) - andBool (#rangeUInt(256, FlapLive) - andBool (#rangeUInt(256, FlopLive) - andBool (#rangeAddress(FlopVow) - andBool (#rangeUInt(256, Vat_balance) - andBool (#rangeUInt(256, Flapper_balance) - andBool (#rangeUInt(256, Flopper_balance) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Vat)) - andBool ((#notPrecompileAddress(Flapper)) - andBool ((#notPrecompileAddress(Flopper)) - andBool ((#notPrecompileAddress(FlapVat)) - andBool ((#notPrecompileAddress(FlopVow)) - andBool ((ACCT_ID =/=Int Vat) - andBool ((ACCT_ID =/=Int Flapper) - andBool ((ACCT_ID =/=Int Flopper) - andBool ((Dai_v +Int Dai_f >Int Sin_v) - andBool ((Flapper =/=Int ACCT_ID) - andBool ((Flapper =/=Int Vat) - andBool ((Flopper =/=Int ACCT_ID) - andBool ((Flopper =/=Int Vat) - andBool ((Flopper =/=Int Flapper) - andBool ((FlapVat ==Int Vat) - andBool ((Vat =/=Int 0) - andBool ((Flapper =/=Int 0) - andBool ((Flopper =/=Int 0) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (#rangeUInt(256, Junk_7) - andBool (#rangeUInt(256, Junk_8) - andBool (#rangeUInt(256, Junk_9) - andBool (#rangeUInt(256, Junk_10) - andBool (#rangeUInt(256, Junk_11) - andBool (#rangeUInt(256, Junk_12) - andBool (#rangeUInt(256, Junk_13) - andBool (#rangeUInt(256, Junk_14) - andBool (#rangeUInt(256, Junk_15) - andBool (#rangeUInt(256, Junk_16) - andBool (#rangeUInt(256, Junk_17) - andBool (#rangeUInt(256, Junk_18) - andBool (#rangeUInt(256, Junk_19) - andBool (((VCallValue ==Int 0)) - andBool (((VCallDepth #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vow_bin_runtime - #computeValidJumpDests(Vow_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : #if ABI_x >Int ABI_y #then ABI_y #else ABI_x #fi : WS - _ - 9829 => 9854 - #gas(VGas) => #if ABI_x <=Int ABI_y - #then #gas ( ( VGas +Int -49 ) ) - #else #gas ( ( VGas +Int -59 ) ) - #fi - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vow_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - _ACCT_ID_ORIG_STORAGE - Nonce_Vow - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vow) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 1000) - andBool (#rangeUInt(256, VMemoryUsed))))) - - - [trusted] - - - // Vat_dai - claim [Vat.dai.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, Rad) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("dai", #address(ABI_usr)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( VGas +Int -1236 ) ) - 0 => ?_ - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeAddress(ABI_usr) - andBool (#rangeUInt(256, Rad) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool ((VCallValue ==Int 0)))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[ABI_usr]) ==Int Rad - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[ABI_usr]) ==Int Junk_0 - [trusted] - - - // Vat_sin - claim [Vat.sin.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => #buf(32, Rad) - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("sin", #address(ABI_usr)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( VGas +Int -1235 ) ) - 0 => ?_ - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeAddress(ABI_usr) - andBool (#rangeUInt(256, Rad) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool ((VCallValue ==Int 0)))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.sin[ABI_usr]) ==Int Rad - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.sin[ABI_usr]) ==Int Junk_0 - [trusted] - - - // Vat_heal - claim [Vat.heal.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Vat_bin_runtime - #computeValidJumpDests(Vat_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("heal", #uint256(ABI_rad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( ( ( VGas -Int Csstore( ISTANBUL , ( Sin -Int ABI_rad ) , Sin , Junk_0 ) ) -Int Csstore( ISTANBUL , ( Dai -Int ABI_rad ) , Dai , Junk_1 ) ) -Int Csstore( ISTANBUL , ( Vice -Int ABI_rad ) , Vice , Junk_2 ) ) -Int Csstore( ISTANBUL , ( Debt -Int ABI_rad ) , Debt , Junk_3 ) ) +Int -8616 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vat_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Vat.sin[CALLER_ID] <- Sin -Int ABI_rad ] [ #Vat.dai[CALLER_ID] <- Dai -Int ABI_rad ] [ #Vat.vice <- Vice -Int ABI_rad ] [ #Vat.debt <- Debt -Int ABI_rad ] - ACCT_ID_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_rad) - andBool (#rangeUInt(256, Dai) - andBool (#rangeUInt(256, Sin) - andBool (#rangeUInt(256, Debt) - andBool (#rangeUInt(256, Vice) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (((VCallValue ==Int 0)) - andBool ((#rangeUInt(256, Dai -Int ABI_rad)) - andBool ((#rangeUInt(256, Sin -Int ABI_rad)) - andBool ((#rangeUInt(256, Debt -Int ABI_rad)) - andBool ((#rangeUInt(256, Vice -Int ABI_rad))))))))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vat.sin[CALLER_ID]) ==Int Sin - andBool #lookup(ACCT_ID_STORAGE, #Vat.dai[CALLER_ID]) ==Int Dai - andBool #lookup(ACCT_ID_STORAGE, #Vat.vice) ==Int Vice - andBool #lookup(ACCT_ID_STORAGE, #Vat.debt) ==Int Debt - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.sin[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.dai[CALLER_ID]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.vice) ==Int Junk_2 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vat.debt) ==Int Junk_3 - andBool #Vat.sin[CALLER_ID] =/=Int #Vat.dai[CALLER_ID] - andBool #Vat.sin[CALLER_ID] =/=Int #Vat.vice - andBool #Vat.sin[CALLER_ID] =/=Int #Vat.debt - andBool #Vat.dai[CALLER_ID] =/=Int #Vat.vice - andBool #Vat.dai[CALLER_ID] =/=Int #Vat.debt - andBool #Vat.vice =/=Int #Vat.debt - [trusted] - - - // Flapper_cage - claim [Flapper.cage.pass]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flapper_bin_runtime - #computeValidJumpDests(Flapper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("cage", #uint256(ABI_rad)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( ( VGas -Int Csstore( ISTANBUL , 0 , Live , Junk_2 ) ) -Int Csstore( ISTANBUL , ( Dai_a -Int ABI_rad ) , Dai_a , Junk_5 ) ) -Int Csstore( ISTANBUL , ( Dai_u +Int ABI_rad ) , Dai_u , Junk_6 ) ) +Int -15964 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flapper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flapper.live <- 0 ] - ACCT_ID_ORIG_STORAGE - Nonce_Flapper - - - Vat - Vat_balance - Vat_bin_runtime - Vat_STORAGE => Vat_STORAGE [ #Vat.dai[ACCT_ID] <- Dai_a -Int ABI_rad ] [ #Vat.dai[CALLER_ID] <- Dai_u +Int ABI_rad ] - Vat_ORIG_STORAGE - Nonce_Vat - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Flapper) - andBool #rangeNonce(Nonce_Vat) - - andBool (#rangeUInt(256, ABI_rad) - andBool (#rangeAddress(Vat) - andBool (#rangeUInt(256, Ward) - andBool (#rangeUInt(256, Live) - andBool (#rangeUInt(256, Dai_a) - andBool (#rangeUInt(256, Dai_u) - andBool (#rangeUInt(256, Vat_balance) - andBool ((lengthBytes(CD) <=Int 1250000000) - andBool ((#notPrecompileAddress(Vat)) - andBool ((CALLER_ID =/=Int ACCT_ID) - andBool (ACCT_ID =/=Int Vat - andBool ((Vat =/=Int 0) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool (#rangeUInt(256, Junk_3) - andBool (#rangeUInt(256, Junk_4) - andBool (#rangeUInt(256, Junk_5) - andBool (#rangeUInt(256, Junk_6) - andBool (((Ward ==Int 1)) - andBool (((VCallDepth #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - .Bytes - _ => EVMC_SUCCESS - _VCallStack - _ - _ => ?_ - - Flopper_bin_runtime - #computeValidJumpDests(Flopper_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("cage", .TypedArgs) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => #gas ( ( ( ( VGas -Int Csstore( ISTANBUL , 0 , Live , Junk_1 ) ) -Int Csstore( ISTANBUL , CALLER_ID , Vow , Junk_2 ) ) +Int -6351 ) ) - 0 => ?_ - _ => ?_ - false - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Flopper_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE [ #Flopper.live <- 0 ] [ #Flopper.vow <- CALLER_ID ] - ACCT_ID_ORIG_STORAGE - Nonce_Flopper - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Flopper) - - andBool (#rangeUInt(256, Ward) - andBool (#rangeUInt(256, Live) - andBool (#rangeAddress(Vow) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#notPrecompileAddress(Vow) - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2) - andBool ((Ward ==Int 1) - andBool ((VCallValue ==Int 0))))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Flopper.wards[CALLER_ID]) ==Int Ward - andBool #lookup(ACCT_ID_STORAGE, #Flopper.live) ==Int Live - andBool #lookup(ACCT_ID_STORAGE, #Flopper.vow) ==Int Vow - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.wards[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.live) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Flopper.vow) ==Int Junk_2 - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.live - andBool #Flopper.wards[CALLER_ID] =/=Int #Flopper.vow - andBool #Flopper.live =/=Int #Flopper.vow - [trusted] - - -endmodule diff --git a/tests/specs/mcd/vow-fess-fail-rough-spec.k b/tests/specs/mcd/vow-fess-fail-rough-spec.k deleted file mode 100644 index 9469e8cd7c..0000000000 --- a/tests/specs/mcd/vow-fess-fail-rough-spec.k +++ /dev/null @@ -1,225 +0,0 @@ -requires "verification.k" - -module VOW-FESS-FAIL-ROUGH-SPEC - imports VERIFICATION - - // Vow_fess - claim [Vow.fess.fail.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => ?FAILURE:EndStatusCode - _VCallStack - _ - _ => ?_ - - Vow_bin_runtime - #computeValidJumpDests(Vow_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("fess", #uint256(ABI_tab)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth => ?_ - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vow_bin_runtime - ACCT_ID_STORAGE => ?_ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Vow => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vow) - - andBool (#rangeUInt(256, ABI_tab) - andBool (#rangeUInt(256, May) - andBool (#rangeUInt(256, Sin_era) - andBool (#rangeUInt(256, Sin) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vow.wards[CALLER_ID]) ==Int May - andBool #lookup(ACCT_ID_STORAGE, #Vow.sin[TIME]) ==Int Sin_era - andBool #lookup(ACCT_ID_STORAGE, #Vow.Sin) ==Int Sin - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vow.wards[CALLER_ID]) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vow.sin[TIME]) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vow.Sin) ==Int Junk_2 - andBool #Vow.wards[CALLER_ID] =/=Int #Vow.sin[TIME] - andBool #Vow.wards[CALLER_ID] =/=Int #Vow.Sin - andBool #Vow.sin[TIME] =/=Int #Vow.Sin - andBool notBool ( - (((May:Int ==Int 1)) - andBool (((VCallValue:Int ==Int 0)) - andBool ((#rangeUInt(256, Sin_era:Int +Int ABI_tab:Int)) - andBool ((#rangeUInt(256, Sin:Int +Int ABI_tab:Int)))))) - ) - ensures - ?FAILURE =/=K EVMC_SUCCESS - - // Vow_adduu - claim [Vow.adduu.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vow_bin_runtime - #computeValidJumpDests(Vow_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 9777 => 9802 - #gas(VGas) => #gas ( ( VGas +Int -54 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vow_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Vow => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vow) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x +Int ABI_y))))))) - - - [trusted] - - -endmodule diff --git a/tests/specs/mcd/vow-flog-fail-rough-spec.k b/tests/specs/mcd/vow-flog-fail-rough-spec.k deleted file mode 100644 index 2185afaae5..0000000000 --- a/tests/specs/mcd/vow-flog-fail-rough-spec.k +++ /dev/null @@ -1,326 +0,0 @@ -requires "verification.k" - -module VOW-FLOG-FAIL-ROUGH-SPEC - imports VERIFICATION - - // Vow_flog - claim [Vow.flog.fail.rough]: - #execute ~> CONTINUATION => #halt ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - _ => ?_ - _ => ?FAILURE:EndStatusCode - _VCallStack - _ - _ => ?_ - - Vow_bin_runtime - #computeValidJumpDests(Vow_bin_runtime) - ACCT_ID - CALLER_ID - #abiCallData("flog", #uint256(ABI_t)) +Bytes CD => ?_ - VCallValue - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - #gas(VGas) => ?_ - 0 => ?_ - _ => ?_ - false - VCallDepth => ?_ - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vow_bin_runtime - ACCT_ID_STORAGE => ?_ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Vow => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vow) - - andBool (#rangeUInt(256, ABI_t) - andBool (#rangeUInt(256, Wait) - andBool (#rangeUInt(256, Sin_t) - andBool (#rangeUInt(256, Sin) - andBool (lengthBytes(CD) <=Int 1250000000 - andBool (#rangeUInt(256, Junk_0) - andBool (#rangeUInt(256, Junk_1) - andBool (#rangeUInt(256, Junk_2))))))))) - - andBool #lookup(ACCT_ID_STORAGE, #Vow.wait) ==Int Wait - andBool #lookup(ACCT_ID_STORAGE, #Vow.Sin) ==Int Sin - andBool #lookup(ACCT_ID_STORAGE, #Vow.sin[ABI_t]) ==Int Sin_t - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vow.wait) ==Int Junk_0 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vow.Sin) ==Int Junk_1 - andBool #lookup(ACCT_ID_ORIG_STORAGE, #Vow.sin[ABI_t]) ==Int Junk_2 - andBool #Vow.wait =/=Int #Vow.Sin - andBool #Vow.wait =/=Int #Vow.sin[ABI_t] - andBool #Vow.Sin =/=Int #Vow.sin[ABI_t] - andBool notBool ( - (((ABI_t:Int +Int Wait:Int <=Int TIME:Int)) - andBool (((VCallValue:Int ==Int 0)) - andBool ((#rangeUInt(256, ABI_t:Int +Int Wait:Int)) - andBool ((#rangeUInt(256, Sin:Int -Int Sin_t:Int)))))) - ) - ensures - ?FAILURE =/=K EVMC_SUCCESS - - // Vow_adduu - claim [Vow.adduu.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vow_bin_runtime - #computeValidJumpDests(Vow_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x +Int ABI_y : WS - _ - 9777 => 9802 - #gas(VGas) => #gas ( ( VGas +Int -54 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vow_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Vow => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x +Int ABI_y))))))) - andBool #rangeNonce(Nonce_Vow) - - - [trusted] - - - // Vow_subuu - claim [Vow.subuu.pass]: - #execute ~> CONTINUATION => #execute ~> CONTINUATION - 1 - NORMAL - ISTANBUL - true - - - VOutput => VOutput - _ => ?_ - _VCallStack - _ - _ => ?_ - - Vow_bin_runtime - #computeValidJumpDests(Vow_bin_runtime) - ACCT_ID - CALLER_ID - _ => ?_ - VCallValue - ABI_y : ABI_x : JMPTO : WS => JMPTO : ABI_x -Int ABI_y : WS - _ - 9803 => 9828 - #gas(VGas) => #gas ( ( VGas +Int -54 ) ) - VMemoryUsed - _ => ?_ - _ - VCallDepth - - - _VSelfDestruct - _ => ?_ - _Vrefund => ?_ - _ => ?_ - _ => ?_ - - _ - ORIGIN_ID - _ - - _ - _ - _ - _ - _ - _ - _ - _ - _BLOCK_NUMBER - _ - _ - TIME - _ - _ - _ - _ - _ - _ - - - - VChainId - - - ACCT_ID - ACCT_ID_balance - Vow_bin_runtime - ACCT_ID_STORAGE => ACCT_ID_STORAGE - ACCT_ID_ORIG_STORAGE - Nonce_Vow => ?_ - - ... - - _ - _ - _ - - - requires #rangeAddress(ACCT_ID) - andBool ACCT_ID =/=Int 0 - andBool #notPrecompileAddress(ACCT_ID) - andBool #rangeAddress(CALLER_ID) - andBool #rangeAddress(ORIGIN_ID) - andBool #rangeUInt(256, TIME) - andBool #rangeUInt(256, ACCT_ID_balance) - andBool VCallDepth <=Int 1024 - andBool #rangeUInt(256, VCallValue) - andBool #rangeUInt(256, VChainId) - andBool #rangeNonce(Nonce_Vow) - - andBool (#rangeUInt(256, ABI_x) - andBool (#rangeUInt(256, ABI_y) - andBool ((#sizeWordStack(WS) <=Int 100) - andBool (#rangeUInt(256, VMemoryUsed) - andBool ((#rangeUInt(256, ABI_x -Int ABI_y))))))) - - - [trusted] - - -endmodule diff --git a/tests/specs/mcd/word-pack.k b/tests/specs/mcd/word-pack.k deleted file mode 100644 index 9466531dbf..0000000000 --- a/tests/specs/mcd/word-pack.k +++ /dev/null @@ -1,175 +0,0 @@ -requires "evm-types.md" - - // - // The Solidity compiler sometimes packs together multiple arguments into one storage location, for optimized reads/writes. - // Because the packed variables are all smaller than a `uint256`, they can fit into one word. - // If you use the pattern `SOMETHING ==K #WordPack*(ARG1, ..., ARGN)` in your side-conditions, you're actually making several assertions about `SOMETHING` and `ARG1 ... ARGN`. - // First, you're asserting that each `ARGi` can be unpacked from the variable `SOMETHING` using the correct accessors. - // Second, you're asserting that `SOMETHING` contains no other values than the packed `ARGi` (so we add a range condition to `SOMETHING`). - // This allows us to turn the side-condition SOMETHING ==K #WordPack*(ARG1, ..., ARGN)` into the more useful side-conditions `ARG1 ==K access1(SOMETHING) andBool ... andBool ARGN ==K accessN(SOMETHING)`. - // The arguments are packed in reverse order, so that the highest bits are set by the last argument. - // - // When updating variables which originally contained `WordPack*`, the Solidity compiler will mask the original value everywhere _except_ where you're updating. - // Then the update will be bitwise `|Int` with the masked value, and the new value written back. - // Here we provide the masks which are used by the Solidity compiler, and rules which fold these bitwise updates back up into semantic `#WordPack*` arguments for the purposes of matching the RHS of proofs. - // - -module WORD-PACK - imports WORD-PACK-HASKELL -endmodule - -module WORD-PACK-HASKELL - imports WORD-PACK-COMMON - - rule { ADDR_UINT48_UINT48:Int #Equals #WordPackAddrUInt48UInt48(ADDR:Int, UINT48_1:Int, UINT48_2:Int) } - => { true #Equals ( - ADDR ==Int maxUInt160 &Int ADDR_UINT48_UINT48 - andBool UINT48_1 ==Int maxUInt48 &Int (ADDR_UINT48_UINT48 /Int pow160) - andBool UINT48_2 ==Int maxUInt48 &Int (ADDR_UINT48_UINT48 /Int pow208) - andBool #rangeUInt(256, ADDR_UINT48_UINT48) - ) } - [simplification] - - rule { #WordPackAddrUInt48UInt48(ADDR:Int, UINT48_1:Int, UINT48_2:Int) #Equals ADDR_UINT48_UINT48:Int } - => { true #Equals ( - ADDR ==Int maxUInt160 &Int ADDR_UINT48_UINT48 - andBool UINT48_1 ==Int maxUInt48 &Int (ADDR_UINT48_UINT48 /Int pow160) - andBool UINT48_2 ==Int maxUInt48 &Int (ADDR_UINT48_UINT48 /Int pow208) - andBool #rangeUInt(256, ADDR_UINT48_UINT48) - ) } - [simplification] - - rule { UINT48_UINT48 #Equals #WordPackUInt48UInt48(UINT48_1, UINT48_2) } - => { true #Equals ( - UINT48_1 ==Int maxUInt48 &Int UINT48_UINT48 - andBool UINT48_2 ==Int maxUInt48 &Int (UINT48_UINT48 /Int pow48) - andBool #rangeUInt(96, UINT48_UINT48) - ) } - [simplification] - - rule { #WordPackUInt48UInt48(UINT48_1, UINT48_2) #Equals UINT48_UINT48} - => { true #Equals ( - UINT48_1 ==Int maxUInt48 &Int UINT48_UINT48 - andBool UINT48_2 ==Int maxUInt48 &Int (UINT48_UINT48 /Int pow48) - andBool #rangeUInt(96, UINT48_UINT48) - ) } - [simplification] - - rule { #WordPackAddrUInt8(ADDR, UINT8) #Equals ADDR_UINT8 } - => { true #Equals ( - ADDR ==Int maxUInt160 &Int ADDR_UINT8 - andBool UINT8 ==Int maxUInt8 &Int (ADDR_UINT8 /Int pow160) - andBool #rangeUInt(168, ADDR_UINT8) - ) } - [simplification] - - rule { ADDR_UINT8 #Equals #WordPackAddrUInt8(ADDR, UINT8) } - => { true #Equals ( - ADDR ==Int maxUInt160 &Int ADDR_UINT8 - andBool UINT8 ==Int maxUInt8 &Int (ADDR_UINT8 /Int pow160) - andBool #rangeUInt(168, ADDR_UINT8) - andBool #rangeUInt(160, ADDR) - andBool #rangeUInt(8, UINT8) - ) } - [simplification] - - // - // #WordPack definedness - // - rule #Ceil ( #WordPackAddrUInt48UInt48(ADDR, UINT48_1, UINT48_2) ) => - { true - #Equals - #rangeUInt(160, ADDR) andBool #rangeUInt(48, UINT48_1) andBool #rangeUInt(48, UINT48_2) - } [simplification] - - rule #Ceil ( #WordPackUInt48UInt48(UINT48_1, UINT48_2) ) => - { true #Equals #rangeUInt(48, UINT48_1) andBool #rangeUInt(48, UINT48_2) } [simplification] - - rule #Ceil ( #WordPackAddrUInt8(ADDR, UINT8) ) => - { true #Equals #rangeUInt(160, ADDR) andBool #rangeUInt(8, UINT8) } [simplification] - - rule X |Int 0 => X requires 0 <=Int X [simplification] - rule 0 &Int X => 0 requires 0 <=Int X [simplification] - -endmodule - -module WORD-PACK-COMMON - imports EVM-TYPES - - syntax Int ::= #WordPackUInt48UInt48 ( Int , Int ) [function, no-evaluators, smtlib(WordPackUInt48UInt48)] - | #WordPackAddrUInt48UInt48 ( Int , Int , Int ) [function, no-evaluators, smtlib(WordPackAddrUInt48UInt48)] - | #WordPackAddrUInt8 ( Int , Int ) [function, no-evaluators, smtlib(WordPackAddrUInt8)] - // ----------------------------------------------------------------------------------------------------------------- - // rule #WordPackUInt48UInt48 ( UINT48_1 , UINT48_2 ) => UINT48_2 *Int pow48 +Int UINT48_1 requires #rangeUInt(48, UINT48_1) andBool #rangeUInt(48, UINT48_2) - // rule #WordPackAddrUInt48UInt48 ( ADDR , UINT48_1 , UINT48_2 ) => UINT48_2 *Int pow208 +Int UINT48_1 *Int pow160 +Int ADDR requires #rangeAddress(ADDR) andBool #rangeUInt(48, UINT48_1) andBool #rangeUInt(48, UINT48_2) - // rule #WordPackAddrUInt8 ( ADDR , UINT8 ) => UINT8 *Int pow160 +Int ADDR requires #rangeAddress(ADDR) andBool #rangeUInt(8, UINT_8) - - syntax Int ::= "maskWordPackUInt48UInt48_1" [macro] // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFF - | "maskWordPackUInt48UInt48_2" [macro] // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 - // ------------------------------------------------------------------------------------------------------------------------- - rule maskWordPackUInt48UInt48_1 => 115792089237316195423570985008687907853269984665561335876943319951794562400255 - rule maskWordPackUInt48UInt48_2 => 115792089237316195423570985008687907853269984665640564039457583726438152929280 - - rule (maskWordPackUInt48UInt48_2 &Int UINT48_UINT48) /Int pow48 => maxUInt48 &Int (UINT48_UINT48 /Int pow48) requires #rangeUInt(96, UINT48_UINT48) [simplification] - rule maskWordPackUInt48UInt48_1 &Int UINT48_UINT48 => maxUInt48 &Int UINT48_UINT48 requires #rangeUInt(96, UINT48_UINT48) [simplification] - - rule (UINT48_2 *Int pow48) |Int (maskWordPackUInt48UInt48_1 &Int UINT48_UINT48) => #WordPackUInt48UInt48( (maskWordPackUInt48UInt48_1 &Int UINT48_UINT48), UINT48_2) requires #rangeUInt(96, UINT48_UINT48) andBool #rangeUInt(48, UINT48_2) [simplification] - rule UINT48_1 |Int (maskWordPackUInt48UInt48_2 &Int UINT48_UINT48) => #WordPackUInt48UInt48( UINT48_1 , (maskWordPackUInt48UInt48_2 &Int UINT48_UINT48) /Int pow48 ) requires #rangeUInt(96, UINT48_UINT48) andBool #rangeUInt(48, UINT48_1) [simplification] - rule (UINT48_2 *Int pow48) |Int (maxUInt48 &Int UINT48_UINT48) => #WordPackUInt48UInt48( maxUInt48 &Int UINT48_UINT48 , UINT48_2 ) requires #rangeUInt(96, UINT48_UINT48) andBool #rangeUInt(48, UINT48_2) [simplification] - - syntax Int ::= "maskWordPackAddrUInt48UInt48_2" [macro] // 0xFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - | "maskWordPackAddrUInt48UInt48_3" [macro] // 0x000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - // ----------------------------------------------------------------------------------------------------------------------------- - rule maskWordPackAddrUInt48UInt48_2 => 115792089237315784047431654708638870748305248246218003188207458632603225030655 - rule maskWordPackAddrUInt48UInt48_3 => 411376139330301510538742295639337626245683966408394965837152255 - - rule (ADDR |Int (notMaxUInt160 &Int ADDR_UINT48_UINT48)) /Int pow160 => ADDR_UINT48_UINT48 /Int pow160 requires #rangeUInt(256, ADDR_UINT48_UINT48) andBool #rangeAddress(ADDR) [simplification] - rule (ADDR |Int (notMaxUInt160 &Int ADDR_UINT48_UINT48)) /Int pow208 => ADDR_UINT48_UINT48 /Int pow208 requires #rangeUInt(256, ADDR_UINT48_UINT48) andBool #rangeAddress(ADDR) [simplification] - - rule (UINT48_2 *Int pow208) |Int (maskWordPackAddrUInt48UInt48_3 &Int ADDR_UINT48_UINT48) => #WordPackAddrUInt48UInt48(maxUInt160 &Int ADDR_UINT48_UINT48, maxUInt48 &Int (ADDR_UINT48_UINT48 /Int pow160), UINT48_2) requires #rangeUInt(256, ADDR_UINT48_UINT48) andBool #rangeUInt(48, UINT48_2) [simplification] - rule (UINT48_1 *Int pow160) |Int (maskWordPackAddrUInt48UInt48_2 &Int ADDR_UINT48_UINT48) => #WordPackAddrUInt48UInt48(maxUInt160 &Int ADDR_UINT48_UINT48, UINT48_1, maxUInt48 &Int (ADDR_UINT48_UINT48 /Int pow208)) requires #rangeUInt(256, ADDR_UINT48_UINT48) andBool #rangeUInt(48, UINT48_1) [simplification] - - rule maxUInt48 &Int (maskWordPackUInt48UInt48_2 &Int A) => 0 requires 0 <=Int A [simplification] - - // - // #WordPack components - // - rule maxUInt160 &Int #WordPackAddrUInt48UInt48(X:Int, _, _) => X [simplification] - rule maxUInt48 &Int (#WordPackAddrUInt48UInt48(_, Y:Int, _) /Int pow160) => Y [simplification] - rule #WordPackAddrUInt48UInt48(_, _, Z:Int) /Int pow208 => Z [simplification] - - rule maxUInt48 &Int #WordPackUInt48UInt48 (X:Int , _) => X [simplification] - rule #WordPackUInt48UInt48 (_, Y:Int) /Int pow48 => Y [simplification] - - rule maxUInt160 &Int #WordPackAddrUInt8 (X:Int , _) => X [simplification] - rule #WordPackAddrUInt8 (_, Y:Int) /Int pow160 => Y [simplification] - - // - // #WordPack ranges - // - rule 0 <=Int #WordPackAddrUInt48UInt48(_, _, _) => true [simplification] - rule #WordPackAddrUInt48UInt48(_, _, _) true [simplification] - - rule 0 <=Int #WordPackUInt48UInt48(_, _) => true [simplification] - rule #WordPackUInt48UInt48(_, _) true [simplification] - - rule 0 <=Int #WordPackAddrUInt8(_, _) => true [simplification] - rule #WordPackAddrUInt8(_, _) true [simplification] - - // - // More simplifications surrounding pow48/160 - // - rule maxUInt48 &Int X:Int => X requires #rangeUInt(48, X) [simplification] - rule maxUInt160 &Int X:Int => X requires #rangeUInt(160, X) [simplification] - - rule maxUInt48 &Int (X /Int pow48) => X /Int pow48 requires #rangeUInt(96, X) [simplification] - - rule maxUInt48 &Int (A:Int |Int B:Int) => (maxUInt48 &Int A) |Int (maxUInt48 &Int B) requires 0 <=Int A andBool 0 <=Int B [simplification] - rule maxUInt160 &Int (A:Int |Int B:Int) => (maxUInt160 &Int A) |Int (maxUInt160 &Int B) requires 0 <=Int A andBool 0 <=Int B [simplification] - - rule 0 <=Int X &Int Y => true requires 0 <=Int X andBool 0 <=Int Y [simplification] - rule X &Int Y true requires 0 <=Int X andBool 0 <=Int Y andBool (X 0 requires 0 <=Int X andBool X X &Int Y requires 0 <=Int X andBool 0 <=Int Y [simplification] -endmodule diff --git a/tests/specs/opcodes/create-spec.k b/tests/specs/opcodes/create-spec.k deleted file mode 100644 index 9627d8a6a6..0000000000 --- a/tests/specs/opcodes/create-spec.k +++ /dev/null @@ -1,157 +0,0 @@ -requires "verification.k" - -/* - -`CREATE VALUE MEMSTART MEMWIDTH` will return (push into the stack) `#newAddr(ACCT_ID, NONCE)` and update the network state (see network cell). - -`#generatedCode` is the runtime bytecode of the newly created contract -that is generated by executing the contract creation bytecode provided by #range(#mapWithCode, #memStart, #memWidth)`. - -#mapWithCode, #memStart, #memWidth are placeholders. They can be instantiated with concrete values when used in other proofs. - -*/ - - -module CREATE-SPEC - imports VERIFICATION - - claim - #next [ CREATE ] => . ... - 1 - NORMAL - PETERSBURG - true - - - _ => .Bytes - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - _ - _ - - ACCT_ID - _ // who called this contract; in the begining, origin // msg.sender - _ - _ - - - VALUE : #memStart : #memWidth : WS => #newAddr(ACCT_ID, NONCE) : WS - - #mapWithCode - - PCOUNT => ( PCOUNT +Int 1 ) - - - G => ?_ - - MU => ?_ - _ => ?_ - - false - CALL_DEPTH - - - _ => ?_ - ... - - ... - - - _ - - - - ACCT_ID - BAL => BAL -Int VALUE - NONCE => NONCE +Int 1 - ... - - ( .Bag - => - #newAddr(ACCT_ID, NONCE) - VALUE - 1 - #generatedCode - ... - - ) - REST - - - _ - _ - _ - - - ... - - requires G -Int (Cmem(PETERSBURG, #memoryUsageUpdate(MU, #memStart, #memWidth)) -Int Cmem(PETERSBURG, MU)) -Int 32000 >Int 0 - andBool 0 <=Int CALL_DEPTH andBool CALL_DEPTH =Int VALUE - andBool notBool (#newAddr(ACCT_ID, NONCE) in (SetItem(ACCT_ID) ACCTS)) - andBool ACCT_ID =/=Int #newAddr(ACCT_ID, NONCE) - // 900 is a random value - andBool #range(0 <= #sizeWordStack(WS) <= 900) - - claim - #execute => #halt ... - 1 - NORMAL - PETERSBURG - true - - - _ => #generatedCode - _ => EVMC_SUCCESS - _ - _ - _ => ?_ - - - #range(#mapWithCode, #memStart, #memWidth) - _ - - ACCT_ID - _ // who called this contract; in the begining, origin // msg.sender - _ - _ - - .WordStack => ?_ - .Bytes => ?_ - 0 => ?_ - // simplified gas cost - G => 0 - MU => ?_ - _ => ?_ - - false - CALL_DEPTH - - - _ => ?_ - ... - - ... - - - _ - - _ - - _ - _ - _ - - - ... - - requires 0 <=Int CALL_DEPTH andBool CALL_DEPTH 0 [simplification] - - // ######################## - // Arithmetic - // ######################## - - rule chop(I) => I requires 0 <=Int I andBool I true requires 0 <=Int N [simplification, smt-lemma] - rule #sizeWordStack ( WS , N ) => N +Int #sizeWordStack ( WS , 0 ) requires N =/=Int 0 [simplification] -endmodule diff --git a/tests/specs/smoke b/tests/specs/smoke deleted file mode 100644 index f581df3b34..0000000000 --- a/tests/specs/smoke +++ /dev/null @@ -1,52 +0,0 @@ -tests/specs/benchmarks/address00-spec.k -tests/specs/benchmarks/bytes00-spec.k -tests/specs/benchmarks/dynamicarray00-spec.k -tests/specs/benchmarks/encode-keccak00-spec.k -tests/specs/benchmarks/encodepacked-keccak01-spec.k -tests/specs/benchmarks/keccak00-spec.k -tests/specs/benchmarks/overflow00-nooverflow-spec.k -tests/specs/benchmarks/overflow00-overflow-spec.k -tests/specs/benchmarks/requires01-a0gt0-spec.k -tests/specs/benchmarks/staticarray00-spec.k -tests/specs/benchmarks/staticloop00-a0lt10-spec.k -tests/specs/benchmarks/storagevar02-nooverflow-spec.k -tests/specs/benchmarks/storagevar02-overflow-spec.k -tests/specs/benchmarks/structarg00-spec.k -tests/specs/benchmarks/structarg01-spec.k -tests/specs/bihu/forwardToHotWallet-failure-1-spec.k -tests/specs/bihu/forwardToHotWallet-failure-2-spec.k -tests/specs/bihu/forwardToHotWallet-failure-3-spec.k -tests/specs/erc20/ds/allowance-spec.k -tests/specs/erc20/ds/approve-success-spec.k -tests/specs/erc20/ds/balanceOf-spec.k -tests/specs/erc20/ds/transfer-failure-1-c-spec.k -tests/specs/erc20/ds/transfer-failure-2-b-spec.k -tests/specs/erc20/ds/transferFrom-failure-1-d-spec.k -tests/specs/erc20/ds/transferFrom-failure-2-c-spec.k -tests/specs/erc20/hkg/allowance-spec.k -tests/specs/erc20/hkg/approve-spec.k -tests/specs/erc20/hkg/transfer-failure-1-spec.k -tests/specs/erc20/hkg/transfer-failure-2-spec.k -tests/specs/erc20/hkg/transferFrom-failure-2-spec.k -tests/specs/erc20/hkg/transferFrom-success-2-spec.k -tests/specs/erc20/hkg/transfer-success-1-spec.k -tests/specs/erc20/hkg/transfer-success-2-spec.k -tests/specs/examples/solidity-code-spec.md -tests/specs/mcd/cat-exhaustiveness-spec.k -tests/specs/mcd/cat-file-addr-pass-rough-spec.k -tests/specs/mcd/dai-symbol-pass-spec.k -tests/specs/mcd/dsvalue-read-pass-spec.k -tests/specs/mcd/dsvalue-read-pass-summarize-spec.k -tests/specs/mcd/end-subuu-pass-spec.k -tests/specs/mcd/flipper-tau-pass-spec.k -tests/specs/mcd/flipper-ttl-pass-spec.k -tests/specs/mcd/flopper-cage-pass-spec.k -tests/specs/mcd/functional-spec.k -tests/specs/mcd/vat-addui-fail-rough-spec.k -tests/specs/mcd/vat-deny-diff-fail-rough-spec.k -tests/specs/mcd/vat-mului-pass-spec.k -tests/specs/mcd/vat-subui-fail-rough-spec.k -tests/specs/mcd/vat-subui-pass-rough-spec.k -tests/specs/mcd/vat-subui-pass-spec.k -tests/specs/mcd/vow-fess-fail-rough-spec.k -tests/specs/mcd/vow-flog-fail-rough-spec.k diff --git a/tests/templates/output-success-haskell.json b/tests/templates/output-success-haskell.json deleted file mode 100644 index 5f8fca8169..0000000000 --- a/tests/templates/output-success-haskell.json +++ /dev/null @@ -1,173 +0,0 @@ - - - . - - - 0 - - - SUCCESS - - - DEFAULT - - - true - - - - - b"" - - - .StatusCode - - - .List - - - .List - - - .Set - - - - b"" - - - .Set - - - .Account - - - .Account - - - b"" - - - 0 - - - .WordStack - - - b"" - - - 0 - - - 0 - - - 0 - - - 0 - - - false - - - 0 - - - - - .Set - - - .List - - - 0 - - - .Set - - - .Map - - - - 0 - - - .Account - - - .List - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - b"" - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - b"" - - - 0 - - - 0 - - - [ .JSONs ] - - - - - - 1 - - - .AccountCellMap - - - .List - - - .List - - - .MessageCellMap - - - - diff --git a/tests/templates/output-success-java.json b/tests/templates/output-success-java.json deleted file mode 100644 index aa8fad8c45..0000000000 --- a/tests/templates/output-success-java.json +++ /dev/null @@ -1,173 +0,0 @@ - - - . - - - 0 - - - SUCCESS - - - DEFAULT - - - true - - - - - .WordStack - - - .StatusCode - - - .List - - - .List - - - .Set - - - - .WordStack - - - .Set - - - .Account - - - .Account - - - .WordStack - - - 0 - - - .WordStack - - - .Map - - - 0 - - - 0 - - - 0 - - - 0 - - - false - - - 0 - - - - - .Set - - - .List - - - 0 - - - .Set - - - .Map - - - - 0 - - - .Account - - - .List - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - .WordStack - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - .WordStack - - - 0 - - - 0 - - - [ .JSONs ] - - - - - - 1 - - - .Map - - - .List - - - .List - - - .Map - - - - diff --git a/tests/templates/output-success-llvm.json b/tests/templates/output-success-llvm.json deleted file mode 100644 index 50fe02f21c..0000000000 --- a/tests/templates/output-success-llvm.json +++ /dev/null @@ -1,176 +0,0 @@ - - - . - - - 0 - - - SUCCESS - - - DEFAULT - - - true - - - - - b"" - - - .StatusCode - - - .List - - - .List - - - .Set - - - - b"" - - - .Set - - - .Account - - - .Account - - - b"" - - - 0 - - - .WordStack - - - b"" - - - 0 - - - 0 - - - 0 - - - 0 - - - false - - - 0 - - - - - .Set - - - .List - - - 0 - - - .Set - - - .Map - - - - 0 - - - .Account - - - .List - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - b"" - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - b"" - - - 0 - - - 0 - - - 0 - - - [ .JSONs ] - - - - - - 1 - - - .AccountCellMap - - - .List - - - .List - - - .MessageCellMap - - - - diff --git a/web/.gitignore b/web/.gitignore deleted file mode 100644 index c935a51ea2..0000000000 --- a/web/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.cache \ No newline at end of file diff --git a/web/.nvmrc b/web/.nvmrc deleted file mode 100644 index 03128968bf..0000000000 --- a/web/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -lts/dubnium diff --git a/web/README.md b/web/README.md deleted file mode 100644 index 157ab86c2e..0000000000 --- a/web/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# K Website - -Please make sure you have nodejs and npm installed - -```bash -$ npm install # install necessary dependencies -$ npm run build # build the website to ./public_content directory -$ npm run serve # start the development server -``` \ No newline at end of file diff --git a/web/build-html.js b/web/build-html.js deleted file mode 100644 index b580d4ca46..0000000000 --- a/web/build-html.js +++ /dev/null @@ -1,23 +0,0 @@ -const { cleanUpFiles, generatePagesFromMarkdownFiles } = require("k-web-theme"); -const path = require("path"); -const fs = require("fs"); - -const pageTemplate = fs - .readFileSync("./static_content/html/page_template.html") - .toString("utf-8"); -generatePagesFromMarkdownFiles({ - globPattern: path.resolve(__dirname, "../") + "/**/*.md", - globOptions: { - ignore: [ - path.resolve(__dirname, "../web/**/*"), - path.resolve(__dirname, "../deps/k/**/*"), - ], - }, - origin: "https://github.com/kframework/evm-semantics/tree/master/", - sourceDirectory: path.resolve(__dirname, "../"), - outputDirectory: path.resolve(__dirname, "./public_content/"), - websiteOrigin: "https://jellopaper.org", - websiteDirectory: path.resolve(__dirname, "./public_content/"), - includeFileBasePath: path.resolve(__dirname, "./static_content/html/"), - template: pageTemplate, -}); diff --git a/web/k-web-theme b/web/k-web-theme deleted file mode 160000 index 7c7a6f40b7..0000000000 --- a/web/k-web-theme +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7c7a6f40b73dacfa280adae8b48a74301f7affe3 diff --git a/web/package-lock.json b/web/package-lock.json deleted file mode 100644 index 78d5db6bb6..0000000000 --- a/web/package-lock.json +++ /dev/null @@ -1,12696 +0,0 @@ -{ - "name": "evm-semantics", - "version": "1.0.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "evm-semantics", - "version": "1.0.1", - "license": "UNLICENSED", - "dependencies": { - "k-web-theme": "file:k-web-theme" - }, - "devDependencies": { - "http-server": "^0.12.3" - } - }, - "k-web-theme": { - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "@parcel/transformer-sass": "2.7.0", - "@shd101wyy/mume": "^0.7.2", - "animate.css": "^4.1.1", - "ansi_up": "^4.0.4", - "bootstrap": "^4.5.3", - "bootstrap-select": "^1.13.18", - "cheerio": "^1.0.0-rc.3", - "clipboard": "^2.0.6", - "express": "^4.17.1", - "font-awesome": "^4.7.0", - "get-port": "^5.1.1", - "glob": "^7.1.6", - "http-server": "^0.12.3", - "imagesloaded": "^4.1.4", - "isotope-layout": "^3.0.6", - "jquery": "^3.5.1", - "jquery-countdown": "^2.2.0", - "jquery-visible": "^1.2.0", - "jquery.animate-number": "0.0.14", - "katex": "^0.13.13", - "magnific-popup": "^1.1.0", - "markdown-it": "^12.0.2", - "markdown-it-anchor": "^6.0.1", - "markdown-it-attrs": "^4.1.0", - "markdown-it-footnote": "^3.0.3", - "owl.carousel": "^2.3.4", - "parcel": "2.7.0", - "popper.js": "^1.16.1", - "prismjs": "^1.22.0", - "sass": "^1.29.0", - "sitemap-generator": "^8.5.1", - "toastr": "^2.1.4", - "twitter-fetcher": "^18.0.4", - "webfonts-generator": "^0.4.0", - "wow.js": "^1.2.2", - "yaml": "^1.10.0" - }, - "devDependencies": {}, - "engines": { - "node": "16" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@lezer/common": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", - "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==" - }, - "node_modules/@lezer/lr": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz", - "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==", - "dependencies": { - "@lezer/common": "^0.15.0" - } - }, - "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz", - "integrity": "sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz", - "integrity": "sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-linux-arm": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz", - "integrity": "sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz", - "integrity": "sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-linux-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz", - "integrity": "sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-win32-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz", - "integrity": "sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@mischnic/json-sourcemap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz", - "integrity": "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==", - "dependencies": { - "@lezer/common": "^0.15.7", - "@lezer/lr": "^0.15.4", - "json5": "^2.2.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", - "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", - "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", - "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", - "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", - "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", - "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@parcel/bundler-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.7.0.tgz", - "integrity": "sha512-PU5MtWWhc+dYI9x8mguYnm9yiG6TkI7niRpxgJgtqAyGHuEyNXVBQQ0X+qyOF4D9LdankBf8uNN18g31IET2Zg==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/cache": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.7.0.tgz", - "integrity": "sha512-JlXNoZXcWzLKdDlfeF3dIj5Vtel5T9vtdBN72PJ+cjC4qNHk4Uwvc5sfOBELuibGN0bVu2bwY9nUgSwCiB1iIA==", - "dependencies": { - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/utils": "2.7.0", - "lmdb": "2.5.2" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.7.0" - } - }, - "node_modules/@parcel/codeframe": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.7.0.tgz", - "integrity": "sha512-UTKx0jejJmmO1dwTHSJuRgrO8N6PMlkxRT6sew8N6NC3Bgv6pu0EbO+RtlWt/jCvzcdLOPdIoTzj4MMZvgcMYg==", - "dependencies": { - "chalk": "^4.1.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/compressor-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.7.0.tgz", - "integrity": "sha512-SCXwnOOQT6EmpusBsYWNQ/RFri+2JnKuE0gMSf2dROl2xbererX45FYzeDplWALCKAdjMNDpFwU+FyMYoVZSCQ==", - "dependencies": { - "@parcel/plugin": "2.7.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/config-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.7.0.tgz", - "integrity": "sha512-ZzsLr97AYrz8c9k6qn3DlqPzifi3vbP7q3ynUrAFxmt0L4+K0H9N508ZkORYmCgaFjLIQ8Y3eWpwCJ0AewPNIg==", - "dependencies": { - "@parcel/bundler-default": "2.7.0", - "@parcel/compressor-raw": "2.7.0", - "@parcel/namer-default": "2.7.0", - "@parcel/optimizer-css": "2.7.0", - "@parcel/optimizer-htmlnano": "2.7.0", - "@parcel/optimizer-image": "2.7.0", - "@parcel/optimizer-svgo": "2.7.0", - "@parcel/optimizer-terser": "2.7.0", - "@parcel/packager-css": "2.7.0", - "@parcel/packager-html": "2.7.0", - "@parcel/packager-js": "2.7.0", - "@parcel/packager-raw": "2.7.0", - "@parcel/packager-svg": "2.7.0", - "@parcel/reporter-dev-server": "2.7.0", - "@parcel/resolver-default": "2.7.0", - "@parcel/runtime-browser-hmr": "2.7.0", - "@parcel/runtime-js": "2.7.0", - "@parcel/runtime-react-refresh": "2.7.0", - "@parcel/runtime-service-worker": "2.7.0", - "@parcel/transformer-babel": "2.7.0", - "@parcel/transformer-css": "2.7.0", - "@parcel/transformer-html": "2.7.0", - "@parcel/transformer-image": "2.7.0", - "@parcel/transformer-js": "2.7.0", - "@parcel/transformer-json": "2.7.0", - "@parcel/transformer-postcss": "2.7.0", - "@parcel/transformer-posthtml": "2.7.0", - "@parcel/transformer-raw": "2.7.0", - "@parcel/transformer-react-refresh-wrap": "2.7.0", - "@parcel/transformer-svg": "2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.7.0" - } - }, - "node_modules/@parcel/core": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.7.0.tgz", - "integrity": "sha512-7yKZUdh314Q/kU/9+27ZYTfcnXS6VYHuG+iiUlIohnvUUybxLqVJhdMU9Q+z2QcPka1IdJWz4K4Xx0y6/4goyg==", - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/graph": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "abortcontroller-polyfill": "^1.1.9", - "base-x": "^3.0.8", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "json5": "^2.2.0", - "msgpackr": "^1.5.4", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/css": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css/-/css-1.13.0.tgz", - "integrity": "sha512-S4QD4Jd+j8QzU5ZZpfg+1cdmEXeJ71wabbV6ff3DJB/05gXWj9Qf/ZZUVtwH3V255Oif6/jcEmcWY4AmFXTyLw==", - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/css-darwin-arm64": "1.13.0", - "@parcel/css-darwin-x64": "1.13.0", - "@parcel/css-linux-arm-gnueabihf": "1.13.0", - "@parcel/css-linux-arm64-gnu": "1.13.0", - "@parcel/css-linux-arm64-musl": "1.13.0", - "@parcel/css-linux-x64-gnu": "1.13.0", - "@parcel/css-linux-x64-musl": "1.13.0", - "@parcel/css-win32-x64-msvc": "1.13.0" - } - }, - "node_modules/@parcel/css-darwin-arm64": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.13.0.tgz", - "integrity": "sha512-GqyAeNa0Bah6WuIgqeBJCBRRcGEqkRMkK1YxgaFBhJiicrJJJ1/aZetzOhwNy6JGpQ8wnKP+p+t6IX2wrklaWw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/css-darwin-x64": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-darwin-x64/-/css-darwin-x64-1.13.0.tgz", - "integrity": "sha512-k7/YBwZ5nDXmyDLCo8Pf7ATqQPo34emv9Tpz2LbYUU3NCO2uhsGzjjsQiYXsAp5QeupPHgDmQeEX6WSvXxo0fQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/css-linux-arm-gnueabihf": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.13.0.tgz", - "integrity": "sha512-mBtDUkF/Gje3a7KMt2edEc9rUdKupTy49bvgGFE9dc+k9ZBQg1L8JK35mUo0Y3Y0jJmRDURY2+LRnxvOWJm3TA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/css-linux-arm64-gnu": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.13.0.tgz", - "integrity": "sha512-h90mKM4SpLLHc1vd06O5SkOae9aR36CfX+NWzgwLI4VKiZGcr+D78gsF7+CDkWrf1hqx5UonguMrqlN/MVdJBQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/css-linux-arm64-musl": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.13.0.tgz", - "integrity": "sha512-FGg6UyHaPwmZ+IFJmSiUzznNUsGYG1aIvKIWIaw2CgH2cUamqLORSnCIBV4LXrpZJ7I8X2845L76hzMvaetkRg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/css-linux-x64-gnu": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.13.0.tgz", - "integrity": "sha512-QJyCKM4ms7OaklffoqleouigDAYATZcCcZkp9AUEt7lqg8i2sWFrInEwWM4QhauwML3gxdKaRVugVZCzMSp3Kg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/css-linux-x64-musl": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.13.0.tgz", - "integrity": "sha512-V2mA8hzZaYRyMIZjEAMaZqrziYTtkjHP/jdS+qnAnHNdvIav3+3Saca3hbSnD2hQuM9iu2wzD3gHoVexlCjTOg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/css-win32-x64-msvc": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.13.0.tgz", - "integrity": "sha512-0WFdh4nS5lkjLnBr0N6O7OatbjUFZdVBSlPDdTdwEYZkl8La+SnmGGMEkrE/jiQ6NjjwgLorN7xainmPWuQdDw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/diagnostic": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.7.0.tgz", - "integrity": "sha512-pdq/cTwVoL0n8yuDCRXFRSQHVWdmmIXPt3R3iT4KtYDYvOrMT2dLPT79IMqQkhYPANW8GuL15n/WxRngfRdkug==", - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/events": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.7.0.tgz", - "integrity": "sha512-kQDwMKgZ1U4M/G17qeDYF6bW5kybluN6ajYPc7mZcrWg+trEI/oXi81GMFaMX0BSUhwhbiN5+/Vb2wiG/Sn6ig==", - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/fs": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.7.0.tgz", - "integrity": "sha512-PU5fo4Hh8y03LZgemgVREttc0wyHQUNmsJCybxTB7EjJie2CqJRumo+DFppArlvdchLwJdc9em03yQV/GNWrEg==", - "dependencies": { - "@parcel/fs-search": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/watcher": "^2.0.0", - "@parcel/workers": "2.7.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.7.0" - } - }, - "node_modules/@parcel/fs-search": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.7.0.tgz", - "integrity": "sha512-K1Hv25bnRpwQVA15RvcRuB8ZhfclnCHA8N8L6w7Ul1ncSJDxCIkIAc5hAubYNNYW3kWjCC2SOaEgFKnbvMllEQ==", - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/graph": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.7.0.tgz", - "integrity": "sha512-Q6E94GS6q45PtsZh+m+gvFRp/N1Qopxhu2sxjcWsGs5iBd6IWn2oYLWOH5iVzEjWuYpW2HkB08lH6J50O63uOA==", - "dependencies": { - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/hash": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.7.0.tgz", - "integrity": "sha512-k6bSKnIlPJMPU3yjQzfgfvF9zuJZGOAlJgzpL4BbWvdbE8BTdjzLcFn0Ujrtud94EgIkiXd22sC2HpCUWoHGdA==", - "dependencies": { - "detect-libc": "^1.0.3", - "xxhash-wasm": "^0.4.2" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/logger": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.7.0.tgz", - "integrity": "sha512-qjMY/bYo38+o+OiIrTRldU9CwL1E7J72t+xkTP8QIcUxLWz5LYR0YbynZUVulmBSfqsykjjxCy4a+8siVr+lPw==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/markdown-ansi": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.7.0.tgz", - "integrity": "sha512-ipOX0D6FVZFEXeb/z8MnTMq2RQEIuaILY90olVIuHEFLHHfOPEn+RK3u13HA1ChF5/9E3cMD79tu6x9JL9Kqag==", - "dependencies": { - "chalk": "^4.1.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/namer-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.7.0.tgz", - "integrity": "sha512-lIKMdsmi//7fepecNDYmJYzBlL91HifPsX03lJCdu1dC6q5fBs+gG0XjKKG7yPnSCw1qH/4m7drzt9+dRZYAHQ==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/node-resolver-core": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.7.0.tgz", - "integrity": "sha512-5UJQHalqMxdhJIs2hhqQzFfQpF7+NAowsRq064lYtiRvcD8wMr3OOQ9wd1iazGpFSl4JKdT7BwDU9/miDJmanQ==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.7.0.tgz", - "integrity": "sha512-IfnOMACqhcAclKyOW9X9JpsknB6OShk9OVvb8EvbDTKHJhQHNNmzE88OkSI/pS3ZVZP9Zj+nWcVHguV+kvDeiQ==", - "dependencies": { - "@parcel/css": "^1.12.2", - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "browserslist": "^4.6.6", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-htmlnano": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.7.0.tgz", - "integrity": "sha512-5QrGdWS5Hi4VXE3nQNrGqugmSXt68YIsWwKRAdarOxzyULSJS3gbCiQOXqIPRJobfZjnSIcdtkyxSiCUe1inIA==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "htmlnano": "^2.0.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "svgo": "^2.4.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-image": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.7.0.tgz", - "integrity": "sha512-EnaXz5UjR67FUu0BEcqZTT9LsbB/iFAkkghCotbnbOuC5QQsloq6tw54TKU3y+R3qsjgUoMtGxPcGfVoXxZXYw==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-svgo": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.7.0.tgz", - "integrity": "sha512-IO1JV4NpfP3V7FrhsqCcV8pDQIHraFi1/ZvEJyssITxjH49Im/txKlwMiQuZZryAPn8Xb8g395Muawuk6AK6sg==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "svgo": "^2.4.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-terser": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.7.0.tgz", - "integrity": "sha512-07VZjIO8xsl2/WmS/qHI8lI/cpu47iS9eRpqwfZEEsdk1cfz50jhWkmFudHBxiHGMfcZ//1+DdaPg9RDBWZtZA==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1", - "terser": "^5.2.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/package-manager": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.7.0.tgz", - "integrity": "sha512-wmfSX1mRrTi8MeA4KrnPk/x7zGUsILCQmTo6lA4gygzAxDbM1pGuyFN8/Kt0y0SFO2lbljARtD/4an5qdotH+Q==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.7.0" - } - }, - "node_modules/@parcel/packager-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.7.0.tgz", - "integrity": "sha512-44nzZwu+ssGuiFmYM6cf/Y4iChiUZ4DUzzpegnGlhXtKJKe4NHntxThJynuRZWKN2AAf48avApDpimg2jW0KDw==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-html": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.7.0.tgz", - "integrity": "sha512-Zgqd7sdcY/UnR370GR0q2ilmEohUDXsO8A1F28QCJzIsR1iCB6KRUT74+pawfQ1IhXZLaaFLLYe0UWcfm0JeXg==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.7.0.tgz", - "integrity": "sha512-wTRdM81PgRVDzWGXdWmqLwguWnTYWzhEDdjXpW2n8uMOu/CjHhMtogk65aaYk3GOnq6OBL/NsrmBiV/zKPj1vA==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "globals": "^13.2.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.7.0.tgz", - "integrity": "sha512-jg2Zp8dI5VpIQlaeahXDCfrPN9m/DKht1NkR9P2CylMAwqCcc1Xc1RRiF0wfwcPZpPMpq1265n+4qnB7rjGBlA==", - "dependencies": { - "@parcel/plugin": "2.7.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-svg": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.7.0.tgz", - "integrity": "sha512-EmJg3HpD6/xxKBjir/CdCKJZwI24iVfBuxRS9LUp3xHAIebOzVh1z6IN+i2Di5+NyRwfOFaLliL4uMa1zwbyCA==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "posthtml": "^0.16.4" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/plugin": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.7.0.tgz", - "integrity": "sha512-qqgx+nnMn6/0lRc4lKbLGmhNtBiT93S2gFNB4Eb4Pfz/SxVYoW+fmml+KdfOSiZffWOAH5L6NwhyD7N8aSikzw==", - "dependencies": { - "@parcel/types": "2.7.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/reporter-cli": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.7.0.tgz", - "integrity": "sha512-80gEODg8cnAmnxGVuaSVDo8JJ54P9AA2bHwSs1cIkHWlJ3BjDQb83H31bBHncJ5Kn5kQ/j+7WjlqHpTCiOR9PA==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "chalk": "^4.1.0", - "term-size": "^2.2.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/reporter-dev-server": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.7.0.tgz", - "integrity": "sha512-ySuou5addK8fGue8aXzo536BaEjMujDrEc1xkp4TasInXHVcA98b+SYX5NAZTGob5CxKvZQ5ylhg77zW30B+iA==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/resolver-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.7.0.tgz", - "integrity": "sha512-v8TvWsbLK7/q7n4gv6OrYNbW18xUx4zKbVMGZb1u4yMhzEH4HFr1D9OeoTq3jk+ximAigds8B6triQbL5exF7A==", - "dependencies": { - "@parcel/node-resolver-core": "2.7.0", - "@parcel/plugin": "2.7.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-browser-hmr": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.7.0.tgz", - "integrity": "sha512-PLbMLdclQeYsi2LkilZVGFV1n3y55G1jaBvby4ekedUZjMw3SWdMY2tDxgSDdFWfLCnYHJXdGUQSzGGi1kPzjA==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.7.0.tgz", - "integrity": "sha512-9/YUZTBNrSN2H6rbz/o1EOM0O7I3ZR/x9IDzxjJBD6Mi+0uCgCD02aedare/SNr1qgnbZZWmhpOzC+YgREcfLA==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-react-refresh": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.7.0.tgz", - "integrity": "sha512-vDKO0rWqRzEpmvoZ4kkYUiSsTxT5NnH904BFPFxKI0wJCl6yEmPuEifmATo73OuYhP6jIP3Qfl1R4TtiDFPJ1Q==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "react-error-overlay": "6.0.9", - "react-refresh": "^0.9.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-service-worker": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.7.0.tgz", - "integrity": "sha512-uD2pAV0yV6+e7JaWH4KVPbG+zRCrxr/OACyS9tIh+Q/R1vRmh8zGM3yhdrcoiZ7tFOnM72vd6xY11eTrUsSVig==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/source-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.0.tgz", - "integrity": "sha512-E7UOEIof2o89LrKk1agSLmwakjigmEdDp1ZaEdsLVEvq63R/bul4Ij5CT+0ZDcijGpl5tnTbQADY9EyYGtjYgQ==", - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": "^12.18.3 || >=14" - } - }, - "node_modules/@parcel/transformer-babel": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.7.0.tgz", - "integrity": "sha512-7iklDXXnKH1530+QbI+e4kIJ+Q1puA1ulRS10db3aUJMj5GnvXGDFwhSZ7+T1ps66QHO7cVO29VlbqiRDarH1Q==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "browserslist": "^4.6.6", - "json5": "^2.2.0", - "nullthrows": "^1.1.1", - "semver": "^5.7.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.7.0.tgz", - "integrity": "sha512-J4EpWK9spQpXyNCmKK8Xnane0xW/1B/EAmfp7Fiv7g+5yUjY4ODf4KUugvE+Eb2gekPkhOKNHermO2KrX0/PFA==", - "dependencies": { - "@parcel/css": "^1.12.2", - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "browserslist": "^4.6.6", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-html": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.7.0.tgz", - "integrity": "sha512-wYJl5rn81W+Rlk9oQwDJcjoVsWVDKyeri84FzmlGXOsg0EYgnqOiG+3MDM8GeZjfuGe5fuoum4eqZeS0WdUHXw==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-image": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.7.0.tgz", - "integrity": "sha512-mhi9/R5/ULhCkL2COVIKhNFoLDiZwQgprdaTJr5fnODggVxEX5o7ebFV6KNLMTEkwZUJWoB1hL0ziI0++DtoFA==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "peerDependencies": { - "@parcel/core": "^2.7.0" - } - }, - "node_modules/@parcel/transformer-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.7.0.tgz", - "integrity": "sha512-mzerR+D4rDomUSIk5RSTa2w+DXBdXUeQrpDO74WCDdpDi1lIl8ppFpqtmU7O6y6p8QsgkmS9b0g/vhcry6CJTA==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "@swc/helpers": "^0.4.2", - "browserslist": "^4.6.6", - "detect-libc": "^1.0.3", - "nullthrows": "^1.1.1", - "regenerator-runtime": "^0.13.7", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.7.0" - } - }, - "node_modules/@parcel/transformer-json": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.7.0.tgz", - "integrity": "sha512-RQjuxBpYOch+kr4a0zi77KJtOLTPYRM7iq4NN80zKnA0r0dwDUCxZBtaj2l0O0o3R4MMJnm+ncP+cB7XR7dZYA==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "json5": "^2.2.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-postcss": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.7.0.tgz", - "integrity": "sha512-b6RskXBWf0MjpC9qjR2dQ1ZdRnlOiKYseG5CEovWCqM218RtdydFKz7jS+5Gxkb6qBtOG7zGPONXdPe+gTILcA==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "clone": "^2.1.1", - "nullthrows": "^1.1.1", - "postcss-value-parser": "^4.2.0", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-posthtml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.7.0.tgz", - "integrity": "sha512-cP8YOiSynWJ1ycmBlhnnHeuQb2cwmklZ+BNyLUktj5p78kDy2de7VjX+dRNRHoW4H9OgEcSF4UEfDVVz5RYIhw==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.7.0.tgz", - "integrity": "sha512-sDnItWCFSDez0izK1i5cgv+kXzZTbcJh4rNpVIgmE1kBLvAz608sqgcCkavb2wVJIvLesxYM+5G4p1CwkDlZ1g==", - "dependencies": { - "@parcel/plugin": "2.7.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-react-refresh-wrap": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.7.0.tgz", - "integrity": "sha512-1vRmIJzyBA1nIiXTAU6tZExq2FvJj/2F0ft6KDw8GYPv0KjmdiPo/PmaZ7JeSVOM6SdXQIQCbTmp1vkMP7DtkA==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "react-refresh": "^0.9.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-sass": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.7.0.tgz", - "integrity": "sha512-6m2T6Y5eQLX7ckIeuOjXXIZbzhyovnl69AvJ2FujoWb2nA55H/kg6ZdbKjo3CfXkOfg9LyG3nVnOE5PMgMpRFQ==", - "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "sass": "^1.38.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-svg": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.7.0.tgz", - "integrity": "sha512-ioER37zceuuE+K6ZrnjCyMUWEnv+63hIAFResc1OXxRhyt+7kzMz9ZqK0Mt6QMLwl1dxhkLmrU41n9IxzKZuSQ==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/types": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.7.0.tgz", - "integrity": "sha512-+dhXVUnseTCpJvBTGMp0V6X13z6O/A/+CUtwEpMGZ8XSmZ4Gk44GvaTiBOp0bJpWG4fvCKp+UmC8PYbrDiiziw==", - "dependencies": { - "@parcel/cache": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/workers": "2.7.0", - "utility-types": "^3.10.0" - } - }, - "node_modules/@parcel/utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.7.0.tgz", - "integrity": "sha512-jNZ5bIGg1r1RDRKi562o4kuVwnz+XJ2Ie3b0Zwrqwvgfj6AbRFIKzDd+h85dWWmcDYzKUbHp11u6VJl1u8Vapg==", - "dependencies": { - "@parcel/codeframe": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/markdown-ansi": "2.7.0", - "@parcel/source-map": "^2.0.0", - "chalk": "^4.1.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.5.tgz", - "integrity": "sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/workers": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.7.0.tgz", - "integrity": "sha512-99VfaOX+89+RaoTSyH9ZQtkMBFZBFMvJmVJ/GeJT6QCd2wtKBStTHlaSnQOkLD/iRjJCNwV2xpZmm8YkTwV+hg==", - "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "chrome-trace-event": "^1.0.2", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.7.0" - } - }, - "node_modules/@shd101wyy/mume": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@shd101wyy/mume/-/mume-0.7.2.tgz", - "integrity": "sha512-FL5QSdy3u5M92cKvqAZFwNl4lffC2zNA5EBf6S2Vbz4rNAoyyD/s/7ejiGYIN/PMfIs9RWIAoFmo5RJYeLzeog==", - "dependencies": { - "babyparse": "^0.4.6", - "cheerio": "1.0.0-rc.3", - "chrome-location": "^1.2.1", - "fs-extra": "^8.0.1", - "imagemagick-cli": "^0.5.0", - "js-yaml": "^3.13.1", - "less": "^3.9.0", - "lodash": "^4.17.15", - "mkdirp": "^1.0.4", - "node-fetch": "^2.6.1", - "puppeteer-core": "1.15.0", - "qiniu": "^7.2.2", - "request": "^2.88.0", - "slash": "^2.0.0", - "temp": "^0.9.0", - "twemoji": "^13.1.0", - "uslug": "^1.0.4", - "vega-loader": "^4.1.0", - "yamljs": "^0.3.0" - } - }, - "node_modules/@shd101wyy/mume/node_modules/cheerio": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", - "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", - "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.1", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@shd101wyy/mume/node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", - "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "node_modules/@shd101wyy/mume/node_modules/css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "engines": { - "node": "*" - } - }, - "node_modules/@shd101wyy/mume/node_modules/dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dependencies": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "node_modules/@shd101wyy/mume/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/@shd101wyy/mume/node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/@shd101wyy/mume/node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/@shd101wyy/mume/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "node_modules/@shd101wyy/mume/node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/@shd101wyy/mume/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@shd101wyy/mume/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/@shd101wyy/mume/node_modules/parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@shd101wyy/mume/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@swc/helpers": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", - "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@swc/helpers/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@types/node": { - "version": "18.7.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz", - "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/abortcontroller-polyfill": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz", - "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/address": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", - "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/agentkeepalive/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agentkeepalive/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/agentkeepalive/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/animate.css": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz", - "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==" - }, - "node_modules/ansi_up": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-4.0.4.tgz", - "integrity": "sha512-vRxC8q6QY918MbehO869biJW4tiunJdjOhi5fpY6NLOliBQlZhOkKgABJKJqH+JZfb/WfjvjN1chLWI6tODerw==", - "engines": { - "node": "*" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ast-types/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "node_modules/babyparse": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babyparse/-/babyparse-0.4.6.tgz", - "integrity": "sha512-fsX2GmTvhpKkmSa0DxJdkw2617HUT+xJ6RYR82w95GjI5A4yWjtOAB/0qcRsXj4VsdkI07jsHWhwqUkVgsZCEw==", - "deprecated": "Deprecated in favour of PapaParse, which now supports Node.js" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/basic-auth": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", - "integrity": "sha512-CtGuTyWf3ig+sgRyC7uP6DM3N+5ur/p8L+FPfsd+BbIfIs74TFfCajZTHnCw6K5dqM0bZEbRIqRy1fAdiUJhTA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/before": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/before/-/before-0.0.1.tgz", - "integrity": "sha512-1J5SWbkoVJH9DTALN8igB4p+nPKZzPrJ/HomqBDLpfUvDXCdjdBmBUcH5McZfur0lftVssVU6BZug5NYh87zTw==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bindings/node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "node_modules/block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", - "dependencies": { - "inherits": "~2.0.0" - }, - "engines": { - "node": "0.4 || >=0.5.8" - } - }, - "node_modules/block-stream2": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", - "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", - "dependencies": { - "readable-stream": "^3.4.0" - } - }, - "node_modules/block-stream2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "node_modules/bootstrap": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", - "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], - "peerDependencies": { - "jquery": "1.9.1 - 3", - "popper.js": "^1.16.1" - } - }, - "node_modules/bootstrap-select": { - "version": "1.13.18", - "resolved": "https://registry.npmjs.org/bootstrap-select/-/bootstrap-select-1.13.18.tgz", - "integrity": "sha512-V1IzK4rxBq5FrJtkzSH6RmFLFBsjx50byFbfAf8jYyXROWs7ZpprGjdHeoyq2HSsHyjJhMMwjsQhRoYAfxCGow==", - "peerDependencies": { - "bootstrap": ">=3.0.0", - "jquery": "1.9.1 - 3" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/bufferstreams": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.3.tgz", - "integrity": "sha512-HaJnVuslRF4g2kSDeyl++AaVizoitCpL9PglzCYwy0uHHyvWerfvEb8jWmYbF1z4kiVFolGomnxSGl+GUQp2jg==", - "dependencies": { - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001384", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001384.tgz", - "integrity": "sha512-BBWt57kqWbc0GYZXb47wTXpmAgqr5LSibPzNjk/AWMdmJMQhLqOl3c/Kd4OAU/tu4NLfYkMx8Tlq3RVBkOBolQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-location": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/chrome-location/-/chrome-location-1.2.1.tgz", - "integrity": "sha512-NPuxEKQ43JlEPjHsgU6HWk4ViLCWf4mlo3dz5s5syPSsq2AaekXnK6qTRwMmXhpTYXAVi4g5ncVnAbD9naz5fw==", - "dependencies": { - "userhome": "^1.0.0", - "which": "^1.0.5" - }, - "bin": { - "chrome-location": "bin.js" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clipboard": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", - "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", - "dependencies": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/copy-to": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", - "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cp-file": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.0.0.tgz", - "integrity": "sha512-OtHMgPugkgwHlbph25wlMKd358lZNhX1Y2viUpPoFmlBPlEiPIRhztYWha11grbGPnlM+urp5saVmwsChCIOEg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "nested-error-stacks": "^2.0.0", - "pify": "^3.0.0", - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cp-file/node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cp-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/crc32": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/crc32/-/crc32-0.2.2.tgz", - "integrity": "sha512-PFZEGbDUeoNbL2GHIEpJRQGheXReDody/9axKTxhXtQqIL443wnNigtVZO9iuCIMPApKZRv7k2xr8euXHqNxQQ==", - "bin": { - "crc32": "bin/runner.js" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/cubic2quad": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.2.1.tgz", - "integrity": "sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==" - }, - "node_modules/d3-array": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", - "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/d3-dsv/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/date-fns": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", - "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==" - }, - "node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/default-user-agent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", - "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==", - "dependencies": { - "os-name": "~1.0.3" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/degenerator": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz", - "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==", - "dependencies": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0", - "vm2": "^3.9.8" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/desandro-matches-selector": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", - "integrity": "sha512-+1q0nXhdzg1IpIJdMKalUwvvskeKnYyEe3shPRwedNcWtnhEKT3ZxvFjzywHDeGcKViIxTCAoOYQWP1qD7VNyg==" - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/digest-header": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/digest-header/-/digest-header-0.0.1.tgz", - "integrity": "sha512-Qi0KOZgRnkQJuvMWbs1ZRRajEnbsMU8xlJI4rHIbPC+skHQ30heO5cIHpUFT4jAvAe+zPtdavLSAxASqoyZ3cg==", - "dependencies": { - "utility": "0.1.11" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/digest-header/node_modules/utility": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz", - "integrity": "sha512-epFsJ71+/yC7MKMX7CM9azP31QBIQhywkiBUj74i/T3Y2TXtEor26QBkat7lGamrrNTr5CBI1imd/8F0Bmqw4g==", - "dependencies": { - "address": ">=0.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ecstatic": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", - "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==", - "deprecated": "This package is unmaintained and deprecated. See the GH Issue 259.", - "dependencies": { - "he": "^1.1.1", - "mime": "^1.6.0", - "minimist": "^1.1.0", - "url-join": "^2.0.5" - }, - "bin": { - "ecstatic": "lib/ecstatic.js" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.233", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.233.tgz", - "integrity": "sha512-ejwIKXTg1wqbmkcRJh9Ur3hFGHFDZDw1POzdsVrB2WZjgRuRMHIQQKNpe64N/qh3ZtH2otEoRoS+s6arAAuAAw==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "dependencies": { - "es6-promise": "^4.0.3" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ev-emitter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", - "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/express/node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", - "dependencies": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - } - }, - "node_modules/extract-zip/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/file-uri-to-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", - "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/fizzy-ui-utils": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", - "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", - "dependencies": { - "desandro-matches-selector": "^2.0.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==", - "engines": { - "node": ">=0.10.3" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/formstream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formstream/-/formstream-1.1.1.tgz", - "integrity": "sha512-yHRxt3qLFnhsKAfhReM4w17jP+U1OlhUjnKPPtonwKbIJO7oBP0MvoxkRUwb8AU9n0MIkYy5X5dK6pQnbj+R2Q==", - "dependencies": { - "destroy": "^1.0.4", - "mime": "^2.5.2", - "pause-stream": "~0.0.11" - } - }, - "node_modules/formstream/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", - "dependencies": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/ftp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "node_modules/ftp/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/ftp/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-size": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", - "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==" - }, - "node_modules/get-uri": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", - "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", - "dependencies": { - "@tootallnate/once": "1", - "data-uri-to-buffer": "3", - "debug": "4", - "file-uri-to-path": "2", - "fs-extra": "^8.1.0", - "ftp": "^0.3.10" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/get-uri/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/get-uri/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", - "dependencies": { - "delegate": "^3.1.2" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" - } - }, - "node_modules/htmlnano": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.2.tgz", - "integrity": "sha512-+ZrQFS4Ub+zd+/fWwfvoYCEGNEa0/zrpys6CyXxvZDwtL7Pl+pOtRkiujyvBQ7Lmfp7/iEPxtOFgxWA16Gkj3w==", - "dependencies": { - "cosmiconfig": "^7.0.1", - "posthtml": "^0.16.5", - "timsort": "^0.3.0" - }, - "peerDependencies": { - "cssnano": "^5.0.11", - "postcss": "^8.3.11", - "purgecss": "^4.0.3", - "relateurl": "^0.2.7", - "srcset": "^5.0.0", - "svgo": "^2.8.0", - "terser": "^5.10.0", - "uncss": "^0.17.3" - }, - "peerDependenciesMeta": { - "cssnano": { - "optional": true - }, - "postcss": { - "optional": true - }, - "purgecss": { - "optional": true - }, - "relateurl": { - "optional": true - }, - "srcset": { - "optional": true - }, - "svgo": { - "optional": true - }, - "terser": { - "optional": true - }, - "uncss": { - "optional": true - } - } - }, - "node_modules/htmlparser2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", - "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "entities": "^4.3.0" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/http-server": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz", - "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==", - "dependencies": { - "basic-auth": "^1.0.3", - "colors": "^1.4.0", - "corser": "^2.0.1", - "ecstatic": "^3.3.2", - "http-proxy": "^1.18.0", - "minimist": "^1.2.5", - "opener": "^1.5.1", - "portfinder": "^1.0.25", - "secure-compare": "3.0.1", - "union": "~0.5.0" - }, - "bin": { - "hs": "bin/http-server", - "http-server": "bin/http-server" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/imagemagick-cli": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/imagemagick-cli/-/imagemagick-cli-0.5.0.tgz", - "integrity": "sha512-rlFbd3MrjysdavK0vUnwUxWvuEBHzXaK3LHVqBUIM6u+noKg5Vv2YljVmu78qEkDNIQ1+AS+17f3mgNMIe/Rlw==", - "dependencies": { - "debug": "^4.1.1" - } - }, - "node_modules/imagemagick-cli/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/imagemagick-cli/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/imagesloaded": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-4.1.4.tgz", - "integrity": "sha512-ltiBVcYpc/TYTF5nolkMNsnREHW+ICvfQ3Yla2Sgr71YFwQ86bDwV9hgpFhFtrGPuwEx5+LqOHIrdXBdoWwwsA==", - "dependencies": { - "ev-emitter": "^1.0.0" - } - }, - "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-json": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", - "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==" - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isotope-layout": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/isotope-layout/-/isotope-layout-3.0.6.tgz", - "integrity": "sha512-z2ZKablhocXhoNyWwzJPFd7u7FWbYbVJA51Nvsqsod8jH2ExGc1SwDsSWKE54e3PhXzqf2yZPhFSq/c2MR1arw==", - "dependencies": { - "desandro-matches-selector": "^2.0.0", - "fizzy-ui-utils": "^2.0.4", - "get-size": "^2.0.0", - "masonry-layout": "^4.1.0", - "outlayer": "^2.1.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "node_modules/jquery": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz", - "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==" - }, - "node_modules/jquery-countdown": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jquery-countdown/-/jquery-countdown-2.2.0.tgz", - "integrity": "sha512-EKjzyaHYSQdOnn/eVvP84l044kDB6w//IR/25CHGyhJfT1Lb9pQdMo75n+MqZWgJpLprfeCyaPo/jaSn6sR5AA==" - }, - "node_modules/jquery-visible": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/jquery-visible/-/jquery-visible-1.2.0.tgz", - "integrity": "sha512-lj6Xqy7GYEwTD1audFYdv7SrBM6z7icPXNvRpS4e15RXtDksjgU7YF7EKrsqF5rCUZA99OqF+d5H8BGdcwMr+w==" - }, - "node_modules/jquery.animate-number": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/jquery.animate-number/-/jquery.animate-number-0.0.14.tgz", - "integrity": "sha512-G4gylrSOPfREFGcoqIaHXM44I1JhfN4aHpAVGfIVvXW/hFUVEzRbMTwvpu5GVzYyuv2ITKQCgsU/IV8BMEliPQ==", - "dependencies": { - "jquery": ">= 1.7.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/k-web-theme": { - "resolved": "k-web-theme", - "link": true - }, - "node_modules/katex": { - "version": "0.13.24", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.13.24.tgz", - "integrity": "sha512-jZxYuKCma3VS5UuxOx/rFV1QyGSl3Uy/i0kTJF3HgQ5xMinCQVF8Zd4bMY/9aI9b9A2pjIBOsjSSm68ykTAr8w==", - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], - "dependencies": { - "commander": "^8.0.0" - }, - "bin": { - "katex": "cli.js" - } - }, - "node_modules/less": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", - "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", - "dependencies": { - "copy-anything": "^2.0.1", - "tslib": "^1.10.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "native-request": "^1.0.5", - "source-map": "~0.6.0" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/lmdb": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.2.tgz", - "integrity": "sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==", - "hasInstallScript": true, - "dependencies": { - "msgpackr": "^1.5.4", - "node-addon-api": "^4.3.0", - "node-gyp-build-optional-packages": "5.0.3", - "ordered-binary": "^1.2.4", - "weak-lru-cache": "^1.2.2" - }, - "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "2.5.2", - "@lmdb/lmdb-darwin-x64": "2.5.2", - "@lmdb/lmdb-linux-arm": "2.5.2", - "@lmdb/lmdb-linux-arm64": "2.5.2", - "@lmdb/lmdb-linux-x64": "2.5.2", - "@lmdb/lmdb-win32-x64": "2.5.2" - } - }, - "node_modules/lmdb/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magnific-popup": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/magnific-popup/-/magnific-popup-1.1.0.tgz", - "integrity": "sha512-ghSa/1TKsOUL6ZlHfcfFCoB9Wms2nqaDdBEPh6QX9jFYQyMkUu7ciU1mrxedWWq4NM2m1C/llhHKLt6GKRYOzg==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-anchor": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-6.0.1.tgz", - "integrity": "sha512-8qX4r5R6AtXla9HKCouEQ40inw69O5jR4VUXlZySsBLxIXlsJ3Yi9JV6JWPU4ZdA8jWTGDDJjJYNLwQ0W4jCag==", - "peerDependencies": { - "markdown-it": "*" - } - }, - "node_modules/markdown-it-attrs": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.4.tgz", - "integrity": "sha512-53Zfv8PTb6rlVFDlD106xcZHKBSsRZKJ2IW/rTxEJBEVbVaoxaNsmRkG0HXfbHl2SK8kaxZ2QKqdthWy/QBwmA==", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "markdown-it": ">= 9.0.0" - } - }, - "node_modules/markdown-it-footnote": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-3.0.3.tgz", - "integrity": "sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w==" - }, - "node_modules/markdown-it/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/masonry-layout": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", - "integrity": "sha512-iGtAlrpHNyxaR19CvKC3npnEcAwszXoyJiI8ARV2ePi7fmYhIud25MHK8Zx4P0LCC4d3TNO9+rFa1KoK1OEOaA==", - "dependencies": { - "get-size": "^2.0.2", - "outlayer": "^2.1.0" - } - }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/microbuffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz", - "integrity": "sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==" - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/mitt": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.3.tgz", - "integrity": "sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA==" - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mockdate": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/mockdate/-/mockdate-3.0.5.tgz", - "integrity": "sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/msgpackr": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.10.1.tgz", - "integrity": "sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==", - "optionalDependencies": { - "msgpackr-extract": "^3.0.2" - } - }, - "node_modules/msgpackr-extract": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", - "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "node-gyp-build-optional-packages": "5.0.7" - }, - "bin": { - "download-msgpackr-prebuilds": "bin/download-prebuilds.js" - }, - "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2" - } - }, - "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", - "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", - "optional": true, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" - } - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nan": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", - "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==" - }, - "node_modules/native-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz", - "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==", - "optional": true - }, - "node_modules/neatequal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/neatequal/-/neatequal-1.0.0.tgz", - "integrity": "sha512-sVt5awO4a4w24QmAthdrCPiVRW3naB8FGLdyadin01BH+6BzNPEBwGrpwCczQvPlULS6uXTItTe1PJ5P0kYm7A==", - "dependencies": { - "varstream": "^0.3.2" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/nested-error-stacks": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", - "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==" - }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dependencies": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-gyp-build-optional-packages": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", - "integrity": "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==", - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" - } - }, - "node_modules/node-gyp/node_modules/semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ordered-binary": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.3.0.tgz", - "integrity": "sha512-knIeYepTI6BDAzGxqFEDGtI/iGqs57H32CInAIxEvAHG46vk1Di0CEpyc1A7iY39B1mfik3g3KLYwOTNnnMHLA==" - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-name": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", - "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==", - "dependencies": { - "osx-release": "^1.0.0", - "win-release": "^1.0.0" - }, - "bin": { - "os-name": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/osx-release": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", - "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==", - "dependencies": { - "minimist": "^1.1.0" - }, - "bin": { - "osx-release": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/outlayer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", - "integrity": "sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==", - "dependencies": { - "ev-emitter": "^1.0.0", - "fizzy-ui-utils": "^2.0.0", - "get-size": "^2.0.2" - } - }, - "node_modules/owl.carousel": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/owl.carousel/-/owl.carousel-2.3.4.tgz", - "integrity": "sha512-JaDss9+feAvEW8KZppPSpllfposEzQiW+Ytt/Xm5t/3CTJ7YVmkh6RkWixoA2yXk2boIwedYxOvrrppIGzru9A==", - "dependencies": { - "jquery": ">=1.8.3" - } - }, - "node_modules/pac-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", - "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4", - "get-uri": "3", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "5", - "pac-resolver": "^5.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "5" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/pac-proxy-agent/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/pac-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pac-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/pac-resolver": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz", - "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==", - "dependencies": { - "degenerator": "^3.0.2", - "ip": "^1.1.5", - "netmask": "^2.0.2" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parcel": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.7.0.tgz", - "integrity": "sha512-pRYwnivwtNP0tip8xYSo4zCB0XhLt7/gJzP1p8OovCqkmFjG9VG+GW9TcAKqMIo0ovEa9tT+/s6gY1Qy+BONGQ==", - "dependencies": { - "@parcel/config-default": "2.7.0", - "@parcel/core": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/reporter-cli": "2.7.0", - "@parcel/reporter-dev-server": "2.7.0", - "@parcel/utils": "2.7.0", - "chalk": "^4.1.0", - "commander": "^7.0.0", - "get-port": "^4.2.0", - "v8-compile-cache": "^2.0.0" - }, - "bin": { - "parcel": "lib/bin.js" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/parcel/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/parcel/node_modules/get-port": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", - "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", - "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", - "dependencies": { - "entities": "^4.3.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", - "dependencies": { - "through": "~2.3" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/posthtml": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", - "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", - "dependencies": { - "posthtml-parser": "^0.11.0", - "posthtml-render": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/posthtml-parser": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", - "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", - "dependencies": { - "htmlparser2": "^7.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/posthtml-parser/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/posthtml-parser/node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/posthtml-parser/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/posthtml-parser/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/posthtml-parser/node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/posthtml-parser/node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "node_modules/posthtml-render": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", - "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", - "dependencies": { - "is-json": "^2.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/posthtml/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/posthtml/node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/posthtml/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/posthtml/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/posthtml/node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/posthtml/node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "node_modules/posthtml/node_modules/posthtml-parser": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", - "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", - "dependencies": { - "htmlparser2": "^7.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", - "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", - "dependencies": { - "agent-base": "^6.0.0", - "debug": "4", - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "lru-cache": "^5.1.1", - "pac-proxy-agent": "^5.0.0", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^5.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/proxy-agent/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/proxy-agent/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "optional": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/puppeteer-core": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-1.15.0.tgz", - "integrity": "sha512-AH82x8Tx0/JkubeF6U12y8SuVB5vFgsw8lt/Ox5MhXaAktREFiotCTq324U2nPtJUnh2A8yJciDnzAmhbHidqQ==", - "hasInstallScript": true, - "dependencies": { - "debug": "^4.1.0", - "extract-zip": "^1.6.6", - "https-proxy-agent": "^2.2.1", - "mime": "^2.0.3", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^2.6.1", - "ws": "^6.1.0" - }, - "engines": { - "node": ">=6.4.0" - } - }, - "node_modules/puppeteer-core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/puppeteer-core/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/puppeteer-core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qiniu": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/qiniu/-/qiniu-7.7.0.tgz", - "integrity": "sha512-p8wZHDXzqCVtlPIygqIzpO6P59e5KcNAOf85oi6O7K5M4xjnwoi6L3e0F8IXgd38nb2PzWOH3XUkSbNAYW0g7Q==", - "dependencies": { - "agentkeepalive": "^4.0.2", - "before": "^0.0.1", - "block-stream2": "^2.0.0", - "crc32": "^0.2.2", - "destroy": "^1.0.4", - "encodeurl": "^1.0.1", - "formstream": "^1.1.0", - "mime": "^2.4.4", - "mockdate": "^3.0.5", - "tunnel-agent": "^0.6.0", - "urllib": "^2.34.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/qiniu/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" - }, - "node_modules/react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/robots-parser": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-2.4.0.tgz", - "integrity": "sha512-oO8f2SI04dJk3pbj2KOMJ4G6QfPAgqcGmrYGmansIcpRewIPT2ljWEt5I+ip6EgiyaLo+RXkkUWw74M25HDkMA==" - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sass": { - "version": "1.54.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.5.tgz", - "integrity": "sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==", - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "node_modules/secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" - }, - "node_modules/select": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simplecrawler": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/simplecrawler/-/simplecrawler-1.1.9.tgz", - "integrity": "sha512-IY5YmeJWvfc1zpy9so1p/EknCqNum3Y9tmnzuLWZqKEwbntGXPGvN0SOtr+XqT4BHjfek2C12g3Tg1yK7Hoh8g==", - "dependencies": { - "async": "^3.1.0", - "iconv-lite": "^0.5.0", - "robots-parser": "^2.1.1", - "urijs": "^1.19.1" - }, - "bin": { - "crawl": "lib/cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/simplecrawler/node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/simplecrawler/node_modules/iconv-lite": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", - "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sitemap-generator": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/sitemap-generator/-/sitemap-generator-8.5.1.tgz", - "integrity": "sha512-k0IWBCFPU1bhNLOquJ07cHfHJNrRB/2adawR0jduSCcA7CuzxfHtfDzgvNDhH0Yv4HOVgte33M58Yun/dcHS3w==", - "dependencies": { - "async": "2.6.1", - "cheerio": "1.0.0-rc.2", - "cp-file": "6.0.0", - "crypto-random-string": "1.0.0", - "date-fns": "1.29.0", - "lodash": "4.17.20", - "mitt": "1.1.3", - "normalize-url": "3.3.0", - "simplecrawler": "1.1.9", - "url-parse": "1.4.7" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sitemap-generator/node_modules/async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dependencies": { - "lodash": "^4.17.10" - } - }, - "node_modules/sitemap-generator/node_modules/cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha512-9LDHQy1jHc/eXMzPN6/oah9Qba4CjdKECC7YYEE/2zge/tsGwt19NQp5NFdfd5Lx6TZlyC5SXNQkG41P9r6XDg==", - "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/sitemap-generator/node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", - "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "node_modules/sitemap-generator/node_modules/css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "engines": { - "node": "*" - } - }, - "node_modules/sitemap-generator/node_modules/dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dependencies": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "node_modules/sitemap-generator/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/sitemap-generator/node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/sitemap-generator/node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/sitemap-generator/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "node_modules/sitemap-generator/node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/sitemap-generator/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - }, - "node_modules/sitemap-generator/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/sitemap-generator/node_modules/parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/sitemap-generator/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/socks-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socks-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/socks/node_modules/ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string.fromcodepoint": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz", - "integrity": "sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==" - }, - "node_modules/string.prototype.codepointat": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", - "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/svg-pathdata": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-1.0.4.tgz", - "integrity": "sha512-afGVCE1xFbmI/uV6XiToTwnHZZtSiW9u8EBxZqRE25pPGk2Z9eEvT5nhAPRUnvUWs9FqwjdJeElkqoWKeW3JGA==", - "dependencies": { - "readable-stream": "~2.0.4" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/svg-pathdata/node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==" - }, - "node_modules/svg-pathdata/node_modules/readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/svg-pathdata/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - }, - "node_modules/svg2ttf": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/svg2ttf/-/svg2ttf-4.3.0.tgz", - "integrity": "sha512-LZ0B7zzHWLWbzLzwaKGHQvPOuxCXLReIb3LSxFSGUy1gMw2Utk6KGNbTmbmRL6Rk1qDSmTixnDrQgnXaL9n0CA==", - "dependencies": { - "argparse": "^1.0.6", - "cubic2quad": "^1.0.0", - "lodash": "^4.17.10", - "microbuffer": "^1.0.0", - "svgpath": "^2.1.5", - "xmldom": "~0.1.22" - }, - "bin": { - "svg2ttf": "svg2ttf.js" - } - }, - "node_modules/svgicons2svgfont": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-5.0.2.tgz", - "integrity": "sha512-N9GG8atI7eKksJpLLDYXHzKcNy698FL+Bdu0sXgwURgVzNmeD35iSCnZhNuPMs4Ve2tg8vqHXI1ZNEWU6vhwjw==", - "dependencies": { - "commander": "^2.9.0", - "neatequal": "^1.0.0", - "readable-stream": "^2.0.4", - "sax": "^1.1.5", - "string.fromcodepoint": "^0.2.1", - "string.prototype.codepointat": "^0.2.0", - "svg-pathdata": "^1.0.4" - }, - "bin": { - "svgicons2svgfont": "bin/svgicons2svgfont.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/svgicons2svgfont/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/svgo/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/svgo/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/svgo/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/svgo/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/svgo/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/svgpath": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.5.0.tgz", - "integrity": "sha512-o/vohwqjUO9nDAh4rcjE3KaW/v//At8UJu2LJMybXidf5QLQLVA4bxH0//4YCsr+1H4Gw1Wi/Jc62ynzSBYidw==" - }, - "node_modules/tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", - "dependencies": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, - "node_modules/temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "dependencies": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", - "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==" - }, - "node_modules/tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toastr": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", - "integrity": "sha512-LIy77F5n+sz4tefMmFOntcJ6HL0Fv3k1TDnNmFZ0bU/GcvIIfy6eG2v7zQmMiYgaalAiUv75ttFrPn5s0gyqlA==", - "dependencies": { - "jquery": ">=1.12.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/topojson-client": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", - "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", - "dependencies": { - "commander": "2" - }, - "bin": { - "topo2geo": "bin/topo2geo", - "topomerge": "bin/topomerge", - "topoquantize": "bin/topoquantize" - } - }, - "node_modules/topojson-client/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/ttf2eot": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ttf2eot/-/ttf2eot-2.0.0.tgz", - "integrity": "sha512-U56aG2Ylw7psLOmakjemAzmpqVgeadwENg9oaDjaZG5NYX4WB6+7h74bNPcc+0BXsoU5A/XWiHabDXyzFOmsxQ==", - "dependencies": { - "argparse": "^1.0.6", - "microbuffer": "^1.0.0" - }, - "bin": { - "ttf2eot": "ttf2eot.js" - } - }, - "node_modules/ttf2woff": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ttf2woff/-/ttf2woff-2.0.2.tgz", - "integrity": "sha512-X68badwBjAy/+itU49scLjXUL094up+rHuYk+YAOTTBYSUMOmLZ7VyhZJuqQESj1gnyLAC2/5V8Euv+mExmyPA==", - "dependencies": { - "argparse": "^1.0.6", - "microbuffer": "^1.0.0", - "pako": "^1.0.0" - }, - "bin": { - "ttf2woff": "ttf2woff.js" - } - }, - "node_modules/ttf2woff2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/ttf2woff2/-/ttf2woff2-2.0.3.tgz", - "integrity": "sha512-HVI+ZVmIbHAxfmbxV/Ahjh20che2WUCs4xWIcCUaD/BLEof/ylYUjnc0DAhpYsAzEJy1kQwkOQD45RLgtWQHfw==", - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.2.1", - "bufferstreams": "^1.1.0", - "nan": "^2.1.0", - "node-gyp": "^3.0.3" - }, - "bin": { - "ttf2woff2": "bin/ttf2woff2.js" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "node_modules/twemoji": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/twemoji/-/twemoji-13.1.1.tgz", - "integrity": "sha512-IIIoq+n1lk1M1+evBKZD3DO0ud02fDQ4ssbgAv8rp3YBWUeNmskjlisFUPPDacQ50XS3bhrd4Kq9Q2gqhxb0dg==", - "dependencies": { - "fs-extra": "^8.0.1", - "jsonfile": "^5.0.0", - "twemoji-parser": "13.1.0", - "universalify": "^0.1.2" - } - }, - "node_modules/twemoji-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/twemoji-parser/-/twemoji-parser-13.1.0.tgz", - "integrity": "sha512-AQOzLJpYlpWMy8n+0ATyKKZzWlZBJN+G0C+5lhX7Ftc2PeEVdUU/7ns2Pn2vVje26AIZ/OHwFoUbdv6YYD/wGg==" - }, - "node_modules/twemoji/node_modules/jsonfile": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-5.0.0.tgz", - "integrity": "sha512-NQRZ5CRo74MhMMC3/3r5g2k4fjodJ/wh8MxjFbCViWKFjxrnudWSY5vomh+23ZaXzAS7J3fBZIR2dV6WbmfM0w==", - "dependencies": { - "universalify": "^0.1.2" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/twitter-fetcher": { - "version": "18.0.4", - "resolved": "https://registry.npmjs.org/twitter-fetcher/-/twitter-fetcher-18.0.4.tgz", - "integrity": "sha512-p6HIJfzYLWKVT1rDGqq6wlbfCoZiRAWC6o6zkhxqkt7s7gNxW04xrCy8mDIjl6GHVGbdN+JQtSpVhs0Mp2PKfg==" - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "node_modules/uglify-js": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", - "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/underscore": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz", - "integrity": "sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==" - }, - "node_modules/unescape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz", - "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", - "dependencies": { - "extend-shallow": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", - "dependencies": { - "qs": "^6.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unorm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", - "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urijs": { - "version": "1.19.11", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", - "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" - }, - "node_modules/url-join": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", - "integrity": "sha512-c2H1fIgpUdwFRIru9HFno5DT73Ok8hg5oOb5AT3ayIgvCRfxgs2jyt5Slw8kEB7j3QUr6yJmMPDT/odjk7jXow==" - }, - "node_modules/url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/urllib": { - "version": "2.38.1", - "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.38.1.tgz", - "integrity": "sha512-1tvjdL74oT9aV4X+SIjE1BXyes5PbfhHKhK4IlhoKhKqk4nD5/lXE90v10WZ02kELWIPI4w7ADneEQ4i7dPjiQ==", - "dependencies": { - "any-promise": "^1.3.0", - "content-type": "^1.0.2", - "debug": "^2.6.9", - "default-user-agent": "^1.0.0", - "digest-header": "^0.0.1", - "ee-first": "~1.1.1", - "formstream": "^1.1.0", - "humanize-ms": "^1.2.0", - "iconv-lite": "^0.4.15", - "ip": "^1.1.5", - "proxy-agent": "^5.0.0", - "pump": "^3.0.0", - "qs": "^6.4.0", - "statuses": "^1.3.1", - "utility": "^1.16.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/urllib/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/urllib/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/urllib/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/userhome": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.0.tgz", - "integrity": "sha512-ayFKY3H+Pwfy4W98yPdtH1VqH4psDeyW8lYYFzfecR9d6hqLpqhecktvYR3SEEXt7vG0S1JEpciI3g94pMErig==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/uslug": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/uslug/-/uslug-1.0.4.tgz", - "integrity": "sha512-Jrbpp/NS3TvIGNjfJT1sn3/BCeykoxR8GbNYW5lF6fUscLkbXFwj1b7m4DvIkHm8k3Qr6Co68lbTmoZTMGk/ow==", - "dependencies": { - "unorm": ">= 1.0.0" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utility": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/utility/-/utility-1.17.0.tgz", - "integrity": "sha512-KdVkF9An/0239BJ4+dqOa7NPrPIOeQE9AGfx0XS16O9DBiHNHRJMoeU5nL6pRGAkgJOqdOu8R4gBRcXnAocJKw==", - "dependencies": { - "copy-to": "^2.0.1", - "escape-html": "^1.0.3", - "mkdirp": "^0.5.1", - "mz": "^2.7.0", - "unescape": "^1.0.1" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - }, - "node_modules/varstream": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/varstream/-/varstream-0.3.2.tgz", - "integrity": "sha512-OpR3Usr9dGZZbDttlTxdviGdxiURI0prX68+DuaN/JfIDbK9ZOmREKM6PgmelsejMnhgjXmEEEgf+E4NbsSqMg==", - "dependencies": { - "readable-stream": "^1.0.33" - }, - "bin": { - "json2varstream": "cli/json2varstream.js", - "varstream2json": "cli/varstream2json.js" - }, - "engines": { - "node": ">=0.10.*" - } - }, - "node_modules/varstream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "node_modules/varstream/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/varstream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vega-format": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", - "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", - "dependencies": { - "d3-array": "^3.1.1", - "d3-format": "^3.1.0", - "d3-time-format": "^4.1.0", - "vega-time": "^2.0.3", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-loader": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", - "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", - "dependencies": { - "d3-dsv": "^3.0.1", - "node-fetch": "^2.6.7", - "topojson-client": "^3.1.0", - "vega-format": "^1.1.0", - "vega-util": "^1.16.0" - } - }, - "node_modules/vega-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", - "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", - "dependencies": { - "d3-array": "^3.1.1", - "d3-time": "^3.0.0", - "vega-util": "^1.15.2" - } - }, - "node_modules/vega-util": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", - "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "node_modules/vm2": { - "version": "3.9.18", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.18.tgz", - "integrity": "sha512-iM7PchOElv6Uv6Q+0Hq7dcgDtWWT6SizYqVcvol+1WQc+E9HlgTCnPozbQNSP3yDV9oXHQOEQu530w2q/BCVZg==", - "dependencies": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" - }, - "bin": { - "vm2": "bin/vm2" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/weak-lru-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", - "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==" - }, - "node_modules/webfonts-generator": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/webfonts-generator/-/webfonts-generator-0.4.0.tgz", - "integrity": "sha512-2tz14d9lDYkNopbogp3cCEo0oQj6tHYo17v6nYlJQT57CwzQy/7Y6a1UzleNK9jSshez2qau6MHcHy/gbDwssQ==", - "dependencies": { - "handlebars": "^4.0.5", - "mkdirp": "^0.5.0", - "q": "^1.1.2", - "svg2ttf": "^4.0.0", - "svgicons2svgfont": "^5.0.0", - "ttf2eot": "^2.0.0", - "ttf2woff": "^2.0.1", - "ttf2woff2": "^2.0.3", - "underscore": "^1.7.0", - "url-join": "^1.1.0" - } - }, - "node_modules/webfonts-generator/node_modules/url-join": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", - "integrity": "sha512-zz1wZk4Lb5PTVwZ3HWDmm8XnlPvmOof6/fjdDPA5yBrUcbtV64U6bV832Zf1BtU2WkBBWaUT46wCs+l0HP5nhg==" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/win-release": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", - "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", - "dependencies": { - "semver": "^5.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "node_modules/wow.js": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/wow.js/-/wow.js-1.2.2.tgz", - "integrity": "sha512-YTW9eiZimHCJDWofsiz2507txaPteUiQD461I/D8533AiRAn3+Y68/1LDuQ3OTgPjagGZLPYKrpoSgjzeQrO6A==", - "deprecated": "deprecated in favour of aos (Animate On Scroll)" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", - "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", - "engines": { - "node": ">=0.1" - } - }, - "node_modules/xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", - "engines": { - "node": "*" - } - }, - "node_modules/xxhash-wasm": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", - "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yamljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", - "dependencies": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - }, - "bin": { - "json2yaml": "bin/json2yaml", - "yaml2json": "bin/yaml2json" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@lezer/common": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", - "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==" - }, - "@lezer/lr": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz", - "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==", - "requires": { - "@lezer/common": "^0.15.0" - } - }, - "@lmdb/lmdb-darwin-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz", - "integrity": "sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==", - "optional": true - }, - "@lmdb/lmdb-darwin-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz", - "integrity": "sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==", - "optional": true - }, - "@lmdb/lmdb-linux-arm": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz", - "integrity": "sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==", - "optional": true - }, - "@lmdb/lmdb-linux-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz", - "integrity": "sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==", - "optional": true - }, - "@lmdb/lmdb-linux-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz", - "integrity": "sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==", - "optional": true - }, - "@lmdb/lmdb-win32-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz", - "integrity": "sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==", - "optional": true - }, - "@mischnic/json-sourcemap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz", - "integrity": "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==", - "requires": { - "@lezer/common": "^0.15.7", - "@lezer/lr": "^0.15.4", - "json5": "^2.2.1" - } - }, - "@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", - "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", - "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", - "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", - "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", - "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", - "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", - "optional": true - }, - "@parcel/bundler-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.7.0.tgz", - "integrity": "sha512-PU5MtWWhc+dYI9x8mguYnm9yiG6TkI7niRpxgJgtqAyGHuEyNXVBQQ0X+qyOF4D9LdankBf8uNN18g31IET2Zg==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/cache": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.7.0.tgz", - "integrity": "sha512-JlXNoZXcWzLKdDlfeF3dIj5Vtel5T9vtdBN72PJ+cjC4qNHk4Uwvc5sfOBELuibGN0bVu2bwY9nUgSwCiB1iIA==", - "requires": { - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/utils": "2.7.0", - "lmdb": "2.5.2" - } - }, - "@parcel/codeframe": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.7.0.tgz", - "integrity": "sha512-UTKx0jejJmmO1dwTHSJuRgrO8N6PMlkxRT6sew8N6NC3Bgv6pu0EbO+RtlWt/jCvzcdLOPdIoTzj4MMZvgcMYg==", - "requires": { - "chalk": "^4.1.0" - } - }, - "@parcel/compressor-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.7.0.tgz", - "integrity": "sha512-SCXwnOOQT6EmpusBsYWNQ/RFri+2JnKuE0gMSf2dROl2xbererX45FYzeDplWALCKAdjMNDpFwU+FyMYoVZSCQ==", - "requires": { - "@parcel/plugin": "2.7.0" - } - }, - "@parcel/config-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.7.0.tgz", - "integrity": "sha512-ZzsLr97AYrz8c9k6qn3DlqPzifi3vbP7q3ynUrAFxmt0L4+K0H9N508ZkORYmCgaFjLIQ8Y3eWpwCJ0AewPNIg==", - "requires": { - "@parcel/bundler-default": "2.7.0", - "@parcel/compressor-raw": "2.7.0", - "@parcel/namer-default": "2.7.0", - "@parcel/optimizer-css": "2.7.0", - "@parcel/optimizer-htmlnano": "2.7.0", - "@parcel/optimizer-image": "2.7.0", - "@parcel/optimizer-svgo": "2.7.0", - "@parcel/optimizer-terser": "2.7.0", - "@parcel/packager-css": "2.7.0", - "@parcel/packager-html": "2.7.0", - "@parcel/packager-js": "2.7.0", - "@parcel/packager-raw": "2.7.0", - "@parcel/packager-svg": "2.7.0", - "@parcel/reporter-dev-server": "2.7.0", - "@parcel/resolver-default": "2.7.0", - "@parcel/runtime-browser-hmr": "2.7.0", - "@parcel/runtime-js": "2.7.0", - "@parcel/runtime-react-refresh": "2.7.0", - "@parcel/runtime-service-worker": "2.7.0", - "@parcel/transformer-babel": "2.7.0", - "@parcel/transformer-css": "2.7.0", - "@parcel/transformer-html": "2.7.0", - "@parcel/transformer-image": "2.7.0", - "@parcel/transformer-js": "2.7.0", - "@parcel/transformer-json": "2.7.0", - "@parcel/transformer-postcss": "2.7.0", - "@parcel/transformer-posthtml": "2.7.0", - "@parcel/transformer-raw": "2.7.0", - "@parcel/transformer-react-refresh-wrap": "2.7.0", - "@parcel/transformer-svg": "2.7.0" - } - }, - "@parcel/core": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.7.0.tgz", - "integrity": "sha512-7yKZUdh314Q/kU/9+27ZYTfcnXS6VYHuG+iiUlIohnvUUybxLqVJhdMU9Q+z2QcPka1IdJWz4K4Xx0y6/4goyg==", - "requires": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/graph": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "abortcontroller-polyfill": "^1.1.9", - "base-x": "^3.0.8", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "json5": "^2.2.0", - "msgpackr": "^1.5.4", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - } - }, - "@parcel/css": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css/-/css-1.13.0.tgz", - "integrity": "sha512-S4QD4Jd+j8QzU5ZZpfg+1cdmEXeJ71wabbV6ff3DJB/05gXWj9Qf/ZZUVtwH3V255Oif6/jcEmcWY4AmFXTyLw==", - "requires": { - "@parcel/css-darwin-arm64": "1.13.0", - "@parcel/css-darwin-x64": "1.13.0", - "@parcel/css-linux-arm-gnueabihf": "1.13.0", - "@parcel/css-linux-arm64-gnu": "1.13.0", - "@parcel/css-linux-arm64-musl": "1.13.0", - "@parcel/css-linux-x64-gnu": "1.13.0", - "@parcel/css-linux-x64-musl": "1.13.0", - "@parcel/css-win32-x64-msvc": "1.13.0", - "detect-libc": "^1.0.3" - } - }, - "@parcel/css-darwin-arm64": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.13.0.tgz", - "integrity": "sha512-GqyAeNa0Bah6WuIgqeBJCBRRcGEqkRMkK1YxgaFBhJiicrJJJ1/aZetzOhwNy6JGpQ8wnKP+p+t6IX2wrklaWw==", - "optional": true - }, - "@parcel/css-darwin-x64": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-darwin-x64/-/css-darwin-x64-1.13.0.tgz", - "integrity": "sha512-k7/YBwZ5nDXmyDLCo8Pf7ATqQPo34emv9Tpz2LbYUU3NCO2uhsGzjjsQiYXsAp5QeupPHgDmQeEX6WSvXxo0fQ==", - "optional": true - }, - "@parcel/css-linux-arm-gnueabihf": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.13.0.tgz", - "integrity": "sha512-mBtDUkF/Gje3a7KMt2edEc9rUdKupTy49bvgGFE9dc+k9ZBQg1L8JK35mUo0Y3Y0jJmRDURY2+LRnxvOWJm3TA==", - "optional": true - }, - "@parcel/css-linux-arm64-gnu": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.13.0.tgz", - "integrity": "sha512-h90mKM4SpLLHc1vd06O5SkOae9aR36CfX+NWzgwLI4VKiZGcr+D78gsF7+CDkWrf1hqx5UonguMrqlN/MVdJBQ==", - "optional": true - }, - "@parcel/css-linux-arm64-musl": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.13.0.tgz", - "integrity": "sha512-FGg6UyHaPwmZ+IFJmSiUzznNUsGYG1aIvKIWIaw2CgH2cUamqLORSnCIBV4LXrpZJ7I8X2845L76hzMvaetkRg==", - "optional": true - }, - "@parcel/css-linux-x64-gnu": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.13.0.tgz", - "integrity": "sha512-QJyCKM4ms7OaklffoqleouigDAYATZcCcZkp9AUEt7lqg8i2sWFrInEwWM4QhauwML3gxdKaRVugVZCzMSp3Kg==", - "optional": true - }, - "@parcel/css-linux-x64-musl": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.13.0.tgz", - "integrity": "sha512-V2mA8hzZaYRyMIZjEAMaZqrziYTtkjHP/jdS+qnAnHNdvIav3+3Saca3hbSnD2hQuM9iu2wzD3gHoVexlCjTOg==", - "optional": true - }, - "@parcel/css-win32-x64-msvc": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.13.0.tgz", - "integrity": "sha512-0WFdh4nS5lkjLnBr0N6O7OatbjUFZdVBSlPDdTdwEYZkl8La+SnmGGMEkrE/jiQ6NjjwgLorN7xainmPWuQdDw==", - "optional": true - }, - "@parcel/diagnostic": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.7.0.tgz", - "integrity": "sha512-pdq/cTwVoL0n8yuDCRXFRSQHVWdmmIXPt3R3iT4KtYDYvOrMT2dLPT79IMqQkhYPANW8GuL15n/WxRngfRdkug==", - "requires": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/events": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.7.0.tgz", - "integrity": "sha512-kQDwMKgZ1U4M/G17qeDYF6bW5kybluN6ajYPc7mZcrWg+trEI/oXi81GMFaMX0BSUhwhbiN5+/Vb2wiG/Sn6ig==" - }, - "@parcel/fs": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.7.0.tgz", - "integrity": "sha512-PU5fo4Hh8y03LZgemgVREttc0wyHQUNmsJCybxTB7EjJie2CqJRumo+DFppArlvdchLwJdc9em03yQV/GNWrEg==", - "requires": { - "@parcel/fs-search": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/watcher": "^2.0.0", - "@parcel/workers": "2.7.0" - } - }, - "@parcel/fs-search": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.7.0.tgz", - "integrity": "sha512-K1Hv25bnRpwQVA15RvcRuB8ZhfclnCHA8N8L6w7Ul1ncSJDxCIkIAc5hAubYNNYW3kWjCC2SOaEgFKnbvMllEQ==", - "requires": { - "detect-libc": "^1.0.3" - } - }, - "@parcel/graph": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.7.0.tgz", - "integrity": "sha512-Q6E94GS6q45PtsZh+m+gvFRp/N1Qopxhu2sxjcWsGs5iBd6IWn2oYLWOH5iVzEjWuYpW2HkB08lH6J50O63uOA==", - "requires": { - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/hash": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.7.0.tgz", - "integrity": "sha512-k6bSKnIlPJMPU3yjQzfgfvF9zuJZGOAlJgzpL4BbWvdbE8BTdjzLcFn0Ujrtud94EgIkiXd22sC2HpCUWoHGdA==", - "requires": { - "detect-libc": "^1.0.3", - "xxhash-wasm": "^0.4.2" - } - }, - "@parcel/logger": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.7.0.tgz", - "integrity": "sha512-qjMY/bYo38+o+OiIrTRldU9CwL1E7J72t+xkTP8QIcUxLWz5LYR0YbynZUVulmBSfqsykjjxCy4a+8siVr+lPw==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0" - } - }, - "@parcel/markdown-ansi": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.7.0.tgz", - "integrity": "sha512-ipOX0D6FVZFEXeb/z8MnTMq2RQEIuaILY90olVIuHEFLHHfOPEn+RK3u13HA1ChF5/9E3cMD79tu6x9JL9Kqag==", - "requires": { - "chalk": "^4.1.0" - } - }, - "@parcel/namer-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.7.0.tgz", - "integrity": "sha512-lIKMdsmi//7fepecNDYmJYzBlL91HifPsX03lJCdu1dC6q5fBs+gG0XjKKG7yPnSCw1qH/4m7drzt9+dRZYAHQ==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/node-resolver-core": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.7.0.tgz", - "integrity": "sha512-5UJQHalqMxdhJIs2hhqQzFfQpF7+NAowsRq064lYtiRvcD8wMr3OOQ9wd1iazGpFSl4JKdT7BwDU9/miDJmanQ==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - } - }, - "@parcel/optimizer-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.7.0.tgz", - "integrity": "sha512-IfnOMACqhcAclKyOW9X9JpsknB6OShk9OVvb8EvbDTKHJhQHNNmzE88OkSI/pS3ZVZP9Zj+nWcVHguV+kvDeiQ==", - "requires": { - "@parcel/css": "^1.12.2", - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "browserslist": "^4.6.6", - "nullthrows": "^1.1.1" - } - }, - "@parcel/optimizer-htmlnano": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.7.0.tgz", - "integrity": "sha512-5QrGdWS5Hi4VXE3nQNrGqugmSXt68YIsWwKRAdarOxzyULSJS3gbCiQOXqIPRJobfZjnSIcdtkyxSiCUe1inIA==", - "requires": { - "@parcel/plugin": "2.7.0", - "htmlnano": "^2.0.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "svgo": "^2.4.0" - } - }, - "@parcel/optimizer-image": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.7.0.tgz", - "integrity": "sha512-EnaXz5UjR67FUu0BEcqZTT9LsbB/iFAkkghCotbnbOuC5QQsloq6tw54TKU3y+R3qsjgUoMtGxPcGfVoXxZXYw==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "detect-libc": "^1.0.3" - } - }, - "@parcel/optimizer-svgo": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.7.0.tgz", - "integrity": "sha512-IO1JV4NpfP3V7FrhsqCcV8pDQIHraFi1/ZvEJyssITxjH49Im/txKlwMiQuZZryAPn8Xb8g395Muawuk6AK6sg==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "svgo": "^2.4.0" - } - }, - "@parcel/optimizer-terser": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.7.0.tgz", - "integrity": "sha512-07VZjIO8xsl2/WmS/qHI8lI/cpu47iS9eRpqwfZEEsdk1cfz50jhWkmFudHBxiHGMfcZ//1+DdaPg9RDBWZtZA==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1", - "terser": "^5.2.0" - } - }, - "@parcel/package-manager": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.7.0.tgz", - "integrity": "sha512-wmfSX1mRrTi8MeA4KrnPk/x7zGUsILCQmTo6lA4gygzAxDbM1pGuyFN8/Kt0y0SFO2lbljARtD/4an5qdotH+Q==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "semver": "^5.7.1" - } - }, - "@parcel/packager-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.7.0.tgz", - "integrity": "sha512-44nzZwu+ssGuiFmYM6cf/Y4iChiUZ4DUzzpegnGlhXtKJKe4NHntxThJynuRZWKN2AAf48avApDpimg2jW0KDw==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/packager-html": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.7.0.tgz", - "integrity": "sha512-Zgqd7sdcY/UnR370GR0q2ilmEohUDXsO8A1F28QCJzIsR1iCB6KRUT74+pawfQ1IhXZLaaFLLYe0UWcfm0JeXg==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5" - } - }, - "@parcel/packager-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.7.0.tgz", - "integrity": "sha512-wTRdM81PgRVDzWGXdWmqLwguWnTYWzhEDdjXpW2n8uMOu/CjHhMtogk65aaYk3GOnq6OBL/NsrmBiV/zKPj1vA==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "globals": "^13.2.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/packager-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.7.0.tgz", - "integrity": "sha512-jg2Zp8dI5VpIQlaeahXDCfrPN9m/DKht1NkR9P2CylMAwqCcc1Xc1RRiF0wfwcPZpPMpq1265n+4qnB7rjGBlA==", - "requires": { - "@parcel/plugin": "2.7.0" - } - }, - "@parcel/packager-svg": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.7.0.tgz", - "integrity": "sha512-EmJg3HpD6/xxKBjir/CdCKJZwI24iVfBuxRS9LUp3xHAIebOzVh1z6IN+i2Di5+NyRwfOFaLliL4uMa1zwbyCA==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "posthtml": "^0.16.4" - } - }, - "@parcel/plugin": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.7.0.tgz", - "integrity": "sha512-qqgx+nnMn6/0lRc4lKbLGmhNtBiT93S2gFNB4Eb4Pfz/SxVYoW+fmml+KdfOSiZffWOAH5L6NwhyD7N8aSikzw==", - "requires": { - "@parcel/types": "2.7.0" - } - }, - "@parcel/reporter-cli": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.7.0.tgz", - "integrity": "sha512-80gEODg8cnAmnxGVuaSVDo8JJ54P9AA2bHwSs1cIkHWlJ3BjDQb83H31bBHncJ5Kn5kQ/j+7WjlqHpTCiOR9PA==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "chalk": "^4.1.0", - "term-size": "^2.2.1" - } - }, - "@parcel/reporter-dev-server": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.7.0.tgz", - "integrity": "sha512-ySuou5addK8fGue8aXzo536BaEjMujDrEc1xkp4TasInXHVcA98b+SYX5NAZTGob5CxKvZQ5ylhg77zW30B+iA==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0" - } - }, - "@parcel/resolver-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.7.0.tgz", - "integrity": "sha512-v8TvWsbLK7/q7n4gv6OrYNbW18xUx4zKbVMGZb1u4yMhzEH4HFr1D9OeoTq3jk+ximAigds8B6triQbL5exF7A==", - "requires": { - "@parcel/node-resolver-core": "2.7.0", - "@parcel/plugin": "2.7.0" - } - }, - "@parcel/runtime-browser-hmr": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.7.0.tgz", - "integrity": "sha512-PLbMLdclQeYsi2LkilZVGFV1n3y55G1jaBvby4ekedUZjMw3SWdMY2tDxgSDdFWfLCnYHJXdGUQSzGGi1kPzjA==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0" - } - }, - "@parcel/runtime-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.7.0.tgz", - "integrity": "sha512-9/YUZTBNrSN2H6rbz/o1EOM0O7I3ZR/x9IDzxjJBD6Mi+0uCgCD02aedare/SNr1qgnbZZWmhpOzC+YgREcfLA==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/runtime-react-refresh": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.7.0.tgz", - "integrity": "sha512-vDKO0rWqRzEpmvoZ4kkYUiSsTxT5NnH904BFPFxKI0wJCl6yEmPuEifmATo73OuYhP6jIP3Qfl1R4TtiDFPJ1Q==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "react-error-overlay": "6.0.9", - "react-refresh": "^0.9.0" - } - }, - "@parcel/runtime-service-worker": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.7.0.tgz", - "integrity": "sha512-uD2pAV0yV6+e7JaWH4KVPbG+zRCrxr/OACyS9tIh+Q/R1vRmh8zGM3yhdrcoiZ7tFOnM72vd6xY11eTrUsSVig==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/source-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.0.tgz", - "integrity": "sha512-E7UOEIof2o89LrKk1agSLmwakjigmEdDp1ZaEdsLVEvq63R/bul4Ij5CT+0ZDcijGpl5tnTbQADY9EyYGtjYgQ==", - "requires": { - "detect-libc": "^1.0.3" - } - }, - "@parcel/transformer-babel": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.7.0.tgz", - "integrity": "sha512-7iklDXXnKH1530+QbI+e4kIJ+Q1puA1ulRS10db3aUJMj5GnvXGDFwhSZ7+T1ps66QHO7cVO29VlbqiRDarH1Q==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "browserslist": "^4.6.6", - "json5": "^2.2.0", - "nullthrows": "^1.1.1", - "semver": "^5.7.0" - } - }, - "@parcel/transformer-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.7.0.tgz", - "integrity": "sha512-J4EpWK9spQpXyNCmKK8Xnane0xW/1B/EAmfp7Fiv7g+5yUjY4ODf4KUugvE+Eb2gekPkhOKNHermO2KrX0/PFA==", - "requires": { - "@parcel/css": "^1.12.2", - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "browserslist": "^4.6.6", - "nullthrows": "^1.1.1" - } - }, - "@parcel/transformer-html": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.7.0.tgz", - "integrity": "sha512-wYJl5rn81W+Rlk9oQwDJcjoVsWVDKyeri84FzmlGXOsg0EYgnqOiG+3MDM8GeZjfuGe5fuoum4eqZeS0WdUHXw==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - } - }, - "@parcel/transformer-image": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.7.0.tgz", - "integrity": "sha512-mhi9/R5/ULhCkL2COVIKhNFoLDiZwQgprdaTJr5fnODggVxEX5o7ebFV6KNLMTEkwZUJWoB1hL0ziI0++DtoFA==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/transformer-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.7.0.tgz", - "integrity": "sha512-mzerR+D4rDomUSIk5RSTa2w+DXBdXUeQrpDO74WCDdpDi1lIl8ppFpqtmU7O6y6p8QsgkmS9b0g/vhcry6CJTA==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "@swc/helpers": "^0.4.2", - "browserslist": "^4.6.6", - "detect-libc": "^1.0.3", - "nullthrows": "^1.1.1", - "regenerator-runtime": "^0.13.7", - "semver": "^5.7.1" - } - }, - "@parcel/transformer-json": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.7.0.tgz", - "integrity": "sha512-RQjuxBpYOch+kr4a0zi77KJtOLTPYRM7iq4NN80zKnA0r0dwDUCxZBtaj2l0O0o3R4MMJnm+ncP+cB7XR7dZYA==", - "requires": { - "@parcel/plugin": "2.7.0", - "json5": "^2.2.0" - } - }, - "@parcel/transformer-postcss": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.7.0.tgz", - "integrity": "sha512-b6RskXBWf0MjpC9qjR2dQ1ZdRnlOiKYseG5CEovWCqM218RtdydFKz7jS+5Gxkb6qBtOG7zGPONXdPe+gTILcA==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "clone": "^2.1.1", - "nullthrows": "^1.1.1", - "postcss-value-parser": "^4.2.0", - "semver": "^5.7.1" - } - }, - "@parcel/transformer-posthtml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.7.0.tgz", - "integrity": "sha512-cP8YOiSynWJ1ycmBlhnnHeuQb2cwmklZ+BNyLUktj5p78kDy2de7VjX+dRNRHoW4H9OgEcSF4UEfDVVz5RYIhw==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - } - }, - "@parcel/transformer-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.7.0.tgz", - "integrity": "sha512-sDnItWCFSDez0izK1i5cgv+kXzZTbcJh4rNpVIgmE1kBLvAz608sqgcCkavb2wVJIvLesxYM+5G4p1CwkDlZ1g==", - "requires": { - "@parcel/plugin": "2.7.0" - } - }, - "@parcel/transformer-react-refresh-wrap": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.7.0.tgz", - "integrity": "sha512-1vRmIJzyBA1nIiXTAU6tZExq2FvJj/2F0ft6KDw8GYPv0KjmdiPo/PmaZ7JeSVOM6SdXQIQCbTmp1vkMP7DtkA==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "react-refresh": "^0.9.0" - } - }, - "@parcel/transformer-sass": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.7.0.tgz", - "integrity": "sha512-6m2T6Y5eQLX7ckIeuOjXXIZbzhyovnl69AvJ2FujoWb2nA55H/kg6ZdbKjo3CfXkOfg9LyG3nVnOE5PMgMpRFQ==", - "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "sass": "^1.38.0" - } - }, - "@parcel/transformer-svg": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.7.0.tgz", - "integrity": "sha512-ioER37zceuuE+K6ZrnjCyMUWEnv+63hIAFResc1OXxRhyt+7kzMz9ZqK0Mt6QMLwl1dxhkLmrU41n9IxzKZuSQ==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - } - }, - "@parcel/types": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.7.0.tgz", - "integrity": "sha512-+dhXVUnseTCpJvBTGMp0V6X13z6O/A/+CUtwEpMGZ8XSmZ4Gk44GvaTiBOp0bJpWG4fvCKp+UmC8PYbrDiiziw==", - "requires": { - "@parcel/cache": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/workers": "2.7.0", - "utility-types": "^3.10.0" - } - }, - "@parcel/utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.7.0.tgz", - "integrity": "sha512-jNZ5bIGg1r1RDRKi562o4kuVwnz+XJ2Ie3b0Zwrqwvgfj6AbRFIKzDd+h85dWWmcDYzKUbHp11u6VJl1u8Vapg==", - "requires": { - "@parcel/codeframe": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/markdown-ansi": "2.7.0", - "@parcel/source-map": "^2.0.0", - "chalk": "^4.1.0" - } - }, - "@parcel/watcher": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.5.tgz", - "integrity": "sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw==", - "requires": { - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" - } - }, - "@parcel/workers": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.7.0.tgz", - "integrity": "sha512-99VfaOX+89+RaoTSyH9ZQtkMBFZBFMvJmVJ/GeJT6QCd2wtKBStTHlaSnQOkLD/iRjJCNwV2xpZmm8YkTwV+hg==", - "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "chrome-trace-event": "^1.0.2", - "nullthrows": "^1.1.1" - } - }, - "@shd101wyy/mume": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@shd101wyy/mume/-/mume-0.7.2.tgz", - "integrity": "sha512-FL5QSdy3u5M92cKvqAZFwNl4lffC2zNA5EBf6S2Vbz4rNAoyyD/s/7ejiGYIN/PMfIs9RWIAoFmo5RJYeLzeog==", - "requires": { - "babyparse": "^0.4.6", - "cheerio": "1.0.0-rc.3", - "chrome-location": "^1.2.1", - "fs-extra": "^8.0.1", - "imagemagick-cli": "^0.5.0", - "js-yaml": "^3.13.1", - "less": "^3.9.0", - "lodash": "^4.17.15", - "mkdirp": "^1.0.4", - "node-fetch": "^2.6.1", - "puppeteer-core": "1.15.0", - "qiniu": "^7.2.2", - "request": "^2.88.0", - "slash": "^2.0.0", - "temp": "^0.9.0", - "twemoji": "^13.1.0", - "uslug": "^1.0.4", - "vega-loader": "^4.1.0", - "yamljs": "^0.3.0" - }, - "dependencies": { - "cheerio": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", - "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.1", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "requires": { - "@types/node": "*" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "@swc/helpers": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", - "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", - "requires": { - "tslib": "^2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" - }, - "@types/node": { - "version": "18.7.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz", - "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "abortcontroller-polyfill": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz", - "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==" - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - }, - "address": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", - "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==" - }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "animate.css": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz", - "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==" - }, - "ansi_up": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-4.0.4.tgz", - "integrity": "sha512-vRxC8q6QY918MbehO869biJW4tiunJdjOhi5fpY6NLOliBQlZhOkKgABJKJqH+JZfb/WfjvjN1chLWI6tODerw==" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - }, - "ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "requires": { - "tslib": "^2.0.1" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } - } - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "requires": { - "lodash": "^4.17.14" - } - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "babyparse": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babyparse/-/babyparse-0.4.6.tgz", - "integrity": "sha512-fsX2GmTvhpKkmSa0DxJdkw2617HUT+xJ6RYR82w95GjI5A4yWjtOAB/0qcRsXj4VsdkI07jsHWhwqUkVgsZCEw==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "basic-auth": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", - "integrity": "sha512-CtGuTyWf3ig+sgRyC7uP6DM3N+5ur/p8L+FPfsd+BbIfIs74TFfCajZTHnCw6K5dqM0bZEbRIqRy1fAdiUJhTA==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "before": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/before/-/before-0.0.1.tgz", - "integrity": "sha512-1J5SWbkoVJH9DTALN8igB4p+nPKZzPrJ/HomqBDLpfUvDXCdjdBmBUcH5McZfur0lftVssVU6BZug5NYh87zTw==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "requires": { - "file-uri-to-path": "1.0.0" - }, - "dependencies": { - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - } - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", - "requires": { - "inherits": "~2.0.0" - } - }, - "block-stream2": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", - "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", - "requires": { - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "bootstrap": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", - "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", - "requires": {} - }, - "bootstrap-select": { - "version": "1.13.18", - "resolved": "https://registry.npmjs.org/bootstrap-select/-/bootstrap-select-1.13.18.tgz", - "integrity": "sha512-V1IzK4rxBq5FrJtkzSH6RmFLFBsjx50byFbfAf8jYyXROWs7ZpprGjdHeoyq2HSsHyjJhMMwjsQhRoYAfxCGow==", - "requires": {} - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "bufferstreams": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.3.tgz", - "integrity": "sha512-HaJnVuslRF4g2kSDeyl++AaVizoitCpL9PglzCYwy0uHHyvWerfvEb8jWmYbF1z4kiVFolGomnxSGl+GUQp2jg==", - "requires": { - "readable-stream": "^2.0.2" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "caniuse-lite": { - "version": "1.0.30001384", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001384.tgz", - "integrity": "sha512-BBWt57kqWbc0GYZXb47wTXpmAgqr5LSibPzNjk/AWMdmJMQhLqOl3c/Kd4OAU/tu4NLfYkMx8Tlq3RVBkOBolQ==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "requires": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - } - }, - "cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "requires": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chrome-location": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/chrome-location/-/chrome-location-1.2.1.tgz", - "integrity": "sha512-NPuxEKQ43JlEPjHsgU6HWk4ViLCWf4mlo3dz5s5syPSsq2AaekXnK6qTRwMmXhpTYXAVi4g5ncVnAbD9naz5fw==", - "requires": { - "userhome": "^1.0.0", - "which": "^1.0.5" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "clipboard": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", - "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", - "requires": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "requires": { - "is-what": "^3.14.1" - } - }, - "copy-to": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", - "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==" - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "cp-file": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.0.0.tgz", - "integrity": "sha512-OtHMgPugkgwHlbph25wlMKd358lZNhX1Y2viUpPoFmlBPlEiPIRhztYWha11grbGPnlM+urp5saVmwsChCIOEg==", - "requires": { - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "nested-error-stacks": "^2.0.0", - "pify": "^3.0.0", - "safe-buffer": "^5.0.1" - }, - "dependencies": { - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - } - } - }, - "crc32": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/crc32/-/crc32-0.2.2.tgz", - "integrity": "sha512-PFZEGbDUeoNbL2GHIEpJRQGheXReDody/9axKTxhXtQqIL443wnNigtVZO9iuCIMPApKZRv7k2xr8euXHqNxQQ==" - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==" - }, - "css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "requires": { - "css-tree": "^1.1.2" - } - }, - "cubic2quad": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.2.1.tgz", - "integrity": "sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==" - }, - "d3-array": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", - "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", - "requires": { - "internmap": "1 - 2" - } - }, - "d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "requires": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" - }, - "d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", - "requires": { - "d3-array": "2 - 3" - } - }, - "d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "requires": { - "d3-time": "1 - 3" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==" - }, - "date-fns": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", - "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==" - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "default-user-agent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", - "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==", - "requires": { - "os-name": "~1.0.3" - } - }, - "degenerator": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz", - "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==", - "requires": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0", - "vm2": "^3.9.8" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "delegate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "desandro-matches-selector": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", - "integrity": "sha512-+1q0nXhdzg1IpIJdMKalUwvvskeKnYyEe3shPRwedNcWtnhEKT3ZxvFjzywHDeGcKViIxTCAoOYQWP1qD7VNyg==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" - }, - "digest-header": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/digest-header/-/digest-header-0.0.1.tgz", - "integrity": "sha512-Qi0KOZgRnkQJuvMWbs1ZRRajEnbsMU8xlJI4rHIbPC+skHQ30heO5cIHpUFT4jAvAe+zPtdavLSAxASqoyZ3cg==", - "requires": { - "utility": "0.1.11" - }, - "dependencies": { - "utility": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz", - "integrity": "sha512-epFsJ71+/yC7MKMX7CM9azP31QBIQhywkiBUj74i/T3Y2TXtEor26QBkat7lGamrrNTr5CBI1imd/8F0Bmqw4g==", - "requires": { - "address": ">=0.0.1" - } - } - } - }, - "dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "requires": { - "domelementtype": "^2.3.0" - } - }, - "domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" - } - }, - "dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==" - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ecstatic": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", - "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==", - "requires": { - "he": "^1.1.1", - "mime": "^1.6.0", - "minimist": "^1.1.0", - "url-join": "^2.0.5" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "electron-to-chromium": { - "version": "1.4.233", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.233.tgz", - "integrity": "sha512-ejwIKXTg1wqbmkcRJh9Ur3hFGHFDZDw1POzdsVrB2WZjgRuRMHIQQKNpe64N/qh3ZtH2otEoRoS+s6arAAuAAw==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==" - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "optional": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "requires": { - "es6-promise": "^4.0.3" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "ev-emitter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", - "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", - "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "requires": { - "pend": "~1.2.0" - } - }, - "file-uri-to-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", - "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "fizzy-ui-utils": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", - "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", - "requires": { - "desandro-matches-selector": "^2.0.0" - } - }, - "follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" - }, - "font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "formstream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formstream/-/formstream-1.1.1.tgz", - "integrity": "sha512-yHRxt3qLFnhsKAfhReM4w17jP+U1OlhUjnKPPtonwKbIJO7oBP0MvoxkRUwb8AU9n0MIkYy5X5dK6pQnbj+R2Q==", - "requires": { - "destroy": "^1.0.4", - "mime": "^2.5.2", - "pause-stream": "~0.0.11" - }, - "dependencies": { - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - } - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" - }, - "get-size": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", - "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==" - }, - "get-uri": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", - "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", - "requires": { - "@tootallnate/once": "1", - "data-uri-to-buffer": "3", - "debug": "4", - "file-uri-to-path": "2", - "fs-extra": "^8.1.0", - "ftp": "^0.3.10" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", - "requires": { - "delegate": "^3.1.2" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "htmlnano": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.2.tgz", - "integrity": "sha512-+ZrQFS4Ub+zd+/fWwfvoYCEGNEa0/zrpys6CyXxvZDwtL7Pl+pOtRkiujyvBQ7Lmfp7/iEPxtOFgxWA16Gkj3w==", - "requires": { - "cosmiconfig": "^7.0.1", - "posthtml": "^0.16.5", - "timsort": "^0.3.0" - } - }, - "htmlparser2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", - "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "entities": "^4.3.0" - } - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "http-server": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz", - "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==", - "requires": { - "basic-auth": "^1.0.3", - "colors": "^1.4.0", - "corser": "^2.0.1", - "ecstatic": "^3.3.2", - "http-proxy": "^1.18.0", - "minimist": "^1.2.5", - "opener": "^1.5.1", - "portfinder": "^1.0.25", - "secure-compare": "3.0.1", - "union": "~0.5.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "optional": true - }, - "imagemagick-cli": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/imagemagick-cli/-/imagemagick-cli-0.5.0.tgz", - "integrity": "sha512-rlFbd3MrjysdavK0vUnwUxWvuEBHzXaK3LHVqBUIM6u+noKg5Vv2YljVmu78qEkDNIQ1+AS+17f3mgNMIe/Rlw==", - "requires": { - "debug": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "imagesloaded": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-4.1.4.tgz", - "integrity": "sha512-ltiBVcYpc/TYTF5nolkMNsnREHW+ICvfQ3Yla2Sgr71YFwQ86bDwV9hgpFhFtrGPuwEx5+LqOHIrdXBdoWwwsA==", - "requires": { - "ev-emitter": "^1.0.0" - } - }, - "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" - }, - "ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-json": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", - "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "isotope-layout": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/isotope-layout/-/isotope-layout-3.0.6.tgz", - "integrity": "sha512-z2ZKablhocXhoNyWwzJPFd7u7FWbYbVJA51Nvsqsod8jH2ExGc1SwDsSWKE54e3PhXzqf2yZPhFSq/c2MR1arw==", - "requires": { - "desandro-matches-selector": "^2.0.0", - "fizzy-ui-utils": "^2.0.4", - "get-size": "^2.0.0", - "masonry-layout": "^4.1.0", - "outlayer": "^2.1.0" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "jquery": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz", - "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==" - }, - "jquery-countdown": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jquery-countdown/-/jquery-countdown-2.2.0.tgz", - "integrity": "sha512-EKjzyaHYSQdOnn/eVvP84l044kDB6w//IR/25CHGyhJfT1Lb9pQdMo75n+MqZWgJpLprfeCyaPo/jaSn6sR5AA==" - }, - "jquery-visible": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/jquery-visible/-/jquery-visible-1.2.0.tgz", - "integrity": "sha512-lj6Xqy7GYEwTD1audFYdv7SrBM6z7icPXNvRpS4e15RXtDksjgU7YF7EKrsqF5rCUZA99OqF+d5H8BGdcwMr+w==" - }, - "jquery.animate-number": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/jquery.animate-number/-/jquery.animate-number-0.0.14.tgz", - "integrity": "sha512-G4gylrSOPfREFGcoqIaHXM44I1JhfN4aHpAVGfIVvXW/hFUVEzRbMTwvpu5GVzYyuv2ITKQCgsU/IV8BMEliPQ==", - "requires": { - "jquery": ">= 1.7.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "k-web-theme": { - "version": "file:k-web-theme", - "requires": { - "@parcel/transformer-sass": "2.7.0", - "@shd101wyy/mume": "^0.7.2", - "animate.css": "^4.1.1", - "ansi_up": "^4.0.4", - "bootstrap": "^4.5.3", - "bootstrap-select": "^1.13.18", - "cheerio": "^1.0.0-rc.3", - "clipboard": "^2.0.6", - "express": "^4.17.1", - "font-awesome": "^4.7.0", - "get-port": "^5.1.1", - "glob": "^7.1.6", - "http-server": "^0.12.3", - "imagesloaded": "^4.1.4", - "isotope-layout": "^3.0.6", - "jquery": "^3.5.1", - "jquery-countdown": "^2.2.0", - "jquery-visible": "^1.2.0", - "jquery.animate-number": "0.0.14", - "katex": "^0.13.13", - "magnific-popup": "^1.1.0", - "markdown-it": "^12.0.2", - "markdown-it-anchor": "^6.0.1", - "markdown-it-attrs": "^4.1.0", - "markdown-it-footnote": "^3.0.3", - "owl.carousel": "^2.3.4", - "parcel": "2.7.0", - "popper.js": "^1.16.1", - "prismjs": "^1.22.0", - "sass": "^1.29.0", - "sitemap-generator": "^8.5.1", - "toastr": "^2.1.4", - "twitter-fetcher": "^18.0.4", - "webfonts-generator": "^0.4.0", - "wow.js": "^1.2.2", - "yaml": "^1.10.0" - } - }, - "katex": { - "version": "0.13.24", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.13.24.tgz", - "integrity": "sha512-jZxYuKCma3VS5UuxOx/rFV1QyGSl3Uy/i0kTJF3HgQ5xMinCQVF8Zd4bMY/9aI9b9A2pjIBOsjSSm68ykTAr8w==", - "requires": { - "commander": "^8.0.0" - } - }, - "less": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", - "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", - "requires": { - "copy-anything": "^2.0.1", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "native-request": "^1.0.5", - "source-map": "~0.6.0", - "tslib": "^1.10.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "lmdb": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.2.tgz", - "integrity": "sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==", - "requires": { - "@lmdb/lmdb-darwin-arm64": "2.5.2", - "@lmdb/lmdb-darwin-x64": "2.5.2", - "@lmdb/lmdb-linux-arm": "2.5.2", - "@lmdb/lmdb-linux-arm64": "2.5.2", - "@lmdb/lmdb-linux-x64": "2.5.2", - "@lmdb/lmdb-win32-x64": "2.5.2", - "msgpackr": "^1.5.4", - "node-addon-api": "^4.3.0", - "node-gyp-build-optional-packages": "5.0.3", - "ordered-binary": "^1.2.4", - "weak-lru-cache": "^1.2.2" - }, - "dependencies": { - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - } - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - } - }, - "magnific-popup": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/magnific-popup/-/magnific-popup-1.1.0.tgz", - "integrity": "sha512-ghSa/1TKsOUL6ZlHfcfFCoB9Wms2nqaDdBEPh6QX9jFYQyMkUu7ciU1mrxedWWq4NM2m1C/llhHKLt6GKRYOzg==" - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "requires": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" - } - } - }, - "markdown-it-anchor": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-6.0.1.tgz", - "integrity": "sha512-8qX4r5R6AtXla9HKCouEQ40inw69O5jR4VUXlZySsBLxIXlsJ3Yi9JV6JWPU4ZdA8jWTGDDJjJYNLwQ0W4jCag==", - "requires": {} - }, - "markdown-it-attrs": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.4.tgz", - "integrity": "sha512-53Zfv8PTb6rlVFDlD106xcZHKBSsRZKJ2IW/rTxEJBEVbVaoxaNsmRkG0HXfbHl2SK8kaxZ2QKqdthWy/QBwmA==", - "requires": {} - }, - "markdown-it-footnote": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-3.0.3.tgz", - "integrity": "sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w==" - }, - "masonry-layout": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", - "integrity": "sha512-iGtAlrpHNyxaR19CvKC3npnEcAwszXoyJiI8ARV2ePi7fmYhIud25MHK8Zx4P0LCC4d3TNO9+rFa1KoK1OEOaA==", - "requires": { - "get-size": "^2.0.2", - "outlayer": "^2.1.0" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "microbuffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz", - "integrity": "sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "mitt": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.3.tgz", - "integrity": "sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA==" - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "mockdate": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/mockdate/-/mockdate-3.0.5.tgz", - "integrity": "sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==" - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "msgpackr": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.10.1.tgz", - "integrity": "sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==", - "requires": { - "msgpackr-extract": "^3.0.2" - } - }, - "msgpackr-extract": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", - "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", - "optional": true, - "requires": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2", - "node-gyp-build-optional-packages": "5.0.7" - }, - "dependencies": { - "node-gyp-build-optional-packages": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", - "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", - "optional": true - } - } - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nan": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", - "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==" - }, - "native-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz", - "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==", - "optional": true - }, - "neatequal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/neatequal/-/neatequal-1.0.0.tgz", - "integrity": "sha512-sVt5awO4a4w24QmAthdrCPiVRW3naB8FGLdyadin01BH+6BzNPEBwGrpwCczQvPlULS6uXTItTe1PJ5P0kYm7A==", - "requires": { - "varstream": "^0.3.2" - } - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "nested-error-stacks": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", - "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==" - }, - "netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==" - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==" - } - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" - }, - "node-gyp-build-optional-packages": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", - "integrity": "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==" - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "requires": { - "boolbase": "^1.0.0" - } - }, - "nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "ordered-binary": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.3.0.tgz", - "integrity": "sha512-knIeYepTI6BDAzGxqFEDGtI/iGqs57H32CInAIxEvAHG46vk1Di0CEpyc1A7iY39B1mfik3g3KLYwOTNnnMHLA==" - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==" - }, - "os-name": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", - "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==", - "requires": { - "osx-release": "^1.0.0", - "win-release": "^1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "osx-release": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", - "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==", - "requires": { - "minimist": "^1.1.0" - } - }, - "outlayer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", - "integrity": "sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==", - "requires": { - "ev-emitter": "^1.0.0", - "fizzy-ui-utils": "^2.0.0", - "get-size": "^2.0.2" - } - }, - "owl.carousel": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/owl.carousel/-/owl.carousel-2.3.4.tgz", - "integrity": "sha512-JaDss9+feAvEW8KZppPSpllfposEzQiW+Ytt/Xm5t/3CTJ7YVmkh6RkWixoA2yXk2boIwedYxOvrrppIGzru9A==", - "requires": { - "jquery": ">=1.8.3" - } - }, - "pac-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", - "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4", - "get-uri": "3", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "5", - "pac-resolver": "^5.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "5" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "pac-resolver": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz", - "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==", - "requires": { - "degenerator": "^3.0.2", - "ip": "^1.1.5", - "netmask": "^2.0.2" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parcel": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.7.0.tgz", - "integrity": "sha512-pRYwnivwtNP0tip8xYSo4zCB0XhLt7/gJzP1p8OovCqkmFjG9VG+GW9TcAKqMIo0ovEa9tT+/s6gY1Qy+BONGQ==", - "requires": { - "@parcel/config-default": "2.7.0", - "@parcel/core": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/reporter-cli": "2.7.0", - "@parcel/reporter-dev-server": "2.7.0", - "@parcel/utils": "2.7.0", - "chalk": "^4.1.0", - "commander": "^7.0.0", - "get-port": "^4.2.0", - "v8-compile-cache": "^2.0.0" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "get-port": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", - "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==" - } - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", - "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", - "requires": { - "entities": "^4.3.0" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "requires": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", - "requires": { - "through": "~2.3" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "optional": true - }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" - }, - "portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "requires": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "posthtml": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", - "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", - "requires": { - "posthtml-parser": "^0.11.0", - "posthtml-render": "^3.0.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - } - } - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" - }, - "htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "posthtml-parser": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", - "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", - "requires": { - "htmlparser2": "^7.1.1" - } - } - } - }, - "posthtml-parser": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", - "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", - "requires": { - "htmlparser2": "^7.1.1" - }, - "dependencies": { - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - } - } - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" - }, - "htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - } - } - }, - "posthtml-render": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", - "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", - "requires": { - "is-json": "^2.0.1" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" - }, - "prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", - "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", - "requires": { - "agent-base": "^6.0.0", - "debug": "4", - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "lru-cache": "^5.1.1", - "pac-proxy-agent": "^5.0.0", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^5.0.0" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "optional": true - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "puppeteer-core": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-1.15.0.tgz", - "integrity": "sha512-AH82x8Tx0/JkubeF6U12y8SuVB5vFgsw8lt/Ox5MhXaAktREFiotCTq324U2nPtJUnh2A8yJciDnzAmhbHidqQ==", - "requires": { - "debug": "^4.1.0", - "extract-zip": "^1.6.6", - "https-proxy-agent": "^2.2.1", - "mime": "^2.0.3", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^2.6.1", - "ws": "^6.1.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - }, - "qiniu": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/qiniu/-/qiniu-7.7.0.tgz", - "integrity": "sha512-p8wZHDXzqCVtlPIygqIzpO6P59e5KcNAOf85oi6O7K5M4xjnwoi6L3e0F8IXgd38nb2PzWOH3XUkSbNAYW0g7Q==", - "requires": { - "agentkeepalive": "^4.0.2", - "before": "^0.0.1", - "block-stream2": "^2.0.0", - "crc32": "^0.2.2", - "destroy": "^1.0.4", - "encodeurl": "^1.0.1", - "formstream": "^1.1.0", - "mime": "^2.4.4", - "mockdate": "^3.0.5", - "tunnel-agent": "^0.6.0", - "urllib": "^2.34.1" - }, - "dependencies": { - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - } - } - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" - }, - "react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - } - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "robots-parser": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-2.4.0.tgz", - "integrity": "sha512-oO8f2SI04dJk3pbj2KOMJ4G6QfPAgqcGmrYGmansIcpRewIPT2ljWEt5I+ip6EgiyaLo+RXkkUWw74M25HDkMA==" - }, - "rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sass": { - "version": "1.54.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.5.tgz", - "integrity": "sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==", - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" - }, - "select": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "simplecrawler": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/simplecrawler/-/simplecrawler-1.1.9.tgz", - "integrity": "sha512-IY5YmeJWvfc1zpy9so1p/EknCqNum3Y9tmnzuLWZqKEwbntGXPGvN0SOtr+XqT4BHjfek2C12g3Tg1yK7Hoh8g==", - "requires": { - "async": "^3.1.0", - "iconv-lite": "^0.5.0", - "robots-parser": "^2.1.1", - "urijs": "^1.19.1" - }, - "dependencies": { - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "iconv-lite": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", - "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, - "sitemap-generator": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/sitemap-generator/-/sitemap-generator-8.5.1.tgz", - "integrity": "sha512-k0IWBCFPU1bhNLOquJ07cHfHJNrRB/2adawR0jduSCcA7CuzxfHtfDzgvNDhH0Yv4HOVgte33M58Yun/dcHS3w==", - "requires": { - "async": "2.6.1", - "cheerio": "1.0.0-rc.2", - "cp-file": "6.0.0", - "crypto-random-string": "1.0.0", - "date-fns": "1.29.0", - "lodash": "4.17.20", - "mitt": "1.1.3", - "normalize-url": "3.3.0", - "simplecrawler": "1.1.9", - "url-parse": "1.4.7" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "^4.17.10" - } - }, - "cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha512-9LDHQy1jHc/eXMzPN6/oah9Qba4CjdKECC7YYEE/2zge/tsGwt19NQp5NFdfd5Lx6TZlyC5SXNQkG41P9r6XDg==", - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "requires": { - "@types/node": "*" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" - }, - "socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "dependencies": { - "ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==" - } - } - }, - "socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", - "requires": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string.fromcodepoint": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz", - "integrity": "sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==" - }, - "string.prototype.codepointat": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", - "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "svg-pathdata": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-1.0.4.tgz", - "integrity": "sha512-afGVCE1xFbmI/uV6XiToTwnHZZtSiW9u8EBxZqRE25pPGk2Z9eEvT5nhAPRUnvUWs9FqwjdJeElkqoWKeW3JGA==", - "requires": { - "readable-stream": "~2.0.4" - }, - "dependencies": { - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==" - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - } - } - }, - "svg2ttf": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/svg2ttf/-/svg2ttf-4.3.0.tgz", - "integrity": "sha512-LZ0B7zzHWLWbzLzwaKGHQvPOuxCXLReIb3LSxFSGUy1gMw2Utk6KGNbTmbmRL6Rk1qDSmTixnDrQgnXaL9n0CA==", - "requires": { - "argparse": "^1.0.6", - "cubic2quad": "^1.0.0", - "lodash": "^4.17.10", - "microbuffer": "^1.0.0", - "svgpath": "^2.1.5", - "xmldom": "~0.1.22" - } - }, - "svgicons2svgfont": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-5.0.2.tgz", - "integrity": "sha512-N9GG8atI7eKksJpLLDYXHzKcNy698FL+Bdu0sXgwURgVzNmeD35iSCnZhNuPMs4Ve2tg8vqHXI1ZNEWU6vhwjw==", - "requires": { - "commander": "^2.9.0", - "neatequal": "^1.0.0", - "readable-stream": "^2.0.4", - "sax": "^1.1.5", - "string.fromcodepoint": "^0.2.1", - "string.prototype.codepointat": "^0.2.0", - "svg-pathdata": "^1.0.4" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } - } - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - } - } - }, - "svgpath": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.5.0.tgz", - "integrity": "sha512-o/vohwqjUO9nDAh4rcjE3KaW/v//At8UJu2LJMybXidf5QLQLVA4bxH0//4YCsr+1H4Gw1Wi/Jc62ynzSBYidw==" - }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, - "temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "requires": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" - }, - "terser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", - "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } - } - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==" - }, - "tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "toastr": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", - "integrity": "sha512-LIy77F5n+sz4tefMmFOntcJ6HL0Fv3k1TDnNmFZ0bU/GcvIIfy6eG2v7zQmMiYgaalAiUv75ttFrPn5s0gyqlA==", - "requires": { - "jquery": ">=1.12.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "topojson-client": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", - "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", - "requires": { - "commander": "2" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "ttf2eot": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ttf2eot/-/ttf2eot-2.0.0.tgz", - "integrity": "sha512-U56aG2Ylw7psLOmakjemAzmpqVgeadwENg9oaDjaZG5NYX4WB6+7h74bNPcc+0BXsoU5A/XWiHabDXyzFOmsxQ==", - "requires": { - "argparse": "^1.0.6", - "microbuffer": "^1.0.0" - } - }, - "ttf2woff": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ttf2woff/-/ttf2woff-2.0.2.tgz", - "integrity": "sha512-X68badwBjAy/+itU49scLjXUL094up+rHuYk+YAOTTBYSUMOmLZ7VyhZJuqQESj1gnyLAC2/5V8Euv+mExmyPA==", - "requires": { - "argparse": "^1.0.6", - "microbuffer": "^1.0.0", - "pako": "^1.0.0" - } - }, - "ttf2woff2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/ttf2woff2/-/ttf2woff2-2.0.3.tgz", - "integrity": "sha512-HVI+ZVmIbHAxfmbxV/Ahjh20che2WUCs4xWIcCUaD/BLEof/ylYUjnc0DAhpYsAzEJy1kQwkOQD45RLgtWQHfw==", - "requires": { - "bindings": "^1.2.1", - "bufferstreams": "^1.1.0", - "nan": "^2.1.0", - "node-gyp": "^3.0.3" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "twemoji": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/twemoji/-/twemoji-13.1.1.tgz", - "integrity": "sha512-IIIoq+n1lk1M1+evBKZD3DO0ud02fDQ4ssbgAv8rp3YBWUeNmskjlisFUPPDacQ50XS3bhrd4Kq9Q2gqhxb0dg==", - "requires": { - "fs-extra": "^8.0.1", - "jsonfile": "^5.0.0", - "twemoji-parser": "13.1.0", - "universalify": "^0.1.2" - }, - "dependencies": { - "jsonfile": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-5.0.0.tgz", - "integrity": "sha512-NQRZ5CRo74MhMMC3/3r5g2k4fjodJ/wh8MxjFbCViWKFjxrnudWSY5vomh+23ZaXzAS7J3fBZIR2dV6WbmfM0w==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^0.1.2" - } - } - } - }, - "twemoji-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/twemoji-parser/-/twemoji-parser-13.1.0.tgz", - "integrity": "sha512-AQOzLJpYlpWMy8n+0ATyKKZzWlZBJN+G0C+5lhX7Ftc2PeEVdUU/7ns2Pn2vVje26AIZ/OHwFoUbdv6YYD/wGg==" - }, - "twitter-fetcher": { - "version": "18.0.4", - "resolved": "https://registry.npmjs.org/twitter-fetcher/-/twitter-fetcher-18.0.4.tgz", - "integrity": "sha512-p6HIJfzYLWKVT1rDGqq6wlbfCoZiRAWC6o6zkhxqkt7s7gNxW04xrCy8mDIjl6GHVGbdN+JQtSpVhs0Mp2PKfg==" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "uglify-js": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", - "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==", - "optional": true - }, - "underscore": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz", - "integrity": "sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==" - }, - "unescape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz", - "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", - "requires": { - "extend-shallow": "^2.0.1" - } - }, - "union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", - "requires": { - "qs": "^6.4.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "unorm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", - "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urijs": { - "version": "1.19.11", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", - "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" - }, - "url-join": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", - "integrity": "sha512-c2H1fIgpUdwFRIru9HFno5DT73Ok8hg5oOb5AT3ayIgvCRfxgs2jyt5Slw8kEB7j3QUr6yJmMPDT/odjk7jXow==" - }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "urllib": { - "version": "2.38.1", - "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.38.1.tgz", - "integrity": "sha512-1tvjdL74oT9aV4X+SIjE1BXyes5PbfhHKhK4IlhoKhKqk4nD5/lXE90v10WZ02kELWIPI4w7ADneEQ4i7dPjiQ==", - "requires": { - "any-promise": "^1.3.0", - "content-type": "^1.0.2", - "debug": "^2.6.9", - "default-user-agent": "^1.0.0", - "digest-header": "^0.0.1", - "ee-first": "~1.1.1", - "formstream": "^1.1.0", - "humanize-ms": "^1.2.0", - "iconv-lite": "^0.4.15", - "ip": "^1.1.5", - "proxy-agent": "^5.0.0", - "pump": "^3.0.0", - "qs": "^6.4.0", - "statuses": "^1.3.1", - "utility": "^1.16.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - } - } - }, - "userhome": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.0.tgz", - "integrity": "sha512-ayFKY3H+Pwfy4W98yPdtH1VqH4psDeyW8lYYFzfecR9d6hqLpqhecktvYR3SEEXt7vG0S1JEpciI3g94pMErig==" - }, - "uslug": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/uslug/-/uslug-1.0.4.tgz", - "integrity": "sha512-Jrbpp/NS3TvIGNjfJT1sn3/BCeykoxR8GbNYW5lF6fUscLkbXFwj1b7m4DvIkHm8k3Qr6Co68lbTmoZTMGk/ow==", - "requires": { - "unorm": ">= 1.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utility": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/utility/-/utility-1.17.0.tgz", - "integrity": "sha512-KdVkF9An/0239BJ4+dqOa7NPrPIOeQE9AGfx0XS16O9DBiHNHRJMoeU5nL6pRGAkgJOqdOu8R4gBRcXnAocJKw==", - "requires": { - "copy-to": "^2.0.1", - "escape-html": "^1.0.3", - "mkdirp": "^0.5.1", - "mz": "^2.7.0", - "unescape": "^1.0.1" - } - }, - "utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - }, - "varstream": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/varstream/-/varstream-0.3.2.tgz", - "integrity": "sha512-OpR3Usr9dGZZbDttlTxdviGdxiURI0prX68+DuaN/JfIDbK9ZOmREKM6PgmelsejMnhgjXmEEEgf+E4NbsSqMg==", - "requires": { - "readable-stream": "^1.0.33" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - } - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "vega-format": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.0.tgz", - "integrity": "sha512-6mgpeWw8yGdG0Zdi8aVkx5oUrpJGOpNxqazC2858RSDPvChM/jDFlgRMTYw52qk7cxU0L08ARp4BwmXaI75j0w==", - "requires": { - "d3-array": "^3.1.1", - "d3-format": "^3.1.0", - "d3-time-format": "^4.1.0", - "vega-time": "^2.0.3", - "vega-util": "^1.15.2" - } - }, - "vega-loader": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.0.tgz", - "integrity": "sha512-EkAyzbx0pCYxH3v3wghGVCaKINWxHfgbQ2pYDiYv0yo8e04S8Mv/IlRGTt6BAe7cLhrk1WZ4zh20QOppnGG05w==", - "requires": { - "d3-dsv": "^3.0.1", - "node-fetch": "^2.6.7", - "topojson-client": "^3.1.0", - "vega-format": "^1.1.0", - "vega-util": "^1.16.0" - } - }, - "vega-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.0.tgz", - "integrity": "sha512-Q9/l3S6Br1RPX5HZvyLD/cQ4K6K8DtpR09/1y7D66gxNorg2+HGzYZINH9nUvN3mxoXcBWg4cCUh3+JvmkDaEg==", - "requires": { - "d3-array": "^3.1.1", - "d3-time": "^3.0.0", - "vega-util": "^1.15.2" - } - }, - "vega-util": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.0.tgz", - "integrity": "sha512-HTaydZd9De3yf+8jH66zL4dXJ1d1p5OIFyoBzFiOli4IJbwkL1jrefCKz6AHDm1kYBzDJ0X4bN+CzZSCTvNk1w==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - } - } - }, - "vm2": { - "version": "3.9.18", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.18.tgz", - "integrity": "sha512-iM7PchOElv6Uv6Q+0Hq7dcgDtWWT6SizYqVcvol+1WQc+E9HlgTCnPozbQNSP3yDV9oXHQOEQu530w2q/BCVZg==", - "requires": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" - } - }, - "weak-lru-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", - "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==" - }, - "webfonts-generator": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/webfonts-generator/-/webfonts-generator-0.4.0.tgz", - "integrity": "sha512-2tz14d9lDYkNopbogp3cCEo0oQj6tHYo17v6nYlJQT57CwzQy/7Y6a1UzleNK9jSshez2qau6MHcHy/gbDwssQ==", - "requires": { - "handlebars": "^4.0.5", - "mkdirp": "^0.5.0", - "q": "^1.1.2", - "svg2ttf": "^4.0.0", - "svgicons2svgfont": "^5.0.0", - "ttf2eot": "^2.0.0", - "ttf2woff": "^2.0.1", - "ttf2woff2": "^2.0.3", - "underscore": "^1.7.0", - "url-join": "^1.1.0" - }, - "dependencies": { - "url-join": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", - "integrity": "sha512-zz1wZk4Lb5PTVwZ3HWDmm8XnlPvmOof6/fjdDPA5yBrUcbtV64U6bV832Zf1BtU2WkBBWaUT46wCs+l0HP5nhg==" - } - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "win-release": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", - "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", - "requires": { - "semver": "^5.0.1" - } - }, - "word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==" - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "wow.js": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/wow.js/-/wow.js-1.2.2.tgz", - "integrity": "sha512-YTW9eiZimHCJDWofsiz2507txaPteUiQD461I/D8533AiRAn3+Y68/1LDuQ3OTgPjagGZLPYKrpoSgjzeQrO6A==" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" - }, - "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==" - }, - "xxhash-wasm": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", - "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, - "yamljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", - "requires": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - } - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - } - } -} diff --git a/web/package.json b/web/package.json deleted file mode 100644 index b7f790b58b..0000000000 --- a/web/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "evm-semantics", - "version": "1.0.1", - "description": "--- permalink: README.html copyright: Copyright (c) 2010-2020 Runtime Verification Team. All Rights Reserved. ---", - "main": "index.html", - "scripts": { - "build": "cd ./k-web-theme && npm install && npm run build && cd - && npm install ./k-web-theme && cp -r ./k-web-theme/public_content/. ./public_content/ && node build-html.js", - "build-sitemap": "node sitemap/build-sitemap.js https://jellopaper.org/", - "serve": "http-server public_content" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/kframework/evm-semantics.git" - }, - "author": "EVM Semantics | Runtime Verification", - "license": "UNLICENSED", - "devDependencies": { - "http-server": "^0.12.3" - }, - "dependencies": { - "k-web-theme": "file:k-web-theme" - }, - "bugs": { - "url": "https://github.com/runtimeverification/evm-semantics/issues" - }, - "homepage": "https://github.com/runtimeverification/evm-semantics/#readme" -} diff --git a/web/public_content/.gitignore b/web/public_content/.gitignore deleted file mode 100644 index e037eafb20..0000000000 --- a/web/public_content/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -assets/css -assets/js -assets/sass -*.html -tutorial -sitemap.xml \ No newline at end of file diff --git a/web/sitemap/build-sitemap.js b/web/sitemap/build-sitemap.js deleted file mode 100755 index e4dff8e4c0..0000000000 --- a/web/sitemap/build-sitemap.js +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env node -const { buildSitemap } = require("k-web-theme"); -const path = require("path"); - -const websiteOrigin = process.argv[2]; -buildSitemap({ - websiteOrigin, - websiteDirectory: path.join(__dirname, "../public_content/"), - sitemapPath: path.join(__dirname, "../public_content/sitemap.xml"), - ignore: (url) => url.endsWith(".html"), -}); diff --git a/web/static_content/html/404.html b/web/static_content/html/404.html deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/web/static_content/html/500.html b/web/static_content/html/500.html deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/web/static_content/html/include/footer.html b/web/static_content/html/include/footer.html deleted file mode 100644 index 7653547e8c..0000000000 --- a/web/static_content/html/include/footer.html +++ /dev/null @@ -1 +0,0 @@ -{{$WEBSITE_FOOTER}} \ No newline at end of file diff --git a/web/static_content/html/include/ga.html b/web/static_content/html/include/ga.html deleted file mode 100644 index c902440fcd..0000000000 --- a/web/static_content/html/include/ga.html +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/web/static_content/html/include/head.html b/web/static_content/html/include/head.html deleted file mode 100644 index 34817165aa..0000000000 --- a/web/static_content/html/include/head.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - -KEVM: Semantics of EVM in K | Runtime Verification, Inc. - - - - - - - - - - - - - - - diff --git a/web/static_content/html/include/header.html b/web/static_content/html/include/header.html deleted file mode 100644 index d133e6c6d9..0000000000 --- a/web/static_content/html/include/header.html +++ /dev/null @@ -1,25 +0,0 @@ - diff --git a/web/static_content/html/include/sidebar.html b/web/static_content/html/include/sidebar.html deleted file mode 100644 index a32394a360..0000000000 --- a/web/static_content/html/include/sidebar.html +++ /dev/null @@ -1,29 +0,0 @@ -
- - -
diff --git a/web/static_content/html/page_template.html b/web/static_content/html/page_template.html deleted file mode 100644 index 6104e4bd52..0000000000 --- a/web/static_content/html/page_template.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - {{include/head.html}} - - - - {{include/header.html}} - -
-
- {{include/sidebar.html}} -
-
{{$MARKDOWN_HTML}}
-
- - -
- {{$PAGE_TOC_HTML}} -
-
- -
-
- {{include/footer.html}} - - - {{include/ga.html}} - -